We don’t hire smart people to tell them what to do. We hire smart people so they can tell us what to do. - Steve Jobs
开学第一周已经结束,直观感觉压力略大,一周上五门课,每门课都有作业,都有due(截止日期),一般截止日期差不多在两三天内。才刚开学就已经感觉快要熬夜写作业了,”My heart is in the work”的校训真是名不虚传。这周聊聊对我来说很有挑战的一类作业:案例分析(Case Study)。
开始我还真奇怪了,来到CMU,为什么不直接编码,搞什么案例分析,今天A教授布置30多页的阅读文章,明天B教授再来20多页,且都得写一些“阅读感想”。瞬间感觉自己不是来学习计算机的,倒是来学习英文阅读和写作的。事实上,如果我刚入软件工程这行,可能满脑子就是:这不是写一个web app就可以解决的问题嘛,撸起袖子抓紧干,然后就是一顿coding,看着自己写的代码能够运行起来,满心成就感(典型手握锤子,看啥都是钉子)。然而事实上并不是这样,软件行业中,需要一个团队共同完成一个项目,现在系统的复杂度也已经远不是一个人能够消化的。且大部分失败的软件项目都不是因为技术本身的原因,怎么协同一个团队成功实现一个好的系统?如何成为我们学院director Tony在Orientation上说的Agent of Change(变革者)?这些问题不是通过编一手好代码能解决的。案例分析恰好是一种前车之鉴的学习方式,把自己放入到曾经发生的场景中,如果遇到这些问题,我们会怎么办?这周刚好有机会读了一下微软在上个世纪80年代开发Windows Office的经历,有趣的一点是,30年前曾经犯过的错误现在依然存在。
这个项目是微软想要开发Windows上的Word,Bill Gates一早就定下战略方向:史上最好的文本处理软件,并要求一年多能发布。钦点核心团队,一人是曾徒手撸过一版Word代码(其他平台),一人是心理学博士,负责UI设计,另一人曾经在业界知名的计算机公司,负责商务。按理说,这是全明星团队啊,每个人单拉出来那都是“大佬”。可是一年多都没有成型的初步产品,技术大佬一直在往这个产品中增加功能,设计之时相当有野心,想要做一个又大又全的现象级产品。
现在很多公司都会有这样的哥们存在,我们把这种工程师叫做10x工程师,所有工程师都视这样的“牛人”为偶像,都存在此人单刀几天搞出一个大新闻的神话。微软早期也有很多这样的人,最后发现这样的“独狼”没办法成为一个好的team player,就开始引入Program Manager来控制开发流程,我靠,这和现在早期的创业公司一摸一样,一开始就是几个人写出一个简单版本,但是随着业务量增加,发现管理越来越混乱,那么就开始引入更多角色,更多流程。
紧接着,Bill Gates发现你们这核心团队不行啊,都一年多还没有什么动静,紧接着临阵换帅,重新组建团队。新任的领导班子看了一下前任留下来的东西,摇了摇头,没有能够复用的,推倒重来。其实我不太确定是真的不能复用,还是新任领导要刷“存在感”, 现在一些公司的新官上任“三把火”,如果不推导前任的东西,那怎么证明我现任的业绩呢。然而这是巨大的资源浪费。
好吧,新任领导班子不得不重新组建团队(个人猜测,老领导带走了一帮手下),加上本来时间已经延期,顶着内部各种压力,不停赶工,bug就少不了。此时感觉测试没有全面介入,测试只是在交付后才全面介入,有些bug不能够被及时发现,后期发现后修复的成本极高,而真到了测试阶段,开发就好像和测试在角力,“我今天解决了X个bug!”“我今天又给你找了X+Y个bug!”。这种没完没了的修复一直持续。这些场景我貌似在之前的工作经历中也看到过,说白了,开发和测试没有建立大局意识,还只是在自己的角色中挣扎。如果测试早点介入开发流程,如果两方人员能够坐下来聊聊如何共同提高代码质量。其实一个组织里面,存在很多互相扯皮的角色,假设没有形成组织共同愿景,那么这种内耗会给公司带来极大成本。好吧,我不得不说,我脑海中又浮现出很多场景。
终于终于,Windows Word发版了,虽然用了5年时间,但是获得一致好评,可以说在商业上,这是一件成功的产品。然而微软对于这次开发流程做了很多数据收集,深刻复盘反思了开发过程中的问题。我想微软之所以能成为一个伟大的公司,也许就是不停的反思和进步,尤其在已经获得了一个市场认可的产品的情况下。
读完这个案例,就好像是在看一场电影,可能会问自己:如果我在当时那个场景下,会做出什么样的选择?比如说:坚决拿掉那个10X工程师,比如说合并测试和开发部门。每一个决定其实都是艰难的,并且很可能这样的场景在我之后的职业生涯中还会上演。那么,那时候的我会做出什么不同的选择?
小甜点
今天有幸参观了CMU Robotics的实验室,有点像进入了一个科幻片的场景,纯软件是一直呆在逻辑世界,而Robotics可能是把逻辑世界带到物理世界。感叹这里牛人云集,同时感谢一学弟带我们参观。