曾经有人问我:为什么程序员要不停地改软件?不能一次写好吗?
这个问题的一个扩大版本是:为什么架构师要不停地改架构?不能一次设计好吗?难道你们改架构只是为了不是闲的没事做,或者满足自己的好奇心?为什么不能直接设计好一个可以支持上亿次访问的架构,这样一次做好不是更省力气?
要回答这个问题,首先要理解一个概念:过度设计。也就是说设计一定是需要和当前业务规模要匹配的,如果设计远超出了当前业务规模,就是过度设计。
这时候又有略知皮毛的人会跳出来说:为什么不可以做成可扩展的架构设计?这样以后即使业务规模扩大,也不需要改架构,而直接增加服务器数量就行了。言外之意,我请一个架构师来,他给我设计好一个架构,然后他就可以下岗了。
对于在大公司打工的架构师来说,确实只要了解大数据高并发如何设计就够了,但对于创业公司来讲,这种可能是不存在的。
作为一个创业公司来讲,不具备那样的物质条件去满足一个超大型架构的设计要求。即使再有钱,在业务模式确定以前,都属于试错阶段,不适宜把大量资金投入基础架构设计,而是应该以合适规模的架构设计满足当前最基本的业务需求。
打一个不太恰当的比方,创业就像是闹革命。最开始闹革命的时候,你可能只是有一个想法,赤手空拳。这时候你的架构师就相当于是你的军火商,你既然要革命,他便负责给你提供武器弹药。但是这时候他不能直接给你一门大炮,大炮固然好,你一个人也背不动啊,最合适的可能是先给你打一把菜刀,你先去试试武功行不行,搞不搞得起来。如果可行,还有人愿意跟着你扩大规模,这时候官府的人来了,人家有枪,于是你的架构师得迅速给你打造好几杆枪,好让你继续把革命进行下去。结果事情出乎意料地顺利,你把一个小村子占领了,人数已经扩大到上千,骡马大牲口都有了,下一步要进攻县城。这时候你的架构师给你提供大炮也不迟。再往后还可以给你供应坦克、飞机甚至原子弹。
那么作为一个架构师来讲,或者挑选架构师的时候,有两个陷阱要避免:一个架构师是只会造原子弹的,虽然很牛,但是不适合在初期跟着你闹革命,显然不适合;另一个架构师是只会打菜刀,多了不会,这种架构师也要避免,因为他没有办法配合你业务的进展。一个合格的适合共同创业的架构师应该是既能打菜刀,又会造原子弹,能够始终帮助公司成长。这种人才有多么难得,可想而知。
同样,对于CEO的考验也是一样,如果只能带十万人的队伍,跟赵括一样纸上谈兵,显然不适合创业。如果能力只够带五个十个人,再多了就搞不定,搞得一塌糊涂,这种人显然也不适合创业。
所以创业难,难就难在可大可小,不论是业务还是技术,都需要既能搞定小的,也能搞定大的,方可创业。