日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员自我修养1:能力矩阵

發布時間:2023/12/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员自我修养1:能力矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序員自我修養1:能力矩陣


資料來自與網絡整理,僅供學習參考,不用于商業用途


請注意,每個級別的知識都是累積的。在 n級意味著您還了解,若低于n的水平,說明還需要努力學習,掌握

前言

程序員能力矩陣可以一定程度上反應自己當前的能力水平,同時也給自己一個努力的方向,讓自己找到要努力的方向和目標。
本文可供大家檢測自己目前所在的能力水平,同時也方便大家制定自己下一步需要努力的方向,使自己早日稱為優秀的程序員,資深專家

Part1: 計算機科學

chart1: 數據結構

1. 級別說明

  • 2n(Level 0):不知道Array和LinkedList之間的區別
  • n2(Level 1):能夠在實際編程任務中解釋和使用數組,鏈接列表,字典等
  • n(Level 2):了解基本數據結構的空間和時間權衡,數組與鏈接列表的關系,能夠解釋如何實現哈希表并可以處理沖突,優先級隊列及其實現方式等。
  • log(n)(Level 3):了解高級數據結構,例如B樹,二項式和斐波那契堆,AVL /紅黑樹,Splay樹,跳過列表,嘗試等

chart2: 算法

1. 級別說明

  • 2n(Level 0):無法找到數組中數字的平均值
  • n2(Level 1):基本的排序,搜索和數據結構遍歷和檢索算法
  • n(Level 2):樹,圖,簡單的貪婪以及分而治之算法,能夠理解該矩陣級別的相關性
  • log(n)(Level 3):能夠識別和編程動態編程解決方案,具有圖形算法的豐富知識,具有數值計算算法的豐富知識,能夠識別NP問題等

chart3: 系統編程

1. 級別說明

  • 2n(Level 0):不知道什么是編譯器,鏈接器或解釋器
  • n2(Level 1):基本了解編譯器,鏈接器和解釋器。了解什么是匯編代碼以及它們在硬件級別如何工作。關于虛擬內存和分頁的一些知識。
  • n(Level 2):了解內核模式與用戶模式,多線程,同步原語及其實現方式,能夠讀取匯編代碼。了解網絡如何工作,了解網絡協議和套接字級別的編程。
  • log(n)(Level 3):了解整個編程堆棧,硬件(CPU +內存+高速緩存+中斷+微代碼),二進制代碼,匯編,靜態和動態鏈接,編譯,解釋,JIT編譯,垃圾回收,堆,堆棧,內存尋址

Part2: 軟件工程

chart1: 源代碼版本控制

  • 2n(Level 0):按日期備份文件夾
  • n2(Level 1):Git / SVN等代碼管理工具初始用戶
  • n(Level 2):熟練使用Git或SVN功能。知道如何分支和合并,使用修補程序設置存儲庫屬性等
  • log(n)(Level 3):分布式VCS系統的知識。已經嘗試過Bzr / Mercurial / Darcs / Git

chart2: 構建自動化

  • 2n(Level 0):只知道如何從IDE構建
  • n2(Level 1):知道如何從命令行構建系統
  • n(Level 2):可以設置腳本來構建基本系統
  • log(n)(Level 3):可以設置腳本來構建系統,還可以建立文檔,安裝程序,生成發行說明并在源代碼管理中標記代碼

chart3: 自動化測試

  • 2n(Level 0):認為所有測試都是測試人員的工作
  • n2(Level 1):編寫了自動化的單元測試,并針對要編寫的代碼提出了良好的單元測試用例
  • n(Level 2):以TDD方式編寫代碼
  • log(n)(Level 3):了解并能夠設置自動化的功能,負載/性能和UI測試

Part3: 程序設計

chart1: 問題分解

  • 2n(Level 0):只有帶有復制粘貼的直線代碼才能重復使用
  • n2(Level 1):能夠將問題分解為多種功能
  • n(Level 2):能夠提出解決整個問題的可重用功能/對象
  • log(n)(Level 3):使用適當的數據結構和算法,并提供通用/面向對象的代碼,這些代碼封裝了可能會發生變化的問題的各個方面

chart2: 系統分解

  • 2n(Level 0):無法在單個文件/類的層次上思考
  • n2(Level 1):只要位于相同的平臺/技術中,便能夠打破問題空間并設計解決方案
  • n(Level 2):能夠設計跨越多種技術/平臺的系統
  • log(n)(Level 3):能夠可視化和設計具有多個產品線并與外部系統集成的復雜系統。還應該能夠設計運營支持系統,例如監視,報告,故障轉移等

