通過對軟體開發中的工作事務與微技能進行評估和分級,可以清晰地理解工作構成、評估當前水平、定位下一步發展的方向和思路。
核心技能: 技術、程式設計、交流、合作、公眾表達、規劃、執行。
兩個維度: 開拓新的領域; 分享已完成的成果。
難度係數 *** 1 (新手上路)
1. 完成頁面測試;
2. 編寫簡明的文件;
3. 能夠理解基本業務;
4. 日常普通的交流;
6. 完成簡單的指令碼實現臨時需求;
難度係數 *** 2 (亦步亦趨)
1. 完成乙個帶命令列引數的實用指令碼小工具;
2. 完成乙個函式或方法的單測;
3. 完成乙個服務介面的測試用例;
4. 使用函式來結構化程式的組織;
5. 使用陣列、集合、列表、對映等容器來組織程式的資料;
6. 使用系統api或庫函式來操作檔案與目錄;
7. 學會使用工作中需要用到的軟體與工具;
8. 搭建軟體開發環境,解決其中遇到的困難;
9. 編譯和執行應用,部署應用執行的伺服器環境;
難度係數 *** 3 (初出茅廬)
1. 自己動手實現基本資料結構(陣列、鍊錶、棧、佇列、二叉樹、位圖)的基本操作;
2. 自己動手實現基本演算法(排序、查詢、選擇、分治、遞迴、對映、過濾、聚合、動態規劃);
3. 完成乙個小改動需求,小的 bugfix 或功能優化,含測試;
4. 編寫指令碼實現軟體開發環境的自動化搭建;
5. 學習和理解業務並梳理成文件;
6. 繪製業務流程圖、思維導圖等;
7. 理解小組成員的想法和構思,比較順暢與小組成員交流;
8. 聆聽和理解產品需求並能和產品同學好好說話;
9. 參加分享時預先準備, 會上做個發言或提問;
難度係數 *** 4 (初露鋒芒 - 初級工程師)
1. 權衡優先順序,進行一天的工作內容規劃;
2. 總結業務、專案與學習實踐心得,部落格分享贏得讀者;
3. 實現有難度的資料結構的演算法,比如b+樹程式設計;
4. 能夠排查普通或略偏難度的問題或bug;
5. 能夠編寫實用而健壯的監控指令碼或資料訂正指令碼;
6. 學習和使用設計模式來改善物件導向程式的結構;
7. 編寫實用而得當的業務文件、專案文件;
8. 有能力與團隊成員就技術工程議題進行交流討論並發表見解;
9. 能夠理解比較複雜的業務並將其分解為可以規劃和實施的子業務;
10. 理解專案管理方法並能適當調節個人活動與專案總體進度保持同步;
11. 理解產品設計與開發要點並能有效實現;
12. 理解和完成前後端元件的互動、前後端團隊的協作;
13. 適宜地傳送私人郵件和公眾郵件表達個人意見;
14. 使用通訊工具簡潔地私人答覆和公開表達想法;
15. 組織團建、預定會議室並主持團隊週會;
難度係數 *** 5 (風雨兼程 - 中級工程師)
1. 實現複雜結構的程式設計, 複雜結構可能是list, map 巢狀的復合結構,或者圖結構;
2. 實現含演算法的綜合程式設計, 比如迷宮回溯(含gui);
3. 實現併發非同步的程式設計, 比如 ajax 程式設計, 併發實現詞典的單詞統計計數;
4. 實現針對特定需求的可擴充套件的微框架的設計與實現;
5. 編寫測試框架和測試用例,實現可重複自動化測試;
6. 理解分布式系統的整體架構設計,並完成普通業務開發;
7. 對**質量有比較深入的理解,能夠堅持良好的程式設計風格;
8. 完成一項需求的概要設計和詳細設計(含資料庫設計);
9. 繪製子系統或子模組的整體框架圖或架構設計圖;
10. 完成一項之前沒有做過的技術工程工作,比如線上大流量服務分流;
11. 能夠排查比較深層次的業務方面的問題和bug並進行修復;
12. 確保負責的子系統的發布平滑完成;
13. 參與和完成跨團隊中型專案的開發,並參與第一次凌晨發布;
14. 研究乙個模組的源**實現;
15. 快速學習和應用一門新技術,比如hbase ;
16. 能夠說服和邀請團隊成員加入自己開展的專案;
17. 理解、研究和討論一項重要議題,並在會議上做出適當的發言;
18. 能夠在較小範圍公眾場合鎮定地演示自己的工作成果;
19. 完成一次良好的晉公升面試;
20. 對乙個業務主題做仔細的調研,並完成專案立項工作;
21. 對乙個中型需求做仔細的設計,並邀請團隊成員進行設計評審;
22. 在團隊中分享在學習工作中掌握的新思想、新技術、新成果;
23. 規劃個人的季度總體目標及實施計畫;
24. 執行個人的季度總體目標及實施計畫;
難度係數 *** 6 (激流勇進 - 高階工程師)
1. 主導完成乙個中型需求的開發,涉及需求理解、詳細設計與實現、聯調溝通、測試部署、線上運維等綜合技能;
2. 實現分布式系統下的複雜業務開發,涉及事務、併發控制等;
3. 完成中大型跨團隊專案的開發與合作;
4. 獨立負責乙個中小系統的日常開發與維護工作;
5. 深入到系統底層或框架內部細節排查細微的問題或bug;
6. 評估多個子應用或服務之間的依賴關係並保證無故障同步公升級發布;
7. 對系統的業務與模型進行抽象和解耦,實現可擴充套件和可維護的設計;
8. 繪製應用的整體框架圖或架構設計圖,從整體上思考問題的解決;
9. 理解和把握公司、部門、團隊的總體目標及方向;
10. 規劃個人的年總體目標及實施計畫;
11. 執行個人的年總體目標及實施計畫;
12. 規劃小組的整體圖景和方向;
13. 執行小組的整體圖景和方向;
14. 指導初級工程師完成日常技術工作創造貢獻;
15. 創造性地使用新方法解決問題改善工作效率;
16. 完成普通專案的技術選型;
17. 推進跨團隊事務的如期完成;
18. 流暢地與團隊成員、tl、管理層進行交流和匯報;
----------------------------------- 分割線: 以下純屬 yy ------------------------------
難度係數 *** 7 ( 劈波斬浪 - 專家,基層管理 )
1. 主導完成乙個獨立子業務的服務化遷移;
2. 主導完成乙個獨立子系統的重構;
3. 有影響力地演示團隊的工作成果與公司的品牌形象;
4. 善於從整體上思考問題的解決方案並形成考慮周全的開放方案;
5. 組建精悍團隊來做有意義的專案或產品;
6. 規劃跨業務團隊的總體目標及實施計畫;
7. 帶領小組成員實現季度、年規劃目標;
8. 為重大專案做技術選型、架構設計或技術諮詢;
9. 指導中高階工程師做出優秀的工作成果和貢獻;
10. 在某個專業技術領域發揮著突出的技能和貢獻;
11. 綜合運用知識、技能、經驗、直覺等完成技術難題的攻克,比如交易引擎的設計與開發;
12. 綜合運用知識、技能、經驗、直覺等創造性地改善團隊生產效率,比如自動化生成測試;
軟體開發工程師「打怪公升級」,如何技術高階?
天生稟賦的人不多,看數學概率正態分佈就知道了,絕大數人都是普通人,需要通過努力學習一步一步往上爬。學習如逆水行舟,不進則退。網際網路偏年輕化的特點,軟體技術也是吃青春的飯碗,類似運動員多少歲會退役一樣,沒有必要大驚小怪。如何規劃職業生涯是每乙個人需要面對的難題?計畫往往趕不上變化,你有你的計畫,世界...
速達軟體開發版 程式公升級
無論什麼程式,都不可避免的需要公升級 有些是因為bug 有些是因為新的需求,速達軟體開發版公升級包含兩大部分 一 程式公升級 每個客戶端都需要公升級 程式的版本體現在登入後的右上角修改時間上 公升級後的標識是程式的版本發生變化 版本為修改時間 二 資料庫公升級 只需要公升級一次,不是每個客戶端都需要...
自上而下的軟體開發和自下而上的軟體開發
自上而下 top down 開發模式是指從乙個應用的最高點開始開發。從最高點逐步往下層編碼,直到開發完所有的任務。一旦寫完了最下層的 開發任務就完成了。使用這種方式,你需要設計 編寫出所有你需要的但還沒有實現模擬介面 服務 偽 自下而上 bottom up 開發模式是指從乙個應用的最底層開始開發。這...