zoukankan      html  css  js  c++  java
  • 普通程序员通向架构师的最佳路径?

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

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

    普通程序员通向架构师的最佳路径?
    三生社群副总裁,ThinkPHP核心开发者罗飞总结:

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

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

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

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

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

    第一个阶段: 实现

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

    第二个阶段:借鉴

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

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

    第三个阶段:优化

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

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

    经典语录分享:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/oneapm/p/5067075.html
Copyright © 2011-2022 走看看