寫程式: 會, 不會
01 上有這麼一則討論
這是個月經話題了, 不過, 今天我想了一想, 在討論"會不會寫程式"之前, 必需先定義什麼是"會寫程式"
我不完整地劃分出幾個等級
1. Casual Scripter - a trained monkey can do
- 有能力編寫基本的 script 用來操控系統或資料庫
- 有能力編寫基本的 server side script. 或 dynamic web pages
2. 入門程式設計師 - showing potential
- 能使用業界慣用的工作做出 script 能做到的事, 並且效率更好
- 熟知, 並且能實作基本的演算法與資料結構
- 對 programming 與 computer science 具備廣泛的常識
- 大概知道那些服務應該由 OS 提供, 而那些又從 language 本身提供
- 能實作一支 10000 - 20000 行的程式
3. 中階程式設計師 - good implementation
- 對問題與執行環境有大略清楚的掌握
- 完整地處理所的錯誤
- 正確地使用 System API, 正確地 implement 一個 design.
- 程式碼條理清楚, 遵偱既定的 coding standard, consistent style.
- 能正確地選擇, 便用最合理的演算法 (e.g. tree v.s. list, standard library v.s. custom made), 並且能提出具體的理由支持自己的選擇
- 能有系統的 debug
- 能領導測試人員與 PM 一同達到最好的產品品質
4. 可堪獨立作業的程式設計師 - good designer
- 清楚地掌握問題與環境
- 清楚地比較各種設計的優缺點與限制
- 清楚地掌握各種 state 與行為
- 沒有不必要的 layering
- 預見, 處理所有的 edge case.
我預期一個科班畢業生最少達大一半以上的 level 2. 而在入行二年後達到大部份的 level 3.
合理嗎?
沒有留言:
張貼留言