在互聯(lián)網(wǎng)公司,后臺的可擴(kuò)展性,高可用性,靈活性,安全性是公司的一個(gè)重要成功因素。對于后臺程序員的綜合素質(zhì)要求自然就要比客戶端開發(fā)人員更高。
基本能力
- 代碼書寫規(guī)范,有代碼潔癖[1]。
- 永遠(yuǎn)相信是人寫的代碼就會有bug,測試充分。
- 對于自身的代碼要求高,重構(gòu)的意愿強(qiáng)烈。
- 至少對一種程序語言的精通。
- 這里的精通并不是用了半年就可以在簡歷上書寫對某某語言的"精通",而是徹底了解語言的所有特性,善于利用程序語言帶來的便利,規(guī)避程序語言的不足。
- 對基于語言特性的設(shè)計(jì)模式順手拈來,比如 Java的設(shè)計(jì)模式[2]。
- 善用變量名和過程名表示注釋,名詞前后保持一致,不會剛用
people表示用戶,之后又用user表示。 - 至少掌握一門外語,閱讀能力過關(guān),閱讀原版文檔和幫助文件沒有障礙。
- 熟悉計(jì)算機(jī)組成原理,緩存,內(nèi)存,硬盤,網(wǎng)絡(luò)的訪問延遲數(shù)量級熟知在心。
- 熟悉操作系統(tǒng)原理,對于并發(fā),多線程的了解,并不僅限于程序語言的實(shí)現(xiàn)層面
- 靈活使用至少1種腳本語言,比如shell,python
- 能承受壓力下工作,對于半夜解決問題和連續(xù)加班無怨言。
進(jìn)階能力
- 對于書寫的代碼消耗空間和時(shí)間有精準(zhǔn)的認(rèn)識和苛求
- 實(shí)現(xiàn)問題所寫的代碼負(fù)載能力是當(dāng)前系統(tǒng)規(guī)模的10倍以上,而不是只求簡單解決問題
- 對當(dāng)前系統(tǒng)要求高,不斷尋找當(dāng)前系統(tǒng)中的弊病并能動(dòng)手解決
- 可以迅速找到次優(yōu)解決方案和最佳解決方案解決問題,能根據(jù)不同的場景進(jìn)行靈活選擇
- 求知旺盛,不斷挑戰(zhàn)自己的技能實(shí)現(xiàn),以頂級程序員的能力要求自己
- 對于安全性嗅覺敏銳
- 善于總結(jié),經(jīng)常維護(hù)自己的技術(shù)博客
- 數(shù)學(xué)能力強(qiáng),喜歡研究算法[3]
高級能力
- 瘋狂的喜愛編程而不是視其為謀生手段
- 在多個(gè)開源社區(qū)貢獻(xiàn)代碼
- 白帽子黑客,擅長攻擊和防范
- 經(jīng)常有大神般的突出行為,比如可用1天的代碼實(shí)現(xiàn)其它人1周的coding工作量
總結(jié)
認(rèn)真你就贏了