開發(fā)工程師技能提升規(guī)劃

引言:

技術(shù)人是一門需要不斷學(xué)習(xí)、不斷成長的人生,對于一名新的開發(fā)同學(xué)還是工作多年的開發(fā)同學(xué)而言,一個清晰的職業(yè)規(guī)劃能幫助其明確學(xué)習(xí)目標(biāo)與學(xué)習(xí)方向,以助在未來走得更遠(yuǎn)。

在技術(shù)發(fā)展中,從一名初級技術(shù)人,不斷積累經(jīng)驗、掌握越來越多技能,慢慢晉升到高級開發(fā)工程師后,面臨的職業(yè)規(guī)則分叉點,每個人都有不同的選擇:晉升架構(gòu)師?轉(zhuǎn)型管理?技術(shù)經(jīng)理?

這里的技術(shù)提升規(guī)劃,主要是針對從初級、中級到高級這三個過程中需要掌握的哪些技能樹以及掌握的程度要求做一個明確敘述。

職業(yè)規(guī)則發(fā)展規(guī)劃圖:

開發(fā)工程師職業(yè)發(fā)展規(guī)劃圖

第一階段:初級開發(fā)工程師

  • 適用人群:實習(xí)生、應(yīng)屆校招生
  • 技能目標(biāo):至少掌握熟練的一門開發(fā)語言,有產(chǎn)出,能在指導(dǎo)下實現(xiàn)簡單功能,代碼質(zhì)量較穩(wěn)定,能滿足業(yè)務(wù)需求
  • 技術(shù)掌握:
# 開發(fā)語言  
基本掌握項目使用的開發(fā)語言(PHP/Java/C/C++/Python等) 
理解開發(fā)語言的基本特點按照編碼規(guī)范編寫代碼,保證代碼的可讀性、風(fēng)格的一致性和關(guān)鍵注釋。
使用慣用法來規(guī)范開發(fā),提升開發(fā)效率。
背景知識:
*了解多進(jìn)程模型
*了解常用數(shù)據(jù)結(jié)構(gòu)和算法,可單獨開發(fā)一般模塊
*掌握數(shù)據(jù)庫的使用。

# 網(wǎng)絡(luò)知識  
了解基本的網(wǎng)絡(luò)原理。
HTTP協(xié)議
TCP協(xié)議
七層網(wǎng)絡(luò)模型與TCP/IP協(xié)議族

# 框架、工具
對應(yīng)開發(fā)語言常用的框架
了解常用的web服務(wù)器如apache、nginx等的基本配置;
使用版本管理工具,如SVN,GIT;
了解Linux常用命令。

# 安全知識
具備基本的安全意識,能做基礎(chǔ)的過濾、校驗與加密等
# 工程實踐
理解單元測試、性能測試等手段


# 設(shè)計能力  
了解
* 面向?qū)ο蟮木幊?* uml的表示法
* 理解高內(nèi)聚、低耦合的思想,并在程序上有體現(xiàn)

# 性能    
了解
* 衡量性能基本指標(biāo) (QPS, 等)

# 可維護(hù)性  
了解:
* 有關(guān)鍵的注釋
* 有關(guān)鍵路徑和便于查錯的日志 
* 有單元測試

# 可用性 
了解日常可用性的目的與哪些實現(xiàn)方式

第二階段:中級開發(fā)工程師

  • 適用人群: 兩年以上工作經(jīng)驗
  • 技能目標(biāo): 能獨立完成編碼工作,開發(fā)讓人放心項目
  • 技術(shù)掌握:
開發(fā)語言    
精通

*精通一門編程語言,理解該語言的運行機制與原理
*代碼可讀性強、優(yōu)雅。沒有重復(fù)代碼;
背景知識:
*熟練使用Unix操作系統(tǒng)。熟練掌握多線程與多進(jìn)程程序開發(fā)
*熟練掌握數(shù)據(jù)庫使用

網(wǎng)絡(luò)知識    
應(yīng)用
* 熟悉REST 接口規(guī)范
* 熟悉服務(wù)端主動推送技術(shù),包含SSE,WEBSCOKET等協(xié)議
* 熟悉HTTP 2.0協(xié)議

能夠分析網(wǎng)絡(luò)協(xié)議,掌握
tcpdump、wireshark等抓包工具

*能對某一個工作中用到的網(wǎng)絡(luò)協(xié)議有比較全面的了解,能夠定位和解決各種協(xié)議問題,如: tcp狀態(tài)變遷、ip粘包、tcp加速等

框架、工具   
精通
* 深入理解所使用的開發(fā)框架,特性,及其優(yōu)缺點,能快速定位問題;
* 對于使用WEB服務(wù)器,理解其結(jié)構(gòu)、原理和設(shè)計思想;
* 可以使用樁、Mock技術(shù),構(gòu)建測試用例
熟練使用消息隊列,能夠構(gòu)建異步應(yīng)用



