3. 架构设计的好坏只取决于架构师的能力, 和开发团队无关
经常会听到这样的抱怨,我做出的架构设计,下面的人能力不够,无法实现。这个架构是XX推荐的,为啥做下来问题会这么多? 我们的架构师只会说,其实水平不行,做出来的东西很难用等等。
其实认同我说的1的人应该已经明白,架构既然是渐进验证的,那么架构的可行性就是一个必须考虑的问题。架构师需要熟悉自己的团队成员的构成和技术特点,在此基础上对设计做权衡,再好再优秀的架构也要取决于团队成员的理解能力和执行能力,这点对很多人来说居然完全不理解。
和现在的各路有志青年一样,我也曾经努力奋斗要做一个架构师,我在01年参加了sun的架构师认证考试。那时候的SCEA考试并没有什么参考资料和贩卖答案。各路精英只能在一个国外论坛上泡着交流经验,经常看到某某高分过了的消息,又看到某某平常表现不错,又差了多少分没过云云。
我看了很多书,也颇有些项目经验,通过成绩却一般,80分左右,所以很想知道别人的设计是如何做的,什么样的设计可以得到更高的分。 经过协商,我和一个挪威人,一个德国人(有20年的开发经验)交换了通过考试的作业。让我震惊的是德国人设计的粒度,他的架构设计几乎想日本人做的详细设计一样,只要简单的翻译工作就已经可以run,即便是对德国人的严谨细致早有所闻,我还是难以想象这是一个小项目的架构设计。 和德国人做了交流,他说他必须做得这么细,否则他的团队成员理解会产生偏差, face to face的交流也不能弥补这个问题,因为他的小伙子不是都足够聪明。
这让我第一次意识到,架构师的工作的一个中心,并不是直接面对客户,面对老板而是面对技术团队成员。其后的工作中我又多次碰到类似的问题, 同样的需求,一个架构师面对不同的团队成员的时候,很可能作出截然相反的设计。架构师必须针对团队成员的特点,认真考虑团队成员的技术能力和学习能力,有针对性的选择和平衡,甚至是牺牲,才能保证架构的可行性。
在一个理想的技术团队,架构师固然可以只关心技术,但是这样的团队现实中存在的概率有多少? 就如death to march 2nd中所说,现实的软件开发团队,大部分都要面对一个资源短缺问题,
不能说服老板给你足够的资源,那么只能选择充分使用现有的资源,菜刀也是刀,对不对。
我不知道有多少项目架构师脱离开发团队能获得真正的成功,一般来说,强调架构设计的项目都是中等以上规模的项目,人数一般都会超过10个以上,对项目管理,对技术人员有着更高的要求。不少公司都乐意高薪聘请外援进行架构设计来解决问题,但是结果都不理想,原因即如此。
我非正式的咨询过2个项目,架构设计都由大堆钱的工程师完成,pm哭丧着脸跟我抱怨,我们的架构没问题,都是大堆钱做的, 国外啥啥都这么用,但是我们的程序员不行,无法很好的将架构实现。
姑且不谈大堆钱为了推销自己的产品加塞的东西,单就这种丝毫不考虑团队成员构成,千人一面的拷贝设计,都已经注定成功只能是偶然了。这样的架构,又如何说没问题?一个架构师最低限度的责任,既是将这种大众face裁剪调整到适合自己团队的面孔,交钥匙的做法是没戏的。我只能很无奈的告诉他们,这样复杂的过度设计,如果不做裁剪,即便我给你找到合适的程序员,你也无法承担时间上的成本,何况性能始终都会是个大问题。
不少中小公司的同胞们敬仰着大堆钱公司,指望他们能解决根本的问题,殊不知,某种意义上,架构设计的工作,是没法外包的,你可以咨询,可以顾问,但是干活是另外一回事。这点和互联网应用什么的,还是挺大差别的。