.. Kenneth Lee 版权所有 2017-2020
:Authors: Kenneth Lee :Version: 1.0
从用户功能开始构架系统框架
本文讨论一下从用户功能开始做系统构架的细节问题。
我在前面有一篇博客讨论了需要在开源项目上制造真空,有人在下面说,这得这个项目牛 逼才行。我们这里就来讨论一下怎么样才能让“项目牛逼”。
一个软件项目怎么样才会牛逼?良好的架构?优秀的算法?优雅的代码组织?不是的,一 个软件项目牛逼是因为它有用,并且把它的竞争对手都逼死了,它就牛逼了。
所以,研究一个项目是否有前途,第一研究它是否必须的,第二研究它如何保证它相对别 人的优势。这是要守(关于“守”的概念,参考这里)的第一级要素。比如用OpenSSL加密数 据,用Libz压缩数据,这是个刚性要求,你做了一个这样的库,它就具有生存的基础。但 实现一个优雅的,计算把《道德经》进行SHA-1加密的库,无论做成什么样子,它都不会牛 逼起来。
所以,牛逼,就是有需求驱动你(有人,足够的人,要用你),你比别人好,你就没有办 法不牛逼。所以,剩下的问题就是怎么控制你的设计比别人有竞争力。在架构设计上,保 证竞争力,很大程度上是如何对资源进行控制。
其实,不但开源项目需要制造真空,所有的架构设计都是在制造真空。作为架构师,你经 常需要体验那种从一两个人开始项目,然后慢慢扩展到几十到上百人的规模的经验。我在 这个过程中的体会是,你觉得你一开始有满满的自由度,实际上很快你就要面对激烈的冲 刷。人力规模一上来,你代码都看不过来,你前期的所有准备,都是怎么防住这些冲击。 如果你没有很好的控制逻辑,这些快速增加的代码量,会很轻松冲跨你当初简单的设计, 让你的理想落空。而缺乏控制的洪水,是形成不了力量的,这样的项目就不会牛逼。
代码不来自架构师,代码来自资源投入,大家都在拼资源,为什么你的资源比别人高效? 那就是你的资源都被用到刀刃上了。