普通程序员通向架构师的最佳路径?

人盡茶涼 提交于 2020-02-29 09:47:15

互联网的蓬勃发展,让无数的「屌丝」程序员在一夜之间,仿佛都变成了「香饽饽」。但是,没有几个做开发的同学真的想做一辈子「码农」,很多同学都希望当上CTO,最终迎娶「白富美」,从此过上幸福美满的生活。

诚然,CTO 的路不是那么好走的,而其中最重要的先决条件就是你要先成为一名优秀的架构师,那么普通程序员如何才能成为架构师呢?让我们听听移动开发精英群里,这些国内顶级的大牛怎么说!本文系 OneAPM 市场部王鹏整理。

三生社群副总裁,ThinkPHP核心开发者罗飞总结:

程序员可能的发展路线是什么?

先说说这张图,它几乎表示出了一个程序员可能走的所有职业路线。 当我们刚开始还是个初级开发的时候只能把自己变成高级,开发者才能有更多的选择。你可以选择管理线、专家线或者小老板线。(图有四个象限,x轴代表金钱, y轴代表时间。)

我们学习知识的路线是: 技术->技术+管理->技术+管理+商业。但是随着阶段不一样,我们学习的知识也有不同,刚开始我们只做开发,只需要学习技术知识就行了,后面我们做到了管理职位,不仅要懂技术还要学习管理知识,然后我们想要成为CTO\CEO或小老板,必须得学习一些商业知识才行。

想成为架构师,你需要经历3个阶段的磨练!

从技术上来讲,要成为高级工程师或架构师,我认为可能需要经历3个阶段: 实现->借鉴->优化。

第一个阶段: 实现

在这阶段我们只在乎功能的实现,不会考虑性能优化,我们会觉得一些功能不会做,一些功能自己没做,我们只要实现了功能,就觉得很有成就感。在这个阶段中,我们要多去做事,没做过的就去做。要注意培养自己的全面能力,前端、后端、服务器等要去接触。其实,这个阶段就好比人类的居住环境,原始人的时候只考虑实现遮风避雨就行了,不考虑住得舒不舒服,所以找个山洞住就可以了。

第二个阶段:借鉴

当我们觉得基本所有功能自己都能实现的时候,我们会遇到自己的第一个瓶颈,这时候不要自满,要发现那只是自己的第一个瓶颈而已。其实,我们每个人自己的提升空间还很大,这时候建议大家多借鉴别人的东西,看一些开源程序的代码,其实读别人的程序能学到很多东西。或许有人认为别人能实现的自己也能实现,不屑于看别人的东西,但这显然阻碍了自己进步的空间!

美国一位大师Matt Zandstra说过这样一句话:“我们正在努力开发的功能,或许已经被其他程序员实现过无数次,我们怎么不借鉴他们的,而是把重心放在自己特有的业务逻辑上呢?”这个阶段我还是拿人类居住环境来做比喻:人类在一定阶段后, 好像能借鉴鸟搭鸟窝的形式,自己能“搭建”茅草屋了。

第三个阶段:优化

当我们功能都能实现了,也借鉴了许多别人的东西时候,借鉴阶段也是有瓶颈的,当我们看了一两年开源代码后, 再看新的程序,已经看不出新的编程思想了,感觉编程思想都是以前看过的。这个时候,我们的重心会想着怎么优化我们的代码:

我们会考虑代码的可读性、安全性、可扩展性。这时候建议大家可以看一些设计模式、编程思想、安全方面的书。 我说的这三个阶段可能属于从初级程序员到高级程序员的阶段,离真正的架构师可能还有点距离,因为真正很牛的架构师还会理解公司业务需求,能知道什么阶段用什么技术!这是非常重要的。

经典语录分享:

唐巧:我的观点是,程序员能够成长为架构师,不仅要靠自己的努力,很大程度上也依赖于机遇。淘宝的系统经历过10次重写,每次都面临新的挑战,这些参与其中的每个人都得到了亲自的锻炼和成长,这也是他们赶上了好时候:电子商务和淘宝的快速发展。

在这波人过了之后,现在的新人如果想在电商系统上有所深入的成长,再想成为架构师就很难了,因为他们无法深入理解这些设计原理,为什么这样设计能够避免各种“坑”?

当然,移动开发领域正经历快速变革和发展的时期,这几年做移动开发的人,可以看到这个系统的演进过程,他们很可能成为移动开发专家。他们也有机会去设计一些非常基础的、有挑战的系统,来解决现在移动开发中遇到的问题。总的来说,就是找准趋势,顺势而为,才可能在技术上接触到挑战和机会,单纯的努力可能不一定有效果。

冯军:我觉得架构师不在于掌握多少前沿的技术语言和牛逼的技术,而是在于对业务和技术发展的理解,能站在公司的角度,明确在不同的阶段用不同的技术架构,能够快速支持业务的发展,保障平台的稳健。

而且,架构师的技术栈会多元化,因为架构师不仅仅要做好技术(技术不仅仅是包含于开发层面,还有前端构建,运维,测试等领域),还要理解业务,不懂业务的架构师不是一名好架构师。当然,架构也不是设计出来的,而是伴随着项目的发展一步步不断演进出来的。**

薛伟:程序员在基于本位模块开发上,应该多想想支撑业务及整体需求,多考虑支撑业务问题的实际解决,以及突破所辖模块及端的协作兄弟的换位技术思考。只要多实践,多务实解决切实问题,就能自然发展成为架构师,所有技术架构思维其实都是相通的。

Sama:这个世界上最重要的是人,我们索要学习的也都是人创造的。所以跟随大师和领会大师的意图也非常重要,试想一下你有关注过大师的社交号或者社区吗?大师的作品有没有详细研究过?有没有每天坚持用谷歌查看现在世界上任何与架构有关的文章?有没有遇到问题去学习背后的原理?如果你做到了,就说明你已经在架构师的路上了!

还有一点就是工具集,架构师的工具集都是精心对比研究过的,因为在架构师眼里效率是至上的。正如「王牌特工」里师傅带给徒弟的特工「武器库」一样!

富丽饼干:没有完美的架构,只有最适合需求的架构!架构师更要理解需求,理解产品方向和产品经理的思维,一味追求技术上完美的架构,最后很容易做成空中楼阁,百度腾讯都很强调架构师对产品的理解和产品经理的沟通能力。

陈驰远:在技术方面,我觉得架构师首先得了解自己做的业务,业务上有规划,能找到现阶段最适合解决业务上问题的方案,并且对之后的发展有概念和对策。同时,保持对业界技术的关注,知道如何使用新技术解放生产力。永远只有最合适业务的架构!

此外,借力也很关键,架构师得有一定的人脉,遇到自己不擅长的问题,能找到擅长问题的牛人,向他们学习,可以少走很多弯路!

伍星:架构师的成长离不开平台的发展。小平台很难造就优秀架构师,架构师都是在瓶颈和崩溃中成长的!

李帅:基础扎实,多思考,多实践!而且每个人的情况都不太一样,需要因人而异,但最根本的就是对编程的热爱以及对美的思考!(貌似已经提升到哲学的范畴了!)

牛逼的人都是自学成才的,别指望有人能把你教成大牛!(送给所有阅读本文的程序员同学)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!