系统粉 > IT资讯 > 业界资讯

程序员进阶:怎么成为一个软件架构师?

发布时间:2017-04-24    浏览数:

架构师是个很神圣的词。盖茨,世界首富。微软,世界最大最富有的软件公司。盖茨是微软的首席架构师。好多程序员流口水,一听某人是架构师,就两眼发亮,比技术总监的头衔还要厉害。

第一阶段是新手期

新手时期的程序员对需求和应用环境的掌控能力还不强,但却往往信心爆棚地认为自己写的代码有多么优雅高效。当问题出现时,大多数人的反应就是:“怎么可能!在我的机器上运行的好好的!”。不管看了多少书,学习了多么高效的算法,实际的工作中需求和环境始终是变化万端的。其实我也很不明白为什么那么多的技术类书籍往往都带有或多或少的炒作成份,往往夸大某方面的优势,而对缺点却往往一带而过,同时,相对思想算法讲解、技术介绍类的书籍,针对具体项目研发实例进行技术选型讲解的书真的少之又少,或许这也从侧面反应了写书人很多,真正做研究的却很少吧。

第二阶段是中级程序员阶段

这个阶段的程序员对技术、和工具的选择已经审慎了很多,可以根据具体的需求来选择需要采用的技术,可以写出详细的需求调研报告并提出设计方案,优点、缺点分析得清晰明了。在应用层面也有较强的全局理解力,在团队中也具有相当的协作能力,因此具备较强的解决问题的能力。

第三阶段是高级程序员/分析师/架构师阶段

进入这个阶段的前提是多年的工作经验,广阔的知识面和对系统底层到高层的全面认识,已经使其进入了无语言无工具的层次。也就是能任何清楚地感知每种编程语言的优劣、使用范围、编码禁忌,对一个大型工程能有最全面的了解,在选择语言和确定技术方案的时候不会被自己对语言或技术工具的偏好(或者根本已经无所偏好)所影响,真正明白了其实别管是神马语言、神马技术,归根到底咱们的对象还不是CPU、内存、硬盘和网络,该做的事情一件都不能少,所谓的技术框架是对初级程序员用的,真正高级了不研究个清楚透彻都不敢让你进来。即使对同一种语言,在不同的操作系统中,如Visual C++和Unix C、AIX XLC、GNU G++等等的区别,以及不同版本之间的区别也了如指掌。

那么现在究竟该做些什么呢?

1、主动思考、实践

保持对架构的好奇心,主动思考一些问题,比如微博的更新是推还是拉,双11的秒杀是如何实现的。抱着问题去看书,查资料会有更深的了解。平时应该看一些一线互联网公司的架构实践,如有必要,可构建类似的业务场景,在本地试验。

程序员进阶:怎么成为一个软件架构师?(1)

2、担当与抽象思维

在一个项目里面,最有可能成为架构师的技术人员,通常是那个最有担当的人。一个技术难题摆在大家面前的时候,谁都不会,但是这个人主动承担下来,不仅让领导认可你的态度,一旦你经常挑战你不会的东西,并且挑战成功,就会形成良性循环,以后就会形成这样的共识,再难的问题交给你也能搞定,因为你已经具备了这样的直觉和经验。看看身边有没有这样的人,这个人其实已经有架构师的潜质了,所以说,要做为架构师一定要让自己不舒服,要经常挑战对自己有难度的技术和知识,而不是固守着已经熟悉的领域。

程序员进阶:怎么成为一个软件架构师?(2)

3、架构的本质是打造骨架结构

架构这个词最早出自建筑,其在建筑行业中的重要性不言而喻。但来到软件行业,很多人会觉得重要性没那么显著了,甚至对架构师这个职称的必要性都有所怀疑。其实出现这个疑问不难理解,因为现在很多架构师已经不再是做技术、业务架构相关的事情了,更偏向于管理协调、团队组织这些事情,其实包括前段时间一直争吵的CTO该不该写代码,也是个类似问题:某个职称的本职工作是什么?

架构师本质上还是要为系统建立钢混架构,概念模型、数据模型、系统上下游、技术栈、部署设计、MVP,这些都是架构师的职责。尤其是数据模型和MVP,这是很多架构师不太去做的,但却是钢混架构中的钢筋水泥,奠定了下限,也注定了上限。

4、方法论都是特定场景下的沉淀

做架构设计的方法也不少,关键是活学活用,比如4+1,比如togaf,还有DDD,ADMEMS这些。但是无论哪个方法论,都是有其特定的上下文场景的,跳出这个场景,也许就不如其他的合适了,比如DDD,非常适合有着复杂的分层架构与职责划分,对于复用性要求也很高的系统设计,如果只是简单的CRUD,那DDD反而不合适了。

所以切勿硬搬方法论,就像以前我们会习惯性的硬搬设计模式一样,多总结,找到适合自己、适合团队、适合平台的一套方法来做设计,同时切勿把架构设计纯粹做成设计,空谈误国,如何落地才是最重要的,这是架构师在方法论的基础上最需要注意的。

还有一些讲架构的书籍,其实大家也可以多关注,比如《架构之美》,《架构即未来》,《微服务设计》,《领域驱动设计》。

程序员进阶:怎么成为一个软件架构师?(3)

我和大牛之间有多少距离?

跟很多人一样,刚毕业时我觉得作为程序员,只要努力,加上少许天赋便可以获得一些成绩。

工作一段时间后,对自己和其他人的认识也越来越清晰,逐渐的发现程序员之间的差距或许比人和猴子之间的差距还大,接受这个事实这让我郁闷了很久。

再过一段时间,发现自己已经能够客观的评价自己的能力,也意识到了距离并不是那么重要,只要想办法跑的更快,就足够了。

另外还有一点可以通过自身的学习来获取一大进步。

分享给超过5万的程序员朋友下载,这次我把所有干货重新梳理精简,免费分享给大家 。

程序员进阶:怎么成为一个软件架构师?(4)

究竟有哪些干货呢?先给你们一个目录:

程序员进阶:怎么成为一个软件架构师?(5)

免费领取资料,查看We Chat “程序员精选”。

程序员工作十年总结了:学习新技术的8个建议

上一篇:三星S8推出Win 10版本?这个估计很靠谱 下一篇:AMD发布新Radeon Pro Duo:双北极星+32GB显存

相关资讯

最新热门应用

电脑问答