初出茅廬的你帶着仍殘留墨香的畢業證書踏上工做崗位,立刻就被書上沒寫的規則和各類繁雜的平常事務來了個下馬威。這樣的故事實在是司空見慣,編程工做也不例外。 程序員
沒有幾個學生能 100% 爲本身的第一份真正的工做作好準備。若是你不想成爲其中之一,請學學如下這 10 項無需手把手指導就能學會的基本技能: 正則表達式
一、版本控制系統(VCS) shell
VCS 也許是計算機課程最大的疏漏。這些課程光記得教如何寫代碼,但卻每每忘記教學生如何去管理代碼。每個程序員都應該懂得利用 Git 或 Subversion 有效地建立 repository(倉庫),編輯與提交代碼,進行分支與合併,瞭解項目工做流。 數據庫
二、學會寫做 編程
身爲程序員要寫的不僅有代碼。你還要寫項目的發佈說明,給版本控制寫提交消息,在系統裏面寫漏洞報告。這些和許多地方都須要清晰有效的文字交流—但這個技能計算機科學卻不多強調。 編程語言
三、正則表達式 編輯器
正則表達式自己就是一門語言,每個現代程序員都要擅長。每一門現代語言都支持正則表達式或者有相關標準庫。若是代碼須要校驗某字符串是否含有 5 個字符、1 個破折號和 1 個數字,你應該立刻就能寫出 /^[A-Z]{5}-\d$/。 工具
四、庫的使用 測試
如今已是 2014 年,因此沒人須要用正則表達式從 URL 析取主機名了。由於每一門現代編程語言都有執行經常使用功能的標準庫。 命令行
程序員須要明白,那些通過開發、測試和調試的代碼一般要比本身從新寫的代碼更好。更重要的是,無需編寫的代碼實現起來要快得多。
五、SQL
不少人的 SQL 都是在工做中學會的。數據庫怎麼會是選修課呢?有不用數據庫的嗎?
把 數據存進平面文件的時代已經結束了。一切東西都要進出數據庫,而 SQL 則是存取數據的語言。這是一門說明性語言,不是程序語言,因此用它來解決問題時須要新的思考方式。每個程序員都應該瞭解數據庫標準化基礎,可以執行 SELECT(及 INNER、OUTER JOIN)、INSERT、UPDATE 和 DELETE。
六、會用IDE、編輯器及CLI工具
只懂用鋸子的木匠永遠也沒法出師,因此計算機專業畢業的人只懂 Notepad 或 pico 使人驚詫。編程工具幫助操縱代碼及其餘數據,令程序員生活變得容易。因此每個程序員都應該知道命令行、shell 腳本、find、grep 及 sed 的使用。
七、調試
每個程序員都應該知道利用交互式調試器或在代碼中點綴一些輸出語句來調試程序。經過逐步求精來跟蹤問題的能力實在是過重要了。
八、防錯性編程
錯誤老是不免的,哪怕是明星程序員也不例外。失控是世界的常態,出錯絕不奇怪。防錯性編程正是理解了這個事實。若是東西不會不出錯,咱們就不會檢查文件打開成功與否,不會檢查客戶 ID 是否合法數字,不用測試代碼是否容許正確。
程序員須要知道,編譯器告警是有用的工具,可以讓咱們生活得更溫馨,而不是要避而遠之的麻煩事。每個程序員都應該知道爲何每個 PHP 程序都要這樣開頭:
set_error_reporting(E_ALL)
每個 Perl 程序都要寫上這些語句:
use strict; use warnings;
九、團隊協做
不多編程工做會讓你本身一我的完成,若是你常常這麼作,智力會受損,表現會變弱。你的代碼必須與別人的交互或者混合。再有才的程序員,若是沒法與別人協做,都會給項目形成負面影響,並迅速成爲組織的負擔。
十、利用現有代碼
在學校的時候,每一次做業都是一個新項目。但現實世界不是這樣的。對於剛工做的人來講,所接到的第一項任務每每是修改代碼漏洞。而後,再在現有代碼庫的基礎上爲現有系統增長一個小功能。設計新代碼那是幾個月後的事情,若是幸運的話。