今年已經(jīng)是我成為軟件工程師的第5個(gè)年頭了。關(guān)于下面這些事情,我常常想,要是我剛?cè)脒@一行時(shí)就知道的話那該多好,能少走不少?gòu)澛,取得的成?jī)也肯定比現(xiàn)在高。唉,往事不可追,所以在這里我想分享給大家,尤其是剛進(jìn)入這一行的新手,請(qǐng)仔細(xì)考慮自己是否明白以下這八件事情。
1.良好的溝通能力。
工程管理是一個(gè)團(tuán)隊(duì)活動(dòng),哪怕有時(shí)候這個(gè)團(tuán)隊(duì)只有你一個(gè)人。由于每時(shí)每刻都有那么多事情需要相互了解,所以溝通就成為了最大的問題。90%的工程管理指的就是溝通。比如,我們得向人解釋bug是什么?如何有效診斷?如何向大家完整地表述自己的復(fù)雜想法?溝通是項(xiàng)目成功最關(guān)鍵的因素。無(wú)效的溝通只會(huì)導(dǎo)致大量時(shí)間和精力的浪費(fèi)。
2. 計(jì)算機(jī)科學(xué)的基礎(chǔ)。
要想作為成為一名優(yōu)秀的程序員,計(jì)算機(jī)科學(xué)的基礎(chǔ)是必不可少的,但是,老實(shí)說(shuō),計(jì)算機(jī)科學(xué)和計(jì)算機(jī)工程真是兩碼事。不過(guò)要想成為優(yōu)秀的工程師,就得有這個(gè)好奇心喜歡專研計(jì)算機(jī)的發(fā)展趨勢(shì)和計(jì)算機(jī)的工作原理,包括深層次地了解新趨勢(shì)可能存在的誤區(qū),以及一些替代性的解決方案,這樣才有和其他工程師交流的資本。算法,除非是在面試中,其他時(shí)候用處不大。我的意思是,大多數(shù)情況下有類庫(kù)就足夠了。不過(guò)這并不意味著可以完全無(wú)視數(shù)據(jù)結(jié)構(gòu)和算法。此外,推理代碼和優(yōu)化仍然很重要,尤其是在規(guī);臅r(shí)候。
3.學(xué)會(huì)閱讀代碼。
寫代碼的重要性不用我說(shuō)大家都知道,但是關(guān)于閱讀代碼這回事恐怕沒幾個(gè)人聽說(shuō)過(guò)。這可能是最值得掌握的技能之一了。關(guān)于這一條,到目前為止,我也在努力達(dá)到目標(biāo)的過(guò)程中。話說(shuō),要是能有透過(guò)復(fù)雜現(xiàn)象看清事物本質(zhì)的功力,那就離成為一個(gè)優(yōu)秀工程師不遠(yuǎn)了。
4.學(xué)習(xí)UNIX和Linux。
這倆家伙幾乎無(wú)處不在,所以很值得學(xué)習(xí)。它們能讓我們通過(guò)命令行快速操縱計(jì)算機(jī)。如果有需要還可以安裝Linux軟件包和設(shè)置服務(wù)器。還能通過(guò)vi快速編輯(沒錯(cuò),就是vi。我本人就是Emacs用戶)。還有一點(diǎn)很重要的是,UNIX實(shí)用程序能顯著節(jié)省時(shí)間。此外我們還需要知道如何使用sed、grep、find、pipes,以及使用基本的bash/zsh寫代碼。
5.了解文本編輯器。
軟件工程師都是玩轉(zhuǎn)文本的高手。即便是現(xiàn)在已經(jīng)被當(dāng)做老古董的Emacs和vi,仍然是工程師需要學(xué)習(xí)的編輯器。兩者至少得精通一個(gè),因?yàn)樗鼈兊睦砟畈煌,而了解其中之一不但能讓你代碼寫得更快,而且還不會(huì)被任何一種特定的環(huán)境所禁錮。不要僅僅是使用編輯器,要讓它乖乖降服于你,自動(dòng)化,符合自己的按鍵習(xí)慣,寫出解決問題的腳本。
6.自動(dòng)化思維。
因?yàn)閺?fù)制/粘貼就是一種自動(dòng)化模式,所以我們完全可以編寫腳本來(lái)實(shí)現(xiàn)。而隨機(jī)寫入腳本會(huì)讓編程更為有趣。也許只用30分鐘就能搞定一天枯燥乏味的工作。自動(dòng)化能縮減過(guò)程,也能讓我們學(xué)到不少新的東西。
7.了解版本控制。
我喜歡干什么都用git?上,這么棒的點(diǎn)子,我竟然在學(xué)校的時(shí)候根本不知道,真是情何以堪。版本控制能讓我們可以放心大膽地折騰代碼,因?yàn)橐怯惺裁葱胁煌ǖ牡胤,恢?fù)原狀或者取消鍵入就可以了。It’s so easy!
8.自己搞個(gè)小項(xiàng)目。
這非常鍛煉人,哪怕有時(shí)候會(huì)覺得筋疲力盡,恨不得撒手不干。由于我們的產(chǎn)品是抽象的,不像造大橋那樣能看到真真切切的成品,所以我們只能不停地編碼,沒勁透了。想不想專心致志搞一個(gè)自己中意的項(xiàng)目,像對(duì)待自己的孩子那樣,盡自己的全力做到最好,在這個(gè)過(guò)程中,還能學(xué)到新知識(shí),學(xué)會(huì)運(yùn)用工具,而在工作中是不可能有這樣的機(jī)會(huì)的?答案當(dāng)然是YES了。
我自己也不是每次都能做到上面每一點(diǎn)的,但是我依然希望,在我剛剛跨入這個(gè)領(lǐng)域時(shí),能有人將這些肺腑之言告訴我,我會(huì)真心不勝感激。
關(guān)于我們
產(chǎn)品與平臺(tái)
企業(yè)信息咨詢