初級程序員:what
知道問題是什么,按要求完成,境界限制在具體問題。從管理人員數(shù)量來說,只管理自己。
中級程序員:how
給出問題,自己決定如何完成,境界限制在具體方向。從管理人員數(shù)量來說,管理自己之外,還可以幫到同組的人,可以領(lǐng)導(dǎo)一個(gè)項(xiàng)目模塊。
高級程序員:why
針對問題,思考問題的本質(zhì),對問題有自己的一套理論體系,境界提高到特定領(lǐng)域。從管理人員數(shù)量來說,可以領(lǐng)導(dǎo)一個(gè)領(lǐng)域的技術(shù)團(tuán)隊(duì)。
架構(gòu)師:when&where
對各領(lǐng)域問題已經(jīng)有比較好的領(lǐng)悟,能充分駕馭這些問題,目標(biāo)是選擇合適的技術(shù)和人員組合,保證技術(shù)的先進(jìn)性,對業(yè)務(wù)的時(shí)間和需求的滿足性,方案的伸縮性和擴(kuò)展性。境界提高到跨領(lǐng)域。從管理人員數(shù)量來說,可以領(lǐng)導(dǎo)整個(gè)產(chǎn)品團(tuán)隊(duì)的技術(shù)工作(前端+后端)。
高級程序員跟架構(gòu)師的分界點(diǎn)是,你在開發(fā)項(xiàng)目時(shí),不是在想怎么解決具體問題,而是專注于更高層的系統(tǒng)設(shè)計(jì),選擇合適的工具。前提是你對這一類問題已經(jīng)比較熟悉或有成熟的應(yīng)對思路,這樣就可以從你的技術(shù)池里面選擇經(jīng)過對比的最優(yōu)的工具,實(shí)現(xiàn)系統(tǒng)各種需求。當(dāng)然架構(gòu)師也包括其他更高的統(tǒng)籌全局的能力,管理水平等,但充分的技術(shù)池是你實(shí)現(xiàn)架構(gòu)能力的基礎(chǔ)。
其實(shí),就是能力越大,管理的人越多,責(zé)任越大。以行政級別類比:
初級程序員好比鄉(xiāng)長:學(xué)習(xí)什么是經(jīng)濟(jì),什么是政治,管理好自己一畝三分地的事情,上級讓干啥就干啥,干好即可。
中級程序員類似縣長:老百姓的生活有各種問題,單靠上級的理論文件不能直接解決問題,只能靠自己想辦法,根據(jù)上級精神把事情做好。
高級程序員類似市長:上級甚至不會(huì)告訴你怎么管理,只是設(shè)定方向,不參與具體工作。那么你就要自己去設(shè)計(jì)城市發(fā)展路線,思考城市如何去發(fā)展。
架構(gòu)師類似省長:省長在清朝叫封疆大吏,表示可以主政地方,對特定地區(qū)的發(fā)展已經(jīng)有比較好的把握,比如資源型省份,外貿(mào)型省份,內(nèi)需型省份,農(nóng)業(yè)型省份,旅游型省份等。這個(gè)級別,你要關(guān)注的就不再是去參與具體問題的解決,而是對地區(qū)經(jīng)濟(jì)的發(fā)展尋找合適的藥方和人。設(shè)計(jì)好整體的路線,發(fā)生具體問題時(shí),找合適的人去解決就行了。