前言
交付卓越
在软件行业中,我们把设计、打造、发布一款符合市场需求的软件称为交付(shipping)。软件交付可不是打打包,举办个发布仪式那么简单。它要求你找到合适的产品,克服过程中的复杂与多变,并快速完成发布!这个世纪真没生出多少新工种,交付却是其中之一。也许你会质疑,交付不就是“管理”嘛,哪个软件项目没有一个管理者呢。确实,哪里会没有高谈阔论的管理者呢!就算是原始人搬运猛犸骨头,后面都站着一批讨论库存管理的酋长们呢。管理太泛滥了,各种理论层出不穷,有的甚至没有任何实践依据,所以我宁愿使用“交付”这个词。交付这一工作很新,我们呱呱坠地时它还没有出现,甚至等到我们的孩子出生时它也不过刚在角落里长出嫩芽,在学校里更不可能学到它了。
尽管时日尚短,交付却已展现出非凡的价值。它简直是一剂灵丹妙药。它能解决钱的问题,因为投资人给你追加投资的前提是你取得了好结果;它能解决客户的问题,因为交付能力的强弱决定了你是否能推出客户需要的功能和补丁;它能解决团队的问题,因为没有什么比取得进展更能让团队士气大振!所以,如果你想追逐名望、财富、幸福感,那么,交付出卓越的软件,你将赢得一切。
只要精通交付,你就不用担心软件商业化会失败,也不用害怕与大公司展开竞争,因为你的市场嗅觉会更加灵敏,行动更加迅捷!倘若你因不懂交付而导致延期、发布产品时门庭冷落或苦心构建的产品无人问津,你的团队会变得急躁,你的客户会直接写信给你的大老板投诉,而你最好的结局是晋升无望,最坏的则是和你的团队一起卷铺盖走人,你们也终于可以有时间琢磨下简历或者亲自动手洗车了。
所以,精通交付则前途似锦!但要让团队精通交付可不是件简单的事情,不过这也正是你读此书的原因吧!
这本书将告诉你如何快速精通交付,就好比麦肯锡的“迷你MBA”培训。这家全球最有名、最昂贵、最顶级的管理咨询公司每年都会招一批科学博士,进行为期两周的称为“迷你MBA”的培训,培训完成后这些科学博士通常比那些受过两年培训的MBA们还要出色。本书将提供给你一个同样简单、精炼的方法,让你轻松完成交付或者更好地理解团队主管的工作。
为什么我想要写这本书呢?当我初入这个领域时,没有前人指路,只能筚路蓝缕,以启山林。后来我发现很多产品经理、测试主管、工程经理以及其他各式各样的团队主管们也像我当初一样迷茫,经受着同样的困扰。但幸运的是,在我苦闷之时我得以与一些“伟大的老师”相伴,如达特茅斯学院、亚马逊公司、谷歌公司,以及我那些错误的商业投资等,我从中学到了很多经验。我想把这些经验总结出来并分享给同行们。
我的第一个老师是我自己开的公司。我那时非常狂妄,以为会写软件就够了,定义最小可行产品、管理项目、迭代、发布、市场推广等其他与软件交付相关的事情都不是问题。我因此得到了很多有价值的教训,也知道了狂妄的代价。我后来又加入了一家创业公司做CTO并耗费数年时间在业务扩张上。在这个过程中我得到了一些新的教训并重蹈了狂妄的覆辙。羞愧之下,我只身前往达特茅斯学院的塞耶工程学院和塔克商学院学习了一段时间,并取得了工程管理硕士学位。
离开达特茅斯后,我加入亚马逊担任技术产品开发经理和工程经理(所谓的双比萨团队主管)。在客户评论、个性化、反欺诈基础建设等项目中,我亲眼目睹了杰夫·贝索斯和他的副手们是如何工作的,并试着效仿商界中一些最佳工作方法。
后来我加入谷歌担任高级产品经理。我花了5年多的时间研究可扩容性、商业决策以及软件团队内部的人际动力学。我将Google Pack发展壮大,把Google Update服务应用到数十款产品中,帮助构建采用移动同步服务的Google Apps项目、Microsoft Outlook连接器和数据导入工具。我还推出了Google创新多路视频通信产品,现在它是Google Hangouts的一个功能。我甚至为Google Maps工作过一段时间。我见证了公司的成长和改变,真切感受到了产品因何成功,却又因何失败。这为我进一步完善软件交付方法提供了大量经验。
关于交付,你可以从亚马逊、谷歌的那些杰出的业务主管那里学到很多。但请切记,交付是个新事物,与此配套的技术、流程、技巧等都极度缺乏。微软倒是有一些软件交付的经验,不过它的方法都是从开发大型、耐用的软件过程中总结出来的,确切来说,就是从开发占据业界统治地位的Windows的过程中总结出来的。不过互联网兴起后,那种三年开发周期、通过软盘售卖的老方式已经失去了价值。快速迭代、部署、互联网服务托管已经变成了主流。工程师们越来越关心如何搭建一个可以快速响应的应用开发框架,如何进行可用性的研究,以及如何构建一个更好的Scrum这样的过程框架。但是关于交付的知识太少了,亚马逊和谷歌的成功经验在外面流传的也不多,我们更多时候只能摸着石头过河,一不小心就可能误入歧途。
这本书将涵盖我从工作中学到的、提炼出来的关于交付各阶段的较为完备的知识体系。一旦走上了软件交付之路,你将面临产品、方案、项目和工程管理各方面的挑战。因为软件交付不只是如何管理项目,也不只是如何提升开发效率,你必须具备更全面的技能。你既要加深对技术的理解,又要贡献更好的产品创意,更重要的是,整个过程中,你需要展现出你强有力的商业洞察力。你也许要做所有工作,包括要求工程师编写测试用例,或者用Photoshop绘制产品原型。这个工作要求你追求极致,只要你不惧挑战,它终将成为你的舞台!
换个角度说,软件交付的过程一定会伴随痛苦、混乱、艰辛。直到游刃有余时,你才能感受到强烈的成就感。这好比在砾石球道上打高尔夫,如果你是新手,一杆挥毕,球不知飞到哪里。球童被你折磨崩溃了,你也不能幸免,整日在烈日下寻找那个正绝望地躺在某个石头底下的小球。但如果你是高手,嘿,连续漂亮的击球后你轻而易举地站到了果岭之上,环顾四周一群新手正汗流浃背地在砾石堆里寻找着他们那个不起眼的球,这一刻你一定知道这意味着什么,这意味着荣耀!
本书将分为两大部分来帮助你精通软件交付。第一部分是关于那些在亚马逊和谷歌做得最好的团队是如何交付软件的。我按照项目开始到发布的顺序来安排章节,包括用户需求研究、用户体验设计、项目管理、测试、发布等。第二部分是关于团队主管带领团队成功交付所需要的技术积累、最佳实践和技能。第一部分建议逐章阅读,按照软件交付的过程一步步来,第二部分则可按任意顺序阅读。你还可以根据工作需要针对性地阅读某些章节。
本书所提供的工具和建议都是通用的、方向性的。美国西部传奇警长怀亚特·厄普为了能更快开枪,会卸掉柯尔特左轮手枪的安全锁,磨平击锤凸轮。你也可以将这些工具和建议抽丝剥茧以彻底为你所用。如果你想看到对软件策略的深入分析,不好意思,这本书不是你想要的。但如果你想找一个经过实践检验、学习起来简单且能带领你的团队走向成功的方法,那么请继续读下去吧!