chart3: 協作交流

  • 2n(Level 0):無法向同伴表達想法/想法。拼寫和語法不佳。
  • n2(Level 1):同行可以理解所講的內容。良好的拼寫和語法
  • n(Level 2):能夠與同齡人有效溝通
  • log(n)(Level 3):能夠以明確的方式理解和交流思想/設計/思想/規范,并根據上下文調整交流

chart4: 文件中的代碼組織

  • 2n(Level 0):文件中沒有組織的證據
  • n2(Level 1):代碼按邏輯或可訪問性分組
  • n(Level 2):代碼分為多個區域,并通過引用其他源文件得到了很好的注釋
  • log(n)(Level 3):文件具有許可證標頭,摘要,注釋良好,一致的空格使用情況。該文件應該看起來很漂亮

chart5: 跨文件的代碼組織

  • 2n(Level 0):不考慮跨文件組織代碼
  • n2(Level 1):相關文件被分組到一個文件夾中
  • n(Level 2):每個物理文件都有獨特的用途,例如一種類定義,一種功能實現等。
  • log(n)(Level 3):物理級別的代碼組織與設計緊密匹配,并且查看文件名和文件夾分布可深入了解設計

chart6: 源樹組織

  • 2n(Level 0):一切都在一個文件夾中
  • n2(Level 1):將代碼基本分離到邏輯文件夾中
  • n(Level 2):沒有循環依賴項,二進制文件,庫,文檔,內部版本,第三方代碼都組織到適當的文件夾中
  • log(n)(Level 3):源樹的物理布局與邏輯層次結構和組織匹配。目錄名稱和組織提供了對系統設計的見解

chart7: 代碼可讀性

  • 2n(Level 0):單音節名稱
  • n2(Level 1):文件,變量類,方法等的好名字
  • n(Level 2):沒有長函數,注釋說明異常代碼,錯誤修復,代碼假設
  • log(n)(Level 3):使用斷言來驗證代碼假設,代碼自然地流過-沒有條件或方法的深層嵌套

chart8: 防御性代碼

  • 2n(Level 0):不懂這個概念
  • n2(Level 1):檢查所有參數并在代碼中聲明關鍵假設
  • n(Level 2):確保檢查返回值,并檢查可能失敗的代碼周圍的異常
  • log(n)(Level 3):有自己的庫來幫助進行防御性編碼,編寫模擬故障的單元測試

chart9: 錯誤處理

  • 2n(Level 0):只編碼良好的情況
  • n2(Level 1):圍繞可能引發異常/生成錯誤的代碼進行基本錯誤處理
  • n(Level 2):確保錯誤/異常使程序保持良好狀態,正確清理了資源,連接和內存
  • log(n)(Level 3):在發現可能的異常之前,在所有代碼層中維護一致的異常處理策略的代碼,以及整個系統異常處理的準則

chart10: IDE

  • 2n(Level 0):通常使用IDE進行文本編輯
  • n2(Level 1):知道他們圍繞界面的方式,能夠通過菜單有效地使用IDE
  • n(Level 2):了解大多數常用操作的鍵盤快捷鍵
  • log(n)(Level 3):編寫了自定義宏

chart11: API

  • 2n(Level 0):需要經常查找文檔
  • n2(Level 1):內存中使用最頻繁的API
  • n(Level 2):豐富而深入的API知識
  • log(n)(Level 3):編寫了位于API頂部的庫,以簡化常用任務并填補API中的空白

chart12: 構架

  • 2n(Level 0):尚未在核心平臺之外使用任何框架
  • n2(Level 1):聽說過但未使用該平臺的流行框架
  • n(Level 2):已經以一種專業的身份使用了多個框架,并且對框架的習慣非常熟悉
  • log(n)(Level 3):框架的作者

chart13: 要求

  • 2n(Level 0):將給定的要求和代碼規范化
  • n2(Level 1):在規范中提出有關遺漏案件的問題
  • n(Level 2):了解完整圖片并提出需要指定的整個區域
  • log(n)(Level 3):能夠根據經驗為給定要求提出更好的替代方案和流程

chart14: 腳本編寫

  • 2n(Level 0):不懂腳本工具
  • n2(Level 1):批處理文件/ shell腳本
  • n(Level 2):Perl / Python / Ruby / VBScript / Powershell
  • log(n)(Level 3):編寫并發布了可重用的代碼

chart15: 數據庫

  • 2n(Level 0):認為Excel是數據庫
  • n2(Level 1):了解基本的數據庫概念,規范化,ACID,事務并可以編寫簡單的選擇
  • n(Level 2):能夠設計良好且規范化的數據庫架構,同時牢記必須運行的查詢,熟練使用視圖,存儲過程,觸發器和用戶定義的類型。知道聚簇索引和非聚簇索引之間的區別。熟練使用ORM工具
  • log(n)(Level 3):可以進行基本的數據庫管理,性能優化,索引優化,編寫高級選擇查詢,能夠用關系sql代替游標用法,了解如何在內部存儲數據,了解如何在內部存儲索引,了解如何進行鏡像,復制等。了解兩階段提交的工作方式