安全知識    理解針對 Web 應(yīng)用常見攻擊方法(如 XSS、CSRF、SQL 注入、繞過校驗、畸形數(shù)據(jù)等)及其原理,能有針對性地加以防御。
工程實踐    
*理解工作流的概念,能夠至少運用git/github/gitlab flow其中一個或多個工作流

*掌握常用單元測試框架,能夠為自己的代碼提供覆蓋率合格的單元測試

*理解各種產(chǎn)品交付組織形式的原理和差異,并能正確選擇合理的交付方式,如tar/rpm/docker等

理解瀑布、迭代、螺旋、敏捷等開發(fā)模式的優(yōu)劣,以及可能的問題
設(shè)計能力    
應(yīng)用:
* 掌握面向?qū)ο笤O(shè)計原則
* 分層設(shè)計思想
* 熟練使用設(shè)計模式。
完善的技術(shù)文檔編寫能力
熟練滿足常規(guī)數(shù)據(jù)存儲,查詢需求,滿足性能要求

*理解流量、延遲、錯誤率、負(fù)載等監(jiān)控指標(biāo)

*了解docker容器的原理及用途,熟悉至少一種容器編排框架,如k8s/swarm等

*了解虛擬機的基本原理及用途

性能  
應(yīng)用
* 能使用性能測試工具獲得數(shù)據(jù)(例 siege)。
* 能使用性能分析工具,找到瓶頸并解決(例 Xhprof);

可維護(hù)性    
應(yīng)用:
* 有關(guān)鍵環(huán)節(jié)的監(jiān)控告警方案
* 建立系統(tǒng)統(tǒng)一的日志規(guī)范

可用性 
應(yīng)用:系統(tǒng)穩(wěn)定,沒出故障
* 有系統(tǒng)過載時,容錯,降級服務(wù)的設(shè)計方案
* 升級向下兼容方案

第三階段:高級開發(fā)工程師

  • 適用人群:五年以上工作經(jīng)驗
  • 技能目標(biāo): 能領(lǐng)導(dǎo)中大型系統(tǒng)的設(shè)計,推到項目的有序開展
  • 技術(shù)掌握:
開發(fā)語言    
應(yīng)用并改進(jìn):
*掌握非阻塞程序設(shè)計與開發(fā)
*深刻理解多種開發(fā)語言特點,合理選用語言
*能擴(kuò)展動態(tài)語言,改進(jìn)其不足,
*可多語言混合編程



網(wǎng)絡(luò)知識    
掌握網(wǎng)絡(luò)高并發(fā)模型,如epoll ,select, poll

能夠合理設(shè)計業(yè)務(wù)的分層協(xié)議,并形成合理的通信架構(gòu)

框架、工具   
能夠快速修復(fù),開發(fā)框架BUG,規(guī)避框架缺點帶來問題
* 能改進(jìn)、擴(kuò)展所使用的應(yīng)用框架
* 可以編寫Web服務(wù)擴(kuò)展,或使用其擴(kuò)展技術(shù)



安全知識    具有比較全面的 Web 應(yīng)用安全防御經(jīng)驗,能部署和執(zhí)行系統(tǒng)級的抗攻擊方案
工程實踐    *理解好的軟件在于設(shè)計,在于好的模型,能對負(fù)責(zé)的模塊進(jìn)行中短期的規(guī)劃,做到有效減少迭代和重構(gòu)

*有強烈的效率意識,能通過合理手段,有效減少重復(fù)勞動,減少時間人力開銷

*能夠總結(jié)經(jīng)驗,并轉(zhuǎn)換成自動化工具和業(yè)務(wù)支撐平臺,提升團(tuán)隊效率
設(shè)計能力    
精通:

* 采用恰當(dāng)設(shè)計,且不過度;
* 能合適在系統(tǒng)使用同步、異步機制
* 可以清晰表達(dá)系統(tǒng)的靜態(tài)結(jié)構(gòu)和動態(tài)行為、部署結(jié)構(gòu)
* 能通過可擴(kuò)展的架構(gòu)設(shè)計提升性能
* 可以進(jìn)行分布式中大系統(tǒng)的設(shè)計。
大數(shù)據(jù)下有完善的數(shù)據(jù)存儲,查詢方案

*優(yōu)秀的分層和抽象能力,設(shè)計具有一定彈性的架構(gòu)

*注重災(zāi)備,能夠設(shè)計有效的數(shù)據(jù)容災(zāi)方案

性能  
精通
* 能合理使用cache、異步化、異構(gòu)等優(yōu)化系統(tǒng)性能
* 能合理使用多種軟硬件特性,提升整體性能

綜合運用性能調(diào)優(yōu)工具,解決復(fù)雜的性能問題,如:內(nèi)存分配、io調(diào)度、指令緩存命中率、CPU親和性等
*從多個層面分析負(fù)載變化趨勢,優(yōu)化性能調(diào)優(yōu)策略

可維護(hù)性    
精通:
* 完善的預(yù)警體系,可早期發(fā)現(xiàn)局部問題

可用性 
了解:
* 多機房部署高可用性的方案

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容