阅读云时代架构中《牛逼的架构师是怎么练成的?》有感
当Java程序员们积累了一定的经验后,很多人都想转型往架构师方向发展。但是,殊不知架构师和程序员的差别有多大,在架构师眼中,程序员就是一些自以为水平很高但其实没什么作用并且还非常廉价的劳动力。在网上浏览相关东西,网上的问题都是下面这样:
- 程序员和架构师的区别到底在哪里?
- 架构师到底比程序员厉害在哪里?
- 为什么我就不能成为一个架构师?
在我看来,程序员和架构师就相当于房屋的设计者和建造者的关系。首先,身为一个设计者,他一定得对房屋的建设等有很深刻的了解,包括房屋如何建造,如何牢固等等,这些建造者也都知道;其次,设计者相对建造者已经有了一个明显的质量的改变。建造者只需根据图纸一步一步实现就可以完成自己的工作,但设计者就是设计图纸的人,他不仅仅不需要干这些苦力活,而且他所挣的钱比建造者挣的钱高很多。此时,很多建造者也会问,为什么我们在这累死累活的干活,整天没日没夜的埋头工作,就挣这么一点钱?为什么那个人不干活,就随便画个图纸就能挣这么多的钱?
答案是很明显的。设计者(架构师)相当于整个工程的灵魂。他的存在掌握了整个工程的进度,并且能基本确定工程所能达到的质量。通过查询网上的博客等,我大致总结了一下架构师和普通程序员的区别。
1、勇于去研究你不懂的代码
现在人们很容易接触到优秀的开源代码资源,我们可以很方便的下载并查看源代码,很多人在碰到自己并不熟悉的代码的时候,并不愿意去花费时间去研究这些其实非常有用的代码,如果我们经常去研究自己没有接触过的代码,你就会接触到越来越多不同的代码结构和设计模式,从而当你自己需要设计代码的时候,你就能非常容易的就确定需要使用什么结构和什么设计模式等。
2、精通代码调试
很多人在写代码的过程中,经常会遇到的问题就是:为什么输出的不对呢?为什么运行的结果不是我想要的呢?
拿我来说,当自己编程到兴奋的时候,并不会去仔细研究每一行代码到底是不是写的非常严谨,先将这一模块写完然后直接进行单元测试。我相信很多人和我一样,几乎所有的人写代码都不是一遍就能写好的,但是一般很厉害的大牛们往往能很快定位代码的错误并很好地修复。他们的流程往往是这样的:1)先猜测一下为什么会出现这个错误 2)猜测一下哪些地方可能会导致这个错误 3)依次找到这些地方,然后使用方法例如断点调试、使用输出语句等判断每一步是否执行正确。这样就能很快确定代码的出错位置在哪里,从而很快的解决这些问题。
3、系统性的思考方式
当你在写代码时,你很容易就认为只要你按照需求实现了指定的功能,你的代码就算写完了。但是这其实知识冰山一角。任何没有发布到生产环境的代码都不会产生任何价值。如果想写出真正有影响力的代码,你需要从整个系统去理解你的工作:
你的代码和其他人写的代码在功能上是什么关系?
你有没有好好测试你的代码?或者其他人是否很容易测试你的代码?
为了部署你的代码,线上生产环境的代码是不是需要改动?
新的代码会不会影响到已经运行的代码?
在新的功能下,你的目标用户的行为是不是你期望的?
你的代码有没有产生商业上的影响?
结束语:从程序员到架构师是一种境界的提升,而且要想达到这种境界并不是一天两天所能实现的,需要经过长期的经验积累加上自己的沉淀和消化,组装成自己的一座经验工厂,这也才是架构师的第一步。所以,想达到架构师的境界还是得多加锻炼。