很少有人會真正為他們的第一份正式工作做好100%的準備。拿到計算機科學學位並不比高職大專出來的在寫代碼上有特別大的優勢。而且我特別訝異,很多應屆畢業生甚至是一些有經驗的程序員,竟然還在記事本或者文本文件中寫代碼,一點也不會版本控制。
DevStore發現出來一個非常常見的現象:你讀了好多年的書,然後帶著一張新鮮出爐的大學文憑走進了社會,找到了人生的第一份正式工作,但是很快,那些不成文的規矩,日益複雜難搞的活計,以及周圍沒有一個人會提醒你等等,像大錘一樣捶得你兩眼發昏,編程這份工作也不例外。作為全球首家開發者服務的DevStore給大家分享作為菜鳥程序員你必須瞭解的十項技能,花點時間看完這篇文章,掌握這10個基本技能,絕對讓你以後的工作受益匪淺。
版本控制系統
這也許是設計計算機科學課程的時候出現的最大漏洞,我為此真心感到遺憾。高等教育機構教育我們如何創建程序的源代碼,卻沒有關於如何管理這些代碼的知識。每一個程序員都應該懂得如何利用 Git 或 Subversion 有效地創建 repository(倉庫),編輯與提交代碼,進行分支與合併,瞭解項目工作流。懂得版本控制系統還能讓你在今後的工作中,學到的更多。
如何寫代碼
作為一個程序員,工作內容不僅僅是寫一種編程語言那麼簡單,我們還需要為我們的項目編寫發佈說明,為版本控制系統寫提交信息,還要為系統中發現的bug寫標籤。所有這些工作內容都離不開有效的英語溝通——這也是一種必須的技能,但是可惜的是,在大學的計算機科學課程中卻很少強調。
正則表達式
正則表達式是一種用來操作和檢驗字符串數據的強大工具,每個現代化的程序員都應該學會如何使用。每一種編程語言都支持正則表達式,有與之相匹配的標準庫。如果代碼需要校驗某字符串是否含有5個字符、1個破折號和1個數字,你應該馬上就能寫出 /^[A-Z]{5}-\d$/。
庫的使用
在2014年,我們已經不需要用正則表達式去URL中提取主機名。每一種現代化的編程語言裡都內含常用功能的標準庫,或者是能更容易使用的標準庫。程序員要做的就是,更好的掌握那些已經編寫好的、經過測試和調試完畢的代碼,因為這絕對比程序員自己再去想代碼要來的更快更好、質量更高。
SQL
前不久有個人在碰面的時候對我說,“我現在知道的所有SQL都是在我工作中學會的。為什麼以前在學校數據庫這門課是選修的?要是我上過這門課就好了!?”在平面文件中存儲數據的時間已經過去。數據庫成為了流入流出數據的新寵,而SQL是一種用於檢索數據庫的語言。SQL是一種聲明式語言,而不是一種程序語言,所以如果你想學會如何使用SQL的話,首先需要學習解決問題的新方法。總的說來,每一個程序員都應該瞭解數據庫標準化基礎,能夠執行基本的SELECT(及 INNER、OUTER JOIN)、INSERT、UPDATE 和 DELETE語句。
工具的使用:IDE、編輯器以及CL工具
如果只有唯一的一把鋼鋸,別的啥都不會,那麼即便是魯班也永遠無法出師。但是令人奇怪到無法理解的是,現在的學校出來的CS畢業生竟然只知道在記事本和文本文件中寫代碼,真是可笑可嘆!上述編程工具的合理運用,能幫助我們操作源代碼和其它數據,讓我們的編程生涯過得更加輕鬆自在。故而,每一個程序員都應該知道Unix命令行、shell 腳本、find、grep 以及 sed的使用。
調試
每個程序員都應該能使用交互式調試器或者Print語句來調試代碼。能逐句追查問題的能力非常重要,但是遺憾的是,學校教育給學生的方式是自己憑感覺去找。
防禦性編程
即便是特別牛逼的程序員都是很容易犯錯的,沒有什麼事情是我們絕對能掌控的,總會有各種意想不到的事情發生。防禦性編程就是基於這個理念而來的。如果程序是ok的,那我們就沒有必要檢查文件打開成功與否,不用檢查客戶ID是否為合法數字,不用測試代碼是否運行正確。程序員最好能有效利用編譯器的警告功能,這樣能減輕不少編程工作,避免問題的產生和積累。還有一點,每個程序員最好也能夠明白PHP程序為什麼要以error_reporting(E_ALL)開頭,而Perl程序則是strict; use warnings;開頭的。
團隊合作
很少有編程工作是我們完全可以獨立完成的,而如果有人非要“強自己所難”,那麼我只能說,這大概是“猴子派來的逗比”吧,除了攪得一團亂,我看不出有別的作用。由於需要團隊合作,我們寫出來的代碼必須要能和其他人的代碼進行交互,或者經常和別人的代碼聯合在一起。無論多有才能的程序員,如果不能和其他人團結協作,那麼這個傢伙只會是團隊中的負能量,拖大家的後腿。
好好利用現有的代碼
在學校的時候,我記得,每個班級會分配到一個新穎、未曾開發的項目。但是在現實中的情況卻不是這樣的。剛入職的新人做的第一件事情就是在bug跟蹤系統中修復一些bug。然後就是在當前的代碼庫的基礎上為現有的系統增加一些小功能。如果你足夠幸運的話,幾個月以後就可以設計新代碼了。