有效地贯彻任何一种基本战略,通常都需全力以赴。
——《竞争战略》
继第一章提出五力模型之后,波特在第二章提出三种基本战略——总成本领先战略、标歧立异战略(differentiation)、目标集聚战略[1]。
没有想出在软件开发上有什么概念可以与成本相对应的,先不考虑第一个战略。后两个战略很好理解,用中国话说就是“另辟蹊径”和“术业有专攻”。
拿我自己来说吧,刚进入公司的时候什么都不懂,人家在拼命赶进度,我也帮不上忙。先是看看文档,读读教科书,百无聊赖之际机会终于来了,公司希望支持调试优化过的代码,这部分工作理论性不强,多数都是琐碎的技术细节,正好适合我这样初来乍到的人熟悉上手。可以说优化过的代码极难调试,也没有什么成型的解决方案,因此对我们的要求也不高,先把框架搭起来,能实现哪些功能就先做着,最强的要求就是调试选项不能影响优化代码的生成,并且生成的代码必须和不加调试选项时完全一样。就这样,在大家的宽容下,我一边看论文啃教科书熟悉基础理论,一边接任务写代码了解特定实现,半年之后可以独立完成分析、实现,一年之后就开始凭一己之力重写整个支持调试的框架。虽说到目前为止支持的功能有限,效果也不理想,但是对我个人来说,获得的东西实在太多了。毫不夸张地说,现在我完全可以胜任关于优化的任务,实际上,我曾经修改过一个模块的算法(与调试支持无关),这个模块被认为是我们的编译器里最复杂的模块之一。
这是一种另辟蹊径,没有从优化入手,而是从调试开始。实际上这是公司为培养新员工而另辟蹊径,也只有在其他人的宽容下才得以进行,有一定的局限性,不易模仿。但是,当我跨过第一道门坎之后,已经可以凭借自己的能力和经验来选择发展路线了。继续做调试,或者转去做优化都是不错的选择,不过我有了个朦胧的想法,打算再另辟蹊径,不过这一次就不能指望别人的宽容了,必须首先说服别人,我要做的工作有多么重要,然后踏踏实实的把东西做出来。如果能够成功地给别人留下一个“说到做到的另辟蹊径者”的形象,那么以后另辟蹊径时,阻力就会小很多。
再说说“术业有专攻”。除了一次被拉壮丁去修改模块算法,我一直在做支持调试优化代码的工作,前前后后一年多时间。随着功能不断增多,局势发生了微妙的变化。调试不能破坏优化,但优化也不能破坏已经取得了的调试成果,为此还专门做了一套测试集。如果有些同事对支持调试不感兴趣,或者没时间做深入的了解,他们在自己的任务接近完成的时候,会邀请像我这样的人对他们的工作做一番检查(review),确保不会破坏什么。当然,测试集是最后一道关卡,如果测试通不过,也要找我们帮忙调试。这样,我就在一个相对狭窄的领域里树立了威信、建立起壁垒,从而减少了竞争威胁。
波特在这一章的末尾提到,任何战略都是有风险的,详细内容这里不再赘述,总结成八个字——审时度势、与时俱进。
说实话,这三个词翻译得有点别扭。