大约不到20年前,我处在人生十字路口上。我的第二家公司当时已经花了5年时间为出版行业打造专业图表制作软件,不过在那互联网即将大热的年代,出版商们已经逐渐向互联网领域转移,我们的业务渐渐枯竭。那时候我已经是一个有 13 年编程工作经验,而且同时有 9 年公司运营经验的综合性人才了。
我不想再同时又干技术又干管理了。我的第一家公司(1985-1987年)的主要业务是打造一款电子表格程序,并有自动发布的功能。当时我一人主导了整个公司的多项事务,与媒体打交道的是我,面见投资人的是我,处理日常商务杂事的还是我,与此同时我还是公司的3个程序员之一并且兼任 UI 设计师。1987 年,当我们公司的产品成功发布后,我也终于积劳成疾住进了医院。这件事情让我明白,既要做软件公司管理人又要做程序员,这不是一个正常人能承受的。
所以在1994年,当我再一次面临“管理者还是程序员”的选择的时候,我选择了程序员。因为我觉得程序员的工作比较单纯。现如今20年过去了,尽管在此期间我参与开发了很多不错的项目,不过我也终于认清了当年我的选择是多么的错误。尽管在当年,“CTO/CIO/副总裁级工程师”这样的技术管理路线还是很新的概念,但是在今天看来,这条道路才是正确之选。
1995年,我在湾区工作了大约一年。其中下半年我为苹果公司工作(伯乐在线补充:那会乔布斯还在 NeXT)。苹果那时候看上去就快要撑不住了,所以我就离开了苹果回到了德克萨斯。因为我不想眼看着我工作的公司垮掉。现在想来这真是个天大的错误。
后来,乔布斯回归,苹果重回正轨,不仅如此,.COM时代也浩荡沓来。作为一个经验丰富,训练有素的技术领袖,我对产品需求的理解是无与伦比的(我们当时发布了 9 款主要产品,都是直接针对主盘,并且不需要热补,总之在当时这是很难做到的),我只能说我可以想象我在那个时代原本是多么的炙手可热。一旦有人具备了这样的素质,在职业道路上不断攀升根本不是问题。
我妹妹在30年前也是以一个程序员,不过她很快在一年之内跳到了管理层并且在大约15年之后成为了一家大公司的副总裁。还有一家我工作过几年的旅游公司的母公司,他们的CEO大约在15年前也做过程序员。当然这些管理层的工作也并不能算得上轻松愉快,但是其工作报酬却(比程序员来说)要好太多了。我妹妹的薪酬大约是我的10倍。
这么多年来,我认识到作为一个程序员在能力上的局限性有多大。不管他们在专业方面多么出色,但是对于创新改变,或者把坏事变好这些方面的能力却很有限。我当年就是没有意识到做一个程序员所面对的这种局限性(甚至说架构师也是如此);在程序员这个层面上,你没有权利去改变现有的事物,因为你只是一个执行者。同样,你也不会参与到财务、IPO活动,以及其他一些重要事务,作为一个程序员,你就乐于去打造酷酷的东西就好了。
有大约5年的时间,我作为员工或者顾问为某些公司工作,这是我职业生涯最糟糕的阶段,我所做的事情都得参照一些糟糕的,愚蠢的,彻底白痴的技术管理的指示。在这篇文章里根本就列举不完这些愚蠢的事情。
比如作为一家银行的技术部门副总裁,他可以根本不懂技术,但还是有资格做技术方面的决定。同样在银行做CIO的人宁可相信供应商也不会相信他手下员工。当然,我们知道CIO拿了供应商的回扣,所以我们才必须买那些没用的东西,然后他还会不停地写文章证明那些没用的东西对我们是如何的好。尽管我们根本就用不上。有一次我离开公司以后CIO也被炒了鱿鱼,然后他离开了公司并立即在另外一家公司找到了一个类似的CIO的职位。
我做过的最糟糕的一个工作,其实一开始我是很看好的。一家后创业公司在其所在的领域有一个很好的契机。这家公司和其主要竞争对手(但是契机点不同)都想扩大市场,而且市场也确实在逐渐繁荣。我是作为公司的第二个程序员加盟的。先于我加入的程序员以及经理当时的任务是打造一个全新网上商店系统,因为旧系统太慢也太不灵活,完全无法适应更大的市场需求。这个公司当时没有技术领头人,CEO和其他两个创始人也没有任何的技术经验和知识。另一个程序员不停地说后端的代码如何如何好,然后经理也很信任他。我构建了一个前端模块,做了几个demo,并每天往代码库里更新。正当我觉得我写的前端代码已经可以和后端代码整合的时候,我突然发现,另一个程序员的代码库10个月以来就没有一次check in——一次都没有。我把这件事情告诉了经理,可经理却说:”他(另一个程序员)只有在一切都完美了以后才会check in代码。“并且除了我以外,没人觉得这种做法很愚蠢。此后,我花了两个月的时间,试图动员公司的创始人招募一些真正能做事情的人(其实我还是认识几个这样的人的),但是他们虽然承认之前在招人方面有失误,但是却害怕做出人事变动。最后我放弃了,离开了公司。
一年多以后,原先的两个人(另一个程序员和经理)什么都没做出来,双双被解雇。然后公司创始人又从咨询公司找了些人来,但还是什么都没有做出来。这个时候,所有的商机都被耽误了。竞争对手那边呢?他们已经成为了十亿美元级别的大公司,我经常会在电视商业广告上看到这家公司的名字。我每次看到这些广告的时候就想拿我的鞋子砸电视。我们其实就差一个在线商店和一个现实中的技术领袖。如果我当时的身份不是一个程序员而是一个技术负责人的话,那么现在大红大紫的没准就是我们了。很遗憾我只是个程序员。
类似的例子我可以一直列举下去,但是关键问题是:如果想要对技术人员的工作有话语权,你就必须同时有能力,有权利,还要有机会才行。一旦你做到了这些,并且你还找到了合理的成长模式,那么只有天空才是你的极限了。
1987年,我在电视节目《Computer Chronicles》中为我们的产品Trapeze做推广的时候,另一个参与节目的家伙叫 Mike Slade,他是Excel的产品经理。当时还很幼稚的我想,这家伙不过是不知道哪里跑来的一个搞市场的小角色而已(幼稚的时候人还真是很蠢呢)。后来呢,这家伙创立了一系列的公司,包括ESPN,他在苹果公司担任了各种领导角色,是乔布斯的至交好友,并且成立了自己的风投公司。
今天,我还是一个程序员。所以说现在谁是小角色呢?我怀疑我是不是有一天真的能退休。幸好我还是比较擅长做程序员的(我现在的工作是我以前的一个经理给我的,他有一个需求而且知道我能做这件事情),但是到目前为止,我所能做的也就只能是一个程序员。
我做程序员有大约35年了,其实完成工作的感觉还是很有意思的,而且这么多年我也确实做了不少出色的东西。但是我也感觉到我对当年没有去接受成为一个管理者的挑战产生了悔意。在某种程度上,程序员确实是一个单纯的选择。考虑到我经历了整个互联网(Dotcom)时代,也经经历了乔布斯回归苹果的事件,如果我还能有成为技术领袖的经验,那么我几乎可以无所不能。
所以说,是的,我对我没有把握住(成为管理者)的机会感到后悔,谁知道如果我当时把握住了现在会变成什么样。不过有失也有得,我因此得以享受书写代码的乐趣,以及那些为了解决为题而纠结烧脑的乐趣。
曾几何时,我站在人生的双岔口,然后选择了简单的那条道路。也许现在,我明白我为什么做出了那样的选择。