新入行程序員應(yīng)該知道的十個(gè)秘密
初出茅廬的你帶著仍殘留墨香的畢業(yè)證書(shū)踏上工作崗位,馬上就被書(shū)上沒(méi)寫(xiě)的規(guī)則和各種繁雜的日常事務(wù)來(lái)了個(gè)下馬威。這樣的故事實(shí)在是司空見(jiàn)慣,編程工作也不例外。
沒(méi)有幾個(gè)學(xué)生能 100% 為自己的***份真正的工作做好準(zhǔn)備。如果你不想成為其中之一,請(qǐng)學(xué)學(xué)以下這 10 項(xiàng)無(wú)需手把手指導(dǎo)就能學(xué)會(huì)的基本技能:
1、版本控制系統(tǒng)(VCS)
VCS 也許是計(jì)算機(jī)課程***的疏漏。這些課程光記得教如何寫(xiě)代碼,但卻往往忘記教學(xué)生如何去管理代碼。每一個(gè)程序員都應(yīng)該懂得利用 Git 或 Subversion 有效地創(chuàng)建 repository(倉(cāng)庫(kù)),編輯與提交代碼,進(jìn)行分支與合并,了解項(xiàng)目工作流。
2、學(xué)會(huì)寫(xiě)作
身為程序員要寫(xiě)的不只有代碼。你還要寫(xiě)項(xiàng)目的發(fā)布說(shuō)明,給版本控制寫(xiě)提交消息,在系統(tǒng)里面寫(xiě)漏洞報(bào)告。這些和許多地方都需要清晰有效的文字交流—但這個(gè)技能計(jì)算機(jī)科學(xué)卻很少?gòu)?qiáng)調(diào)。
3、正則表達(dá)式
正則表達(dá)式本身就是一門(mén)語(yǔ)言,每一個(gè)現(xiàn)代程序員都要擅長(zhǎng)。每一門(mén)現(xiàn)代語(yǔ)言都支持正則表達(dá)式或者有相關(guān)標(biāo)準(zhǔn)庫(kù)。如果代碼需要校驗(yàn)?zāi)匙址欠窈?5 個(gè)字符、1 個(gè)破折號(hào)和 1 個(gè)數(shù)字,你應(yīng)該馬上就能寫(xiě)出 /^[A-Z]{5}-\d$/。
4、庫(kù)的使用
現(xiàn)在已經(jīng)是 2014 年,所以沒(méi)人需要用正則表達(dá)式從 URL 析取主機(jī)名了。因?yàn)槊恳婚T(mén)現(xiàn)代編程語(yǔ)言都有執(zhí)行常用功能的標(biāo)準(zhǔn)庫(kù)。
程序員需要明白,那些經(jīng)過(guò)開(kāi)發(fā)、測(cè)試和調(diào)試的代碼通常要比自己重新寫(xiě)的代碼更好。更重要的是,無(wú)需編寫(xiě)的代碼實(shí)現(xiàn)起來(lái)要快得多。
5、SQL
很多人的 SQL 都是在工作中學(xué)會(huì)的。數(shù)據(jù)庫(kù)怎么會(huì)是選修課呢?有不用數(shù)據(jù)庫(kù)的嗎?
把 數(shù)據(jù)存進(jìn)平面文件的時(shí)代已經(jīng)結(jié)束了。一切東西都要進(jìn)出數(shù)據(jù)庫(kù),而 SQL 則是存取數(shù)據(jù)的語(yǔ)言。這是一門(mén)說(shuō)明性語(yǔ)言,不是程序語(yǔ)言,所以用它來(lái)解決問(wèn)題時(shí)需要新的思考方式。每一個(gè)程序員都應(yīng)該了解數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)化基礎(chǔ),能夠執(zhí)行 SELECT(及 INNER、OUTER JOIN)、INSERT、UPDATE 和 DELETE。
6、會(huì)用IDE、編輯器及CLI工具
只懂用鋸子的木匠永遠(yuǎn)也無(wú)法出師,所以計(jì)算機(jī)專(zhuān)業(yè)畢業(yè)的人只懂 Notepad 或 pico 令人驚詫。編程工具幫助操縱代碼及其他數(shù)據(jù),令程序員生活變得容易。所以每一個(gè)程序員都應(yīng)該知道命令行、shell 腳本、find、grep 及 sed 的使用。
7、調(diào)試
每一個(gè)程序員都應(yīng)該知道利用交互式調(diào)試器或在代碼中點(diǎn)綴一些輸出語(yǔ)句來(lái)調(diào)試程序。通過(guò)逐步求精來(lái)跟蹤問(wèn)題的能力實(shí)在是太重要了。
8、防錯(cuò)性編程
錯(cuò)誤總是難免的,哪怕是明星程序員也不例外。失控是世界的常態(tài),出錯(cuò)毫不奇怪。防錯(cuò)性編程正是理解了這個(gè)事實(shí)。如果東西不會(huì)不出錯(cuò),我們就不會(huì)檢查文件打開(kāi)成功與否,不會(huì)檢查客戶(hù) ID 是否合法數(shù)字,不用測(cè)試代碼是否允許正確。
程序員需要知道,編譯器告警是有用的工具,可讓我們生活得更舒適,而不是要避而遠(yuǎn)之的麻煩事。每一個(gè)程序員都應(yīng)該知道為什么每一個(gè) PHP 程序都要這樣開(kāi)頭:
set_error_reporting(E_ALL)
每一個(gè) Perl 程序都要寫(xiě)上這些語(yǔ)句:
use strict; use warnings;
9、團(tuán)隊(duì)協(xié)作
很少編程工作會(huì)讓你自己一個(gè)人完成,如果你經(jīng)常這么做,智力會(huì)受損,表現(xiàn)會(huì)變?nèi)?。你的代碼必須與別人的交互或者混合。再有才的程序員,如果無(wú)法與別人協(xié)作,都會(huì)給項(xiàng)目造成負(fù)面影響,并迅速成為組織的負(fù)擔(dān)。
10、利用現(xiàn)有代碼
在學(xué)校的時(shí)候,每一次作業(yè)都是一個(gè)新項(xiàng)目。但現(xiàn)實(shí)世界不是這樣的。對(duì)于剛工作的人來(lái)說(shuō),所接到的***項(xiàng)任務(wù)往往是修改代碼漏洞。然后,再在現(xiàn)有代碼庫(kù)的基礎(chǔ)上為現(xiàn)有系統(tǒng)增加一個(gè)小功能。設(shè)計(jì)新代碼那是幾個(gè)月后的事情,如果幸運(yùn)的話(huà)。