初级程序员:what
知道问题是什么,按要求完成,境界限制在具体问题。从管理人员数量来说,只管理自己。
中级程序员:how
给出问题,自己决定如何完成,境界限制在具体方向。从管理人员数量来说,管理自己之外,还可以帮到同组的人,可以领导一个项目模块。
高级程序员:why
针对问题,思考问题的本质,对问题有自己的一套理论体系,境界提高到特定领域。从管理人员数量来说,可以领导一个领域的技术团队。
架构师:when&where
对各领域问题已经有比较好的领悟,能充分驾驭这些问题,目标是选择合适的技术和人员组合,保证技术的先进性,对业务的时间和需求的满足性,方案的伸缩性和扩展性。境界提高到跨领域。从管理人员数量来说,可以领导整个产品团队的技术工作(前端+后端)。
高级程序员跟架构师的分界点是,你在开发项目时,不是在想怎么解决具体问题,而是专注于更高层的系统设计,选择合适的工具。前提是你对这一类问题已经比较熟悉或有成熟的应对思路,这样就可以从你的技术池里面选择经过对比的最优的工具,实现系统各种需求。当然架构师也包括其他更高的统筹全局的能力,管理水平等,但充分的技术池是你实现架构能力的基础。
其实,就是能力越大,管理的人越多,责任越大。以行政级别类比:
初级程序员好比乡长:学习什么是经济,什么是政治,管理好自己一亩三分地的事情,上级让干啥就干啥,干好即可。
中级程序员类似县长:老百姓的生活有各种问题,单靠上级的理论文件不能直接解决问题,只能靠自己想办法,根据上级精神把事情做好。
高级程序员类似市长:上级甚至不会告诉你怎么管理,只是设定方向,不参与具体工作。那么你就要自己去设计城市发展路线,思考城市如何去发展。
架构师类似省长:省长在清朝叫封疆大吏,表示可以主政地方,对特定地区的发展已经有比较好的把握,比如资源型省份,外贸型省份,内需型省份,农业型省份,旅游型省份等。这个级别,你要关注的就不再是去参与具体问题的解决,而是对地区经济的发展寻找合适的药方和人。设计好整体的路线,发生具体问题时,找合适的人去解决就行了。