为什么你总成为不了架构师?
背景:
今天接到一个哥们儿的电话,说,很郁闷,想和我聊聊。
我问,有啥郁闷的事情啊,说来听听。
他说,最近很郁闷,我本来今年的计划是成为一个架构师,但是,无论如何努力,都不知道为什么,感觉希望很渺茫...
这哥们儿其实是一个很努力的家伙,曾经是我Team里技术最好的程序员,对一个技术不钻明白不罢休的那种程序员。
我给他电话里说了说我一直想说,但一直都没有时间说的话,那就是:为什么你总是成为不了架构师?
一、什么是架构师?
其实架构师的概念并不是从程序开发专业一诞生就有的职位概念,架构师(Software Architect)仅仅是最近几年提出来的一个职位,貌似Software Architect的概念是IBM提出来的。然而,架构是什么样的一个职位,就像云计算一样,看起来很美,但是,每个人都有自己的理解。
很多人认为,架构师就是系统分析师,是拿到系统需求进行分析的人,错!如果系统只是系统分析,那么架构设计谁来弄?
有人认为架构师就是架构设计的人,画画UML,写一写文档之类的人,错!画UML就是设计吗?画图的人有了,设计的人是谁?
还有人认为架构师是从属于项目经理,只管设计,而没有任何权利的人,错!如果设计的决策权交给项目经理,那么这个设计是有分量的吗?
架构师是什么?
我们先不回答,我们先来看看在架构师概念出现前的一些职位提法。
在架构师概念出现前,微软是我们大多数软件企业的研发机构设置的样板,当时比较流行的职位搭配是——技术经理+项目经理。
ok,当然也有很多企业实际上,技术经理和项目经理是一个人。
也就是大多数企业当时是采用的开发主管负责制,即:技术+团队+项目,的负责人。
当我们把“项目经理”剥离出开发,仅仅对项目进度以及为项目推进而排除各项外部障碍时,其实负责开发技术和开发团队的人就是“技术经理”了。
如果,我告诉你,之前所谓的技术经理其实就现在的架构师,可能我们大家就更容易理解了。
没错,就是这样的,如果“架构师”的设计失去了“发言权”、“技术方向的决策权”、“团队人员的开发资源调配权”,那么我们可以想见,这个设计是多么的无力!!
因此,什么是架构师?
架构师是具有技术发言权,方向决策权,和团队人员开发资源调配权的开发团队的TeamLear,也是这个程序的设计者,当然他是这个程序团队的灵魂!!
因此,不想当Teamleader的程序员,绝对不可能成为真正意义上的架构师!
同时,不是Teamleader的架构师,也是一个被架空的,苍白无力的架构师!
二、如何才能用架构师的思想去思考?
架构师,如果只是把需求变成程序,那就不是架构师,那是叫“照着葫芦画瓢”。
架构师,如果只是精通各种框架,比如S\S\H之类的技术,只是利用S\S\H之类的技术去描述用户提出的需求,那是叫“用S\S\H画瓢”。
ok,不卖关子,那么怎么思考就是架构师应该去思考的方法?
首先告诉你,进行没有设计的架构设计叫架构师吗?
这种情况在软件行业内太普遍了!!
为什么没有设计?
因为,很多人都不懂什么叫设计!!
给大家一个概念,什么是设计?——
设计因未来而存在!
——钟声 2010年6月
没有面向未来的,只是面向过去的,那绝对不是设计,那绝对只是模仿!!
设计因未来而存在!!
即,没有创新,就没有设计!!
即,没有改变,就没有设计!!
用进化论去思考你的设计!!
让你的设计超越一切理论!!
设计只是记忆的载体而不是记忆的全部!!
其实程序员是艺术家,而不是建筑工人!!
那么,为什么你总成为不了架构师?
不要仅仅从技术的角度出发一味的按照自己理所当然的方向去努力,要学会用设计的思想思考,并努力让你自己成为有分量的人!!
如果你想学习 Java 工程化、高性能及分布式、高性能、深入浅出。性能调优、Spring,MyBatis,Netty 源码分析和大数据等知识点可以来找我。
而现在我就有一个平台可以提供给你们学习,让你在实践中积累经验掌握原理。主要方向是 JAVA 架构师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进 BAT 但是有担心面试不过的,可以加我的 Java 架构进阶群:582100479
工作一到五年的程序员朋友面对目前的技术无从下手,感到很迷茫可以加群744677563,里面有阿里Java高级大牛直播讲解知识点,分享知识,课程内容都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何成为高级java程序员
给一个刚出社会的程序员新生一个建议,想成为一个优秀的程序员,高级程序员,不能眼高手低,不能认为开发新项目,技术研发才学到东西,不能看不起维护系统,不要以为自己懂的技术越多自认为自己很牛叉。假如你忽略了一个问题那么你永远成为不了优秀的程序员、高级程序员,那就是系统优化。 一、JAVA。要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经了。 二、设计模式。其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。...
- 下一篇
成为一名Java高级工程师你需要学什么
宏观上: 1.技术广度方面 至少要精通多门开源技术吧,研究过struts\spring等的源码。 2.项目经验方面 从头到尾跟过几个大项目,头是指需求阶段,包括需求调研。 尾是指上线交付之后,包括维护阶段。 3.架构经验方面 有过分布式系统的架构和开发经验。对于跨系统的结构优化,数据存储的性能指标等有丰富经验。什么缓存啊、数据库的垂直切分什么的,业务的抽象和水平拆分啊,这些应该都轻车熟路吧。 4.行业领域方面 最起码得精通一到两门业务吧,所谓精通,就是比如做金融证券业务的,至少等当半个经融分析师。做电力业务的,至少等当半个电力工程师。 5.个人修为 有自己一些独到的见解,不会人云亦云啦。 微观上: 1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该十分了解UML,尤其是class,object,interaction以及statediagrams。 2.你需要学习java语言的基础知识以及它的核心类库(collections,serialization,streams,networking, multithreading,refle...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主