架构感悟

来自汇量科技的蔡超的分享。

一、「提出问题」难于「解决问题」

我们不要仅仅去做一个解决问题的人,也要做一个提出问题的人,主动去思考什么样的问题、需求,能让我们的业务更加先进。

这是爱因斯坦说过的一段话,大致意思是:我们解决一个问题的时候,常常只需要用到一些数学以及实验的能力就可以了,但提出一个新的问题,以一种新的角度去看待旧的问题,是需要用到我们的创造力才能够做到的,而这恰恰是真正推动科学进步的一部分。

《设计原本》的作者,也曾说到,设计最难的部分就是去决定我们要设计什么。

二、决定「不做什么」比「要做什么」更难

架构是一种权衡和平衡,要懂得说不。在架构伊始,就要去确立一些做事的原则,比如数据一致性大于其他,尽早发布基础功能版本优先于发布完善功能产品。当出现矛盾的时候,我们就可以利用这些原则来进行取舍。

三、非功能性需求决定架构

一个好的架构,其实是由非功能性需求决定的,而不是由功能性需求决定的。你会发现,一个功能可以有无数的架构方案来实现,但你为什么最终选择了某个方案,其实是由非功能性需求来进行筛选的。

非功能性需求,包括性能、伸缩性、可扩展性、可维护性等,甚至还包括了你的团队结构,你团队的技术水平,你对发布周期的要求等等,通过所有这些需求来筛选可使用的方案,最终找到一个合适的架构。

四、「简单」并不容易

简单有时候比复杂更难,你需要对问题或者事物进行深入研究,才能找到简单的方法。简单中蕴含着巧妙,比如布隆过滤器,就是一个十分简单的高效重复数据过滤算法,它非常巧妙地解决了这个问题。

如果你想把一个事情做简单,你需要做很多深入的工作,比如对于架构的简化,很大程度上来自于我们对于技术、开发过程,以及不同业务场景的深入理解,而不仅仅是这个架构写起来好不好写。

五、永远不要停止编码

只有实际去编写代码,才不会设计一些不切实际的架构设计,会使得架构更加容易落地。

六、风险优先

架构设计最主要的功能就是转化、降低、避免整个开发过程中的风险。而架构师很大的一个职责就是在早期识别出系统可能存在的风险,并通过你的设计来转换它、去除它。

七、从「问题」开始,而不是「技术」

要从实际出发,从需求出发,从用户的问题出发,而不要从技术出发,但在实际工作中,我们却常常不自觉地忽略这一点。就像手里有了一把锤子,看到什么都是钉子。

我们对技术的热情可能会让事情变得复杂,徒增烦恼,能够解决问题的技术就是好技术。

八、过度繁忙是你落后

干了几年倒对公司越来越“忠诚”了。实际情况是,在一个公司没日没夜地干了几年,没有留一点学习时间给自己,忙碌的工作导致他没有时间更新知识,再想回到市场上的时候,却发现自己已经落伍了,连跳槽的能力和勇气都失去了。

在这个高速发展的时代,如果因为过度忙碌,导致你没有时间学习和更新自己的知识,那必然会让你落后。

短期的加班可以理解,长期的加班往往就是低效的表现,你要思考去做出改变,去学习更多的知识,然后再进行实践,这样才能跳出低效循环。

健身的时候,光靠锻炼是不行的,营养的补充和锻炼同样重要,个人技术成长也是如此,锻炼就好像实践,营养就好像学习。人们常说 practice makes you perfect,但光practice是不行的,还需要坚持学习。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021 John Doe
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信