如果你已經有一段時間的編程經驗,或者正准備學習編程,那么可能會考慮的是:怎樣才能成為一名優秀的程序員?計算機專業的畢業生如何為軟件開發和編程職業生涯做准備?職場對於初級開發人員有哪些期望?這是臨近畢業或初入職場的新手程序員們密切關注的問題。
以下十項技能並不是必須,但它為程序員應該知道的事情提供了一個很好的起點,供新手程序員參考。這都是作為程序員的基本技能,將長期伴隨你的程序員職業生涯。如果你的目標是從事軟件開發和編程工作,那么這些都是保持競爭力而可以學習和提高的東西。
數據結構和算法
如果想成為一名合格的程序員,那么必須了解掌握數據結構和算法。這是任何編程工作面試的重要主題之一,如果不知道基本的數據結構(例如數組、鏈表、映射、集合),就不可能編寫真實世界的應用程序。數據結構和算法是最能體現程序員基本功的方面,不管計算機專業還是培訓課程,數據結構和算法都是首先教授的內容。
已經參加工作但數據結構和算法知識欠佳的同學,花點時間學一學,不要只是滿足於學會什么什么工具和框架,基礎知識有百益而無一害。
源代碼管理
源代碼管理是用來存儲代碼的,程序員必須了解Git和SVN等版本控制工具。源代碼管理可以降低對具體人員的依賴,有利於代碼審查,提升團隊整體水平。
從大的社會發展趨勢來說,分布式是大趨勢,Git 正好適應了這個趨勢,之前的主流代碼管理方案比如 CVS,SVN 都是集中式的。由於分布式的特點,造就了更高的靈活性,可以適應更多的場景。所以Git一定程度上簡化了市場,對於初學者來說,GitHub終極版:MasterGit和GitHub是一個很好的開始,也需要熟練掌握諸如分支和合並等高級版本控制概念以及使用命令行和GUI的工具。
文本編輯器
作為程序員工作時,沒有一天不使用文本編輯器。即使對於非程序員和任何與計算機打交道的人來說,它也是必不可少的工具之一。
一般主要是在Windows上使用NotePad,在Linux中使用VIM,但是在高級編輯器方面有很多選擇,比如Sublime和NotePad++,后者提供類似IDE的功能。不妨花點時間學習最喜歡的編輯器和鍵盤快捷鍵,了解一些提高效率的技巧。
IDE
對於任何程序員來說,現代IDE都是非常重要的工具。對於C、C++和C語言程序員,選擇非常明確:Visual Studio。對於Python開發人員來說,Jupiter Notebook每天都在變得越來越好。對於Java程序員來說,有三種主要的IDE可供選擇:Eclipse、NetBeans和IntelliJ。對於用“世界上最好的語言”PHP的程序員,PHPStorm、Sublime Text 都是不錯的選擇。
數據庫和SQL
SQL允許用戶每次訪問一大批的數據。通過一條語句,SQL命令就能夠檢索或者更新多個表中的數千條記錄。這就避免了很多的復雜性。當想要處理每一條記錄時,計算機程序不再需要按照特定的順序一次讀取一條記錄。過去需要數百行程序代碼才能完成的任務,現在只需要幾行代碼就可以完成。SQL是經典之作,數據庫無所不在,程序員應該熟悉一些基本的數據庫概念,如規范化和表設計以及SQL。
關鍵是應該熟悉數據庫,知道如何插入/更新/刪除數據,以及如何編寫SQL查詢來檢索數據,對諸如連接聚合函數之類的高級概念的了解也將很有意義。
Unix或Linux
與SQL一樣,UNIX也經受住了時間的考驗,已經存在了30多年。由於大多數程序員在某個時候都必須在UNIX機器上工作,因此對Linx命令行的良好了解是很有幫助的。
它可以讓程序員以更高的效率工作,可以搜索文件,通過檢查系統的CPU和內存使用情況來了解系統的狀況,並執行基本任務和高級任務。GitHub上有一份入門&進階指南,名字叫“命令行的藝術”,在GitHub收獲了5萬標星,這份資源不僅能幫助剛接觸命令行的新手,對有經驗的人也大有裨益。傳送門在此:https://github.com/jlevy/the-art-of-command-line/blob/master/README-zh.md
Excel
Excel是程序員、軟件開發人員、項目經理、交易者和商務人員的最佳工具之一。它不僅僅是電子表格軟件,還提供了許多有用的特性和功能來執行復雜的數據分析。
程序員可以使用Excel來跟蹤進度,協調數據,數據分析,數據質量檢查和項目規划。這就是為什么敦促每個程序員深入學習Excel的原因。它不只有復制和粘貼數據,還應該一些基本的功能,比如搜索、排序、過濾和VLOOKUP來比較數據。
編程語言
作為程序員,必須深入編程語言:C++、Java、PHP、Python、JavaScript……根據興趣愛好和具體情況進行選擇。
PHP是一門簡單的后端技術編程語言,它與HTML關系是最緊密的,當學習HTML之后再來學習PHP你會發現很快入手,PHP最讓新生喜愛的是可以直接嵌入HTML運行,所以沒有考慮很多問題,是選擇后台編程語言的首選。
網絡基礎
今天的世界是互聯的世界,無論走到哪里,計算機網絡都是無處不在的,從家里開始,在許多設備上使用Wi-Fi,到使用局域網(LAN)到萬物互聯的學校、公司和商場。
程序員編寫的大多數應用程序也不是獨立的,而是客戶端服務器類型的應用程序,在這種應用程序中,請求將通過網絡傳遞到服務器,客戶將從世界任何地方訪問該應用程序。所以程序員必須了解網絡基礎知識,才能更好地理解、開發和支持自己的應用程序。
腳本語言
前面已經說了編程語言,那同一種編程語言不能用作腳本語言嗎?
當然,有些語言既適合面向對象編程,也適合編寫腳本,比如Python。但如果恰巧學習的是C/C++或Java,那么就不能像Python或Perl開發人員那樣快速地完成一些事情。
腳本語言使得創建工具和腳本以解決編程世界中的常見問題很容易,如果對Python這樣的腳本語言有很好的掌握,那么就可以輕松地實現日常工作的自動化。
以上的十條技能涵蓋了每位程序員初入行業所需的必備技能,希望能為閱讀到這篇文章的每一位程序員提供一參考,以及進行職業規划的新思路。也歡迎行業前輩們分享自己的經驗、踩過的坑,為新手程序員保駕護航。
