99年读大学时选计算机专业,一个很简单的借口,不需要在毕业前考计算机等级证书。随后发现计算机等级证书太虚了,骗人钱财,误人子弟,现在类似的有北大青鸟等货色。大二时对成绩突然失去兴趣,投入竞赛,希望运气好获奖,可以保研,不过运气不错,竞赛那天是我生日,后来拿了国家一等奖,算是没白干。从大二开始做了几个小项目,积累了许多编程经验,博览大量的技术经典书籍,不过还是对未来充满迷茫。学校鼓励毕设在校外做,因为学校没地方,所以大四第二学期就直接来浙大做毕设,开始接触并从事J2EE的第一个项目。呵呵,运气好,毕业后的暑假,派到北京2个月,免费逛了一把北京,拿着作废的学生证用了几次,有时比同行的几个师兄的研究生证都管用,因为半价门票对研究生无效。在北京有快乐,也有悲伤,这也是我一直不愿意回到北京的原因。
研究生第一学期在课程和悲伤情绪下就晕晕的过了,分析了VOCAL的开源项目,对SIP结合课程完成了一次分析,其他确实没做什么太多的事。第二学期也没心思去申请到大公司去实习,倒是暑假赚了一点外快,补充了业已干瘪的钱包,总算可以继续舒服下去。期间做了一些原有J2EE系统再修改包装实施的项目,直到实验室要开发中间件应用服务期,开放分析JBOSS源码,后续编码接近毕业。毕业设计从一个刚从3大公司实习回来的师兄那里得到启发,做了P2Pstreaming的课题,想法和架构都设计的不错,苦于无从实现。不过SCI的文章总算顺便发了,也做了一次国际会议的志愿工作人员。毕业了,大家开始忙于找工作,该找什么样的工作呢?找一份可以解决我当时困惑的工作,协议栈开发成了选择,不过钱就无所谓了,现在还经得起艰苦的生活。
转眼间一年时间过去了,完整开发了2个协议栈,需求到测试,还有维护。终于豁然开朗,以前做流媒体系统的最大障碍解除了,开发任意协议成了非常轻松的一件事,不过损失不小,1年5w。期间接触到数是个不同层次的协议,从链路层一直到应用层。于是提议协议栈的工业化开发方式,加快协议栈开发进度、降低协议栈开发难度。无奈,上层经理昏庸,意识不到根本性的问题,不予采纳,更惊人的一句话,现在开发完了,没事干了,干别的去。举一个典型案例,一个l2tp协议栈,前面一个人干了一年也没完成编码,我3个月重写代码加测试都结束了,这意味着公司白白浪费了1人/年的成本近7w元,浪费真是何等之高。前面的l2tp是先重构,重构到一定程度再重写,因为需要每天的回归测试;后面重新开发PPP协议时,主要时间花在了协议与其他上下层系统接口部分的确定部分,总时间不过也3个月。现在要开发IKEv2,当然不会超过3个月,甚至时间更少,因为开发PPP时许多协议栈处理的核心逻辑已经设计的十分清楚了,现在无非是搞清需求和接口罢了。
公司要调职,遭到了我的反对,因为现在是对系统开发架构进行总结和改进的时候了,否则后患无穷,100w行代码交给20个人不到,如何维护。再者,那边的头是在公司十年,无一个开发成功的项目,人无能也罢了,出来害人就不对了。所以号称工作十年的经理认为没有为他升职尽力,而排挤我,于是乎,对他有了本质性的认识,笑面虎。
其实,从事职业最关键的地方是什么,不仅仅是你做了多少东西,而是你能出有限的几个东西中总结出什么,做的再多,而无总结,还不如做了一件就总结出很多东西的事。
所以,目前最缺的人是什么,技术架构师,不仅仅是技术和架构设计经验,更重要的是不要进行重复性的智力劳动。就像我总结出的通讯协议处理的一些理念,很多年前都已有人阐述,为什么到今天还是没什么人了解,必须在实践中重新总结,这个浪费比代码不能重用大得多,损失是无法估量的。
我提出一种技术架构师的职业理念——通用建模。每做一件事或者两件事,能从中总结出一系列类似的通用模型,远比设计模式这种太虚的东西有效,一个技术架构师能从积累的模型中获取更大的可持续发展空间。
一个技术架构师,首先是一个资深的程序员,我花了7年时间,也就是上学的时间,获得了丰富的技术积累;其次,一个技术架构师能做什么,一个是提供软件开发的可持续发展,另一个是减少开发和维护的成本,提高软件质量,就像传统企业应用信息系统节省物流成本一样。软件开发节省成本需要的是技术架构师和模型。
作为创业的初衷,一个技术架构师咨询公司会在不久的将来成立,这个会是软件开发的一个根本性变革,要让软件开发的新的理论和实践由中国原创,不再落后于世界。