Level 1,讀寫——他們瞭解設定Web伺服器的方法,在普通情況下能夠透過配置方式獲取工作所需要的東西。他們有使用文字編輯器和檔案系統的基礎知識,還擁有移動和操作檔案的能力,如ZIP和FTP。也能在結構中使用抽象符號、解析方式以及系統技能。
Level 2,指令碼——能夠編寫線性指令碼告訴電腦要做什麼,能夠學習和使用自己的符號。如果有足夠的時間和書面指導,他們可以使用bash或VB編寫一些簡單指令碼,為自己做些實用的事情。
Level 3,管理員——這些人瞭解庫和API,並有能力學習更多。他們知道不管使用什麼指令碼語言都需要連線庫。如果他們遇到問題,可以透過閱讀使用手冊或是在網上搜索庫來解決。在工作中他能夠發現或是開發自己的符號(使用struct編寫函式或是宣告)。大多數系統程式設計師都處在這個等級階段,Excel的初級宏系統使用者也同樣處在這個階段。
Level 4,高階實踐者——剛開始接觸耦合性與核心,他們能編寫自己的物件化指令碼(有公有/私有成員和方法)。這些人能玩轉技巧,瞭解庫和構建類。如果不使用類,他們也能夠建立自己的模組或是程式碼檔案。高階指令碼使用者可遠不止這樣,有一些Excel技巧經驗豐富的股票經紀人,他們使用自己VBA作為基礎程式碼,而沒有意識到自己處於這個級別。
Level 5,掌握多種技能——一旦上升到這個級別,將會遇到各種各樣的麻煩。常見程式設計下一階段就是能夠使用多重框架。這些人可以編寫C#,也知道如何建立表格和編寫SQL語句;可以編寫C,同時也會使用JavaScript和HTML。這兩個技能並不代表他們就是大師,只是要學會在理解同一個問題上,需要透過多種不同的方式來找尋答案。
Level 6,初級構架師——這階段的人才算是真正的從事程式設計工作。他們每天的工作就是要深入瞭解庫和API。並不要求他們必須記住這些,但要了解用不同的模式去實現自己的目標。想要在Win32中繪製?可能需要一些GDI資源控制代碼,他們知道控制代碼是在系統表某處的一個UInt32 hash——常見的Win32範例。想在自己的庫中新增jQuery?新庫裡有很多格式,他們應該知道怎麼做並且能解釋其工作方式。與此同時,也要開始學習如何重構自己的程式碼並突顯亮點,增強其程式碼的質量,慢慢地你會理解。
Level 7,資深構架師——他們的時間是用來建立自己的API、平臺或是庫。也許這是一個大專案的必需品,也許只是他們個人想把自己的學識推廣出去。他們開發的系統為使用者解決實際問題,所面對的受眾群是Level 5程式設計師。在這個階段需要深入OOAD,模板和實踐。我們大多數人在剛開始都會搞得一團糟,不能理解怎麼用更加簡單的方法將複雜事情簡易化。這個階段需要歷經很長時間,需要不斷修正錯誤,開發高質量的系統並建立更復雜、靈活性高的庫。當他們從外面接受幾個月的特定培訓回來,肯定希望團隊其他人都能理解他做了什麼。
Level 8,詮釋者——在某些時候,希望這些人能意識到大量複雜資訊投入結構和構架中可以更好地形容特定域的語言,其受眾群體是Level 4程式設計師。程式碼的複雜性增大,就能減少程式碼的數量,DSL開放可以將程式碼展示到各種地方。總之,他們將成為程式設計師使用指令碼語言方面的作家。透過易於使用的指令碼和導向將他們的系統開放給初學者。可以分別學習這些技能,但大多數情況是在複雜的結構後,最終走向DSL的道路。很快就能看到最初規模:利用自己編寫的DSL能夠很好的理解問題。
Level 9,函數語言程式設計——慢慢接近獎金,他們要開始學習如何函數語言程式設計。其受眾群是Level 3的程式設計師。函數語言程式設計是必不可少的,幫助他們輕鬆地脫離DSL,並能夠大幅度減少程式碼數量來解決問題,同時擁有較高的擴充套件性。某些功能語言在系統執行時可以hot–swap,慢慢就會感覺到已經接近先進水平。函數語言程式設計是一切問題的答案,它可以減少Bug,提升開發效率,但程式碼也相對來說很難學。程式設計師的腦海裡需要時刻記憶很多東西——他們必須要記住繁瑣的複雜符號。但是,結根到底函數語言程式設計只是道路上的一個階段,就像OOAD一樣。
Level 10,面向語言設計師——他們檢視所有新建立的程式語言程式。惟一的區別是新語言應該做什麼。他們瞭解如何開發面嚮物件語言,語言功能和指令碼語言,知道每一個語言在何時何地的用途。其受眾群是Level 2程式設計師。他們對每一個專案都會問:“這個專案我們需要什麼樣的語言?”在專案完結後他們將會得到一個很好的工具,既解決了問題並易於理解還擴充套件了入門級程式設計師。大多數專案不需要面向語言設計師。
上帝級別,計算機科學家——要麼就是程式設計的頂峰要麼就不存在,這個取決於自己的觀點。這個就是科學規劃,在裡面有很多很酷的東西。任何一個人都是其受眾群體。但重點不是在於做人們想要的東西,而是促進學術的發展。因為大多數程式設計能力水平都是基於人而言,人們居住在世界各地,也是必要條件之一。
Level 1,讀寫——他們瞭解設定Web伺服器的方法,在普通情況下能夠透過配置方式獲取工作所需要的東西。他們有使用文字編輯器和檔案系統的基礎知識,還擁有移動和操作檔案的能力,如ZIP和FTP。也能在結構中使用抽象符號、解析方式以及系統技能。
Level 2,指令碼——能夠編寫線性指令碼告訴電腦要做什麼,能夠學習和使用自己的符號。如果有足夠的時間和書面指導,他們可以使用bash或VB編寫一些簡單指令碼,為自己做些實用的事情。
Level 3,管理員——這些人瞭解庫和API,並有能力學習更多。他們知道不管使用什麼指令碼語言都需要連線庫。如果他們遇到問題,可以透過閱讀使用手冊或是在網上搜索庫來解決。在工作中他能夠發現或是開發自己的符號(使用struct編寫函式或是宣告)。大多數系統程式設計師都處在這個等級階段,Excel的初級宏系統使用者也同樣處在這個階段。
Level 4,高階實踐者——剛開始接觸耦合性與核心,他們能編寫自己的物件化指令碼(有公有/私有成員和方法)。這些人能玩轉技巧,瞭解庫和構建類。如果不使用類,他們也能夠建立自己的模組或是程式碼檔案。高階指令碼使用者可遠不止這樣,有一些Excel技巧經驗豐富的股票經紀人,他們使用自己VBA作為基礎程式碼,而沒有意識到自己處於這個級別。
Level 5,掌握多種技能——一旦上升到這個級別,將會遇到各種各樣的麻煩。常見程式設計下一階段就是能夠使用多重框架。這些人可以編寫C#,也知道如何建立表格和編寫SQL語句;可以編寫C,同時也會使用JavaScript和HTML。這兩個技能並不代表他們就是大師,只是要學會在理解同一個問題上,需要透過多種不同的方式來找尋答案。
Level 6,初級構架師——這階段的人才算是真正的從事程式設計工作。他們每天的工作就是要深入瞭解庫和API。並不要求他們必須記住這些,但要了解用不同的模式去實現自己的目標。想要在Win32中繪製?可能需要一些GDI資源控制代碼,他們知道控制代碼是在系統表某處的一個UInt32 hash——常見的Win32範例。想在自己的庫中新增jQuery?新庫裡有很多格式,他們應該知道怎麼做並且能解釋其工作方式。與此同時,也要開始學習如何重構自己的程式碼並突顯亮點,增強其程式碼的質量,慢慢地你會理解。
Level 7,資深構架師——他們的時間是用來建立自己的API、平臺或是庫。也許這是一個大專案的必需品,也許只是他們個人想把自己的學識推廣出去。他們開發的系統為使用者解決實際問題,所面對的受眾群是Level 5程式設計師。在這個階段需要深入OOAD,模板和實踐。我們大多數人在剛開始都會搞得一團糟,不能理解怎麼用更加簡單的方法將複雜事情簡易化。這個階段需要歷經很長時間,需要不斷修正錯誤,開發高質量的系統並建立更復雜、靈活性高的庫。當他們從外面接受幾個月的特定培訓回來,肯定希望團隊其他人都能理解他做了什麼。
Level 8,詮釋者——在某些時候,希望這些人能意識到大量複雜資訊投入結構和構架中可以更好地形容特定域的語言,其受眾群體是Level 4程式設計師。程式碼的複雜性增大,就能減少程式碼的數量,DSL開放可以將程式碼展示到各種地方。總之,他們將成為程式設計師使用指令碼語言方面的作家。透過易於使用的指令碼和導向將他們的系統開放給初學者。可以分別學習這些技能,但大多數情況是在複雜的結構後,最終走向DSL的道路。很快就能看到最初規模:利用自己編寫的DSL能夠很好的理解問題。
Level 9,函數語言程式設計——慢慢接近獎金,他們要開始學習如何函數語言程式設計。其受眾群是Level 3的程式設計師。函數語言程式設計是必不可少的,幫助他們輕鬆地脫離DSL,並能夠大幅度減少程式碼數量來解決問題,同時擁有較高的擴充套件性。某些功能語言在系統執行時可以hot–swap,慢慢就會感覺到已經接近先進水平。函數語言程式設計是一切問題的答案,它可以減少Bug,提升開發效率,但程式碼也相對來說很難學。程式設計師的腦海裡需要時刻記憶很多東西——他們必須要記住繁瑣的複雜符號。但是,結根到底函數語言程式設計只是道路上的一個階段,就像OOAD一樣。
Level 10,面向語言設計師——他們檢視所有新建立的程式語言程式。惟一的區別是新語言應該做什麼。他們瞭解如何開發面嚮物件語言,語言功能和指令碼語言,知道每一個語言在何時何地的用途。其受眾群是Level 2程式設計師。他們對每一個專案都會問:“這個專案我們需要什麼樣的語言?”在專案完結後他們將會得到一個很好的工具,既解決了問題並易於理解還擴充套件了入門級程式設計師。大多數專案不需要面向語言設計師。
上帝級別,計算機科學家——要麼就是程式設計的頂峰要麼就不存在,這個取決於自己的觀點。這個就是科學規劃,在裡面有很多很酷的東西。任何一個人都是其受眾群體。但重點不是在於做人們想要的東西,而是促進學術的發展。因為大多數程式設計能力水平都是基於人而言,人們居住在世界各地,也是必要條件之一。