Part4: 經驗

chart1: 具有專業經驗的語言

  • 2n(Level 0):命令式或面向對象
  • n2(Level 1):命令式,面向對象和聲明式(SQL),如果他們了解靜態類型與動態類型,弱類型與強類型以及靜態推斷的類型,則將獲得額外的好處
  • n(Level 2):如果他們了解懶惰的評估,計算,連續性,則可以提供實用的額外獎勵
  • log(n)(Level 3):并發(Erlang,Oz)和邏輯(序言)

chart2: 具有專業經驗的平臺

  • 2n(Level 0):1 年
  • n2(Level 1):2-3 年
  • n(Level 2):4-5 年
  • log(n)(Level 3):6 年+

chart3: 多年專業經驗

  • 2n(Level 0):1 年
  • n2(Level 1):2-5 年
  • n(Level 2):6-9 年
  • log(n)(Level 3):10 年+

chart4: 領域知識

  • 2n(Level 0):不了解領域
  • n2(Level 1):已在域中開發至少一種產品
  • n(Level 2):在同一個域中從事多種產品的研究
  • log(n)(Level 3):領域專家。在領域中設計并實施了多種產品/解決方案。精通標準術語,該領域中使用的協議

Part5: 知識

chart1: 工具知識

  • 2n(Level 0):限于主要IDE(VS.Net,Eclipse等)
  • n2(Level 1):了解流行和標準工具的一些替代方法
  • n(Level 2):對編輯器,調試器,IDE,開源替代品等有很好的了解。知道Scott Hanselman的電動工具清單中大多數工具的人。已使用ORM工具
  • log(n)(Level 3):實際編寫了工具和腳本,如果已經發布,則可以增加獎勵

chart2: 接觸到的語言

  • 2n(Level 0):命令式或面向對象
  • n2(Level 1):命令式,面向對象和聲明式(SQL),如果他們了解靜態類型與動態類型,弱類型與強類型以及靜態推斷的類型,則將獲得額外的好處
  • n(Level 2):如果他們了解懶惰的評估,計算,連續性,則可以提供實用的額外獎勵
  • log(n)(Level 3):并發(Erlang,Oz)和邏輯(序言)

chart3: 代碼庫知識

  • 2n(Level 0):從未看過代碼庫
  • n2(Level 1):代碼布局的基本知識以及如何構建系統
  • n(Level 2):良好的代碼基礎知識,已經實現了一些錯誤修復,也許還有一些小功能
  • log(n)(Level 3):已在代碼庫中實現了多個重要功能,并且可以輕松可視化大多數功能或錯誤修復所需的更改

chart4: 即將到來的技術知識

  • 2n(Level 0):尚未聽說即將推出的技術
  • n2(Level 1):聽說過該領域即將出現的技術
  • n(Level 2):已下載alpha預覽/ CTP / beta并閱讀了一些文章/手冊
  • log(n)(Level 3):玩過預覽,并實際制作了一些東西,并且作為獎勵與其他人分享

chart5: 平臺內部

  • 2n(Level 0):零知識平臺內部
  • n2(Level 1):具有平臺內部工作原理的基本知識
  • n(Level 2):對平臺內部有深入的了解,可以可視化平臺如何采用程序并將其轉換為可執行代碼
  • log(n)(Level 3):具有編寫的工具來增強或提供有關平臺內部的信息。例如反匯編器,反編譯器,調試器

chart6: books

  • 2n(Level 0):釋放系列,21天系列,24小時系列,假人系列
  • n2(Level 1):代碼完成,不要讓我思考,掌握正則表達式
  • n(Level 2):設計模式,人員軟件,編程珠,算法設計手冊,實用程序員,神話人月
  • log(n)(Level 3):計算機程序的結構和解釋,概念技術,計算機程序設計模型,計算機程序設計藝術,數據庫系統,作者:C。J. Date,Thoughtingthth,Little Schemer

chart7: blogs

  • 2n(Level 0):聽說過,但沒有時間
  • n2(Level 1):閱讀技術/編程/軟件工程博客,并定期收聽播客
  • n(Level 2):維護一個鏈接博客,其中包含他/她收集的一些有用的文章和工具
  • log(n)(Level 3):維護一個博客,在其中分享有關編程的個人見解和想法

總結

以上是生活随笔為你收集整理的程序员自我修养1:能力矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。