微信号:infoqchina

介绍:有内容的技术社区媒体

技术专家 or 技术管理?程序员职场规划中如何定位?

2017-05-21 09:04 陈靖华

作者|陈靖华

编辑|小智


「 阅读原文 」,获得短信提醒,不错过下次 InfoQ 大咖说直播!

回复: 定位,获取视频下载。

写在前面

大家好,我是 Wood,来自听云。毕业于东南大学仪器科学与工程专业,毕业工作两年之后就一直和好友一起自主创业,先后经历过 2.5 次创业,从最初的 4 个小伙伴发展到几百人的团队,个人也从程序员逐渐转变成技术管理者的角色。本次直播将向大家分享这 19 年创业中的一些小故事,聊聊技术管理转型之路上的坎坷。希望能为大家的职业规划提供参考建议。

程序员需要什么条件去创业?

先说说自己创业的初衷吧。96 年从东南大学毕业之后到了厦门信达公司从事网站建设工作,非常幸运 95 年在学校的时候就早早地接触到了互联网,第一份工作也是和互联网相关。所以刚开始工作就开始使用第一代的互联网网站技术:Perl, CGI, HTML, Java Applet 等等,也第一次接触到了 Linux 和大量的开源软件,并很快地对 Linux 和开源软件入迷了,这些开源的操作系统和软件可能算是两年后促使我走上自主创业的道路的原因之一。

在这个公司做了两年的网站开发之后,1998 年就和 4 位同事和好友开始了自己的第一次创业,从事 Linux 下企业邮局和企业虚拟主机管理软件的开发。

所以说起创业的原因,不喜欢被控制可能是主要的原因。那个时期接触的两本书给我创业的动机影响比较大,一本是《开源软件文集:开源革命之声》,汇集了当时开源和自由软件运动的先锋们(包括 Linus Torvalds, Brian Behlendorf, Larry Wall …)的思想,对我后期的技术发展和职业规划产生了比较大的影响。里面自由软件的思想和精神也促使我在自主创业的路上一直走下去。

另一本书其实是一本杂志《Linux Journal》, 当时除了国外的网站,这本杂志算是我更深入和便捷了解 Linux 生态圈的一个最主要的途径,当时还是托了在国外的同学帮忙订的。这本杂志除了为我拓展 Linux 生态圈方面的技术视野之外,在那个时期的 Slogan 也令我印象深刻。

大家如果还有印象的话应该记得那段时间微软有一句非常著名的 Slogan “Where do you want to go today”,而当时这本杂志的广告词就是“Where do you want to go tomorrow”,一个关注的是现在,一个关注的是未来,从这 20 年 Linux 类操作系统的发展来看,也验证了这句话。这句话从那个时候到现在依然是我的 QQ 签名。

再回到我们的话题上来,程序员需要具备什么条件才适合去创业?我感觉并没有什么条件限制着程序员去创业,如果有,更多的还是自己内心的想法和诉求。关于这个问题,我们之前在 EGO 小组中讨论过一次,洪强宁洪教授给出的一个观点感觉比较受大家认可,通常是下面四种情况:

  1. 想做某个事情,在别的公司做不了的;

  2. 喜欢赌未来的不确定性;

  3. 有控制欲;

  4. 不喜欢被人控制。

可能每个创业的人都会有自己的初衷,而我个人而言可能占了其中的 3 点。情况基本上是第 4 个,第 1 个和一部分的第 2 个原因。其中 4 的原因可能更多一些,喜欢相对的自由一点的工作状态以及技术上的独立,不受商用软件技术的限制,然后就是 1,想做某件自己喜欢做的事情,最后就是 3,赌未来的发展和趋势,但是我不太喜欢不确定性。如果你属于这四种情况中的一种或几种,那么我觉得未尝不可尝试一下自主创业。

当然创业的艰辛只有真正去做过的人才有深刻的体会,而幸运的是,如果你能坚持下来并且你的公司还活着,作为程序员,通常你在这个过程中学习到的东西和成长的速度要比在其他公司里工作多得多,快得多。

程序员向技术专家的转型

在一个初创的创业团队中工作,由于人员较少,有些程序员往往需要身兼数职,而这个人通常就会快速地成长为技术专家。这里我们说的技术专家,并不单单指的是某一个技术领域的专家,而是可以更好地使用技术来解决各种问题的专家,应该是解决问题的专家。

在我自己这 2.5 次创业经历中,自己也是从这条路走过来的。第 1 次创业,一共就 5 个小伙伴,其中就我们两个写代码的,所以自己基本上什么都干:产品设计,美工切图,代码实现,测试,打包,现场实施部署,售后支持等等。那个时候刚刚毕业两年,并没有太多的技术积累和经验,也没有人带,基本上都是靠看书和网上的资料自学。那段时间接触并阅读了不少相关的开源软件代码和书,包括 apache httpd, sendmail, pam, 还有 Linux 内核等等。

当时刚开始做的第一个企业软件是企业邮箱系统,选的是 sendmail 来做 MTA(Postfix 到了那一年年底才发布,不然可能不会这么折腾了),而 sendmail 的配置文件又是出了名的难读难写,据说本来就不是设计给人读的。为了搞定这个东西专门买了那本著名的蝙蝠书(Bat book,O’Reilly 出的 Semdmail 的书,封面是一只倒挂着的蝙蝠)来啃,花了不小的功夫学会了配置文件的读写。那段时间可以算是我技术成长最快的时期之一。

第 2 次创业是从第 1.5 次失败的创业过程中开始的,创始团队的 7 个小伙伴也都是上一个公司的同事,和第一次一样,刚开始也是什么活都得自己干,只是这次还包括了售前和运维的工作。这次的创业到现在已经 10 年了,研发团队也从原来的 7 个人发展到了现在的 100 多人,团队里成长出了不少技术专家,大部分也都是从初级和普通程序员成长起来的,在有这些技术专家在的小团队里,整个团队的效率和自驱动力都会比较强。后来招聘的时候也专门留意去招有类似潜质的人员。

这里面给我印象最深的是一起工作了十多年的甄志会同学,我们是在上一家公司开始做同事的,当时招聘他进来就是一位普通的 Delphi 工程师,他很快地在团队里脱颖而出,代码的质量和开发速度都很高,我们给他称号叫快枪手,所以我们开始新的创业的时候就拉上了他。

这十几年来,他始终保持着对技术的热情,技术牛而且乐意帮助和辅导别人,团队成员有问题也都自然而然地会去找他请教,这也让他自己的技术能力更快的成长。在团队需要去开拓新的业务和突破新的技术难点时,他始终是最积极的那一个,并且学习能力也超强,从单一的 Delphi 到后来的 C/C++, Java, .NET, Go 的各种开发语言,没有一个不是现学现用,并且都做得不错的。

去年我们公司做 Go 语言探针的时候,公司没有一个会 Go 的,他就是主动请命和另外一位同样出色的同学一起从 0 开始现学,俩个人用两个多月时间把 Go 语言探针搞出来了。就在上个月他们俩又开始新的探索,挑战一个新的语言平台的探针技术了。让我比较自豪的是,在现在这个团队里,这样的类型的技术专家还有好几个。

从程序员向技术专家的转型往往都是自然发生的,只要个人在技术上的投入足够多,这个转型相对比较容易,但是并不是每个程序员都能变成出色的技术专家或技术领导者的。我发现最终会变成出色的技术专家或技术领导者的人通常会有以下的特质:

  1. 超强的学习能力,旺盛的学习热情

  2. 愿意接受挑战,尝试自己不擅长的事情和未知领域

  3. 乐于助人,乐于分享,有较好的全局观和团队意识

  4. 自驱动力强,勇于承担责任

技术专家到技术管理者的转型

从程序员向技术专家或技术领导者的转型往往比较容易和顺利成章,但是要再转型成为技术管理者就比较困难了,要趟过不少坑,甚至可能转型失败。

1. 团队失控的故事:谈谈技术管理者与技术专家的职责

第 1 次创业 2 年后,我们的团队依然保持着 4,5 个人的规模,后来一家上市公司投资我们团队,整个团队就从厦门搬到北京来组成立了一个新的公司,实际上是投资的上市公司的子公司,从事企业软件和电子政务软件的开发。这就是我第 1.5 次的创业经历。为什么叫做 1.5 次呢?一个原因是因为这次的创业实际上是第一次创业的自然顺延,另一个原因是这次创业最终是没有结果的。

来到北京之后,在几年的时间里,团队的规模从原来的 5 个人也快速增长到了上百人,我自己的职位也变成了总工程师,负责管理研发团队。可怕的是,在这个过程中,我一直没有意识到自己工作性质和工作职责的变化,依然将把自己定位为技术专家,大量的工作时间依然是花在编写代码和研究技术上。实际上,我个人一直是不擅长与人沟通和交往,恐怕是有轻度的社交恐惧症,所以对整个研发团队的建设并没有投入足够的时间来进行管理,而只是沉迷于对技术的研究。

直到有一天,团队中有个人带走了一半的研发团队成员去自立门户,也带走了公司的业务,我才幡然醒悟。虽然说这次团队的失控和分裂还有很多外在的因素,但我认为疏于对团队的管理是其中最重要的因素之一。这次事件给我的打击非常大,我自己也因此低落了一段时间,开了一段小差后才回到团队里,后来几年也在重建团队,努力去挽回失败的局面,但是始终不见起色,最终这次创业算是以失败告终。

这个事件给我的教训非常深刻,让我在后来的工作过程中能更清晰的去定位自己的角色。实际上在后面的这次创业中,自己依然又重新走了一次从程序员到技术专家再到技术管理者的转型之路,在团队还很小的时候,特别是自驱动性比较强的团队,不需要太多的管理,可以把所有的精力都投入到技术的研究和代码编写里。当团队规模逐渐增大的时候,就需要逐渐放掉一些技术上的投入,把时间的投入往管理上去倾斜。这个转变的过程可能比较漫长,直到现在,我感觉依然还在学习和努力转变的过程中。

在我们的团队里,从技术专家向技术管理岗位的转变是很多技术人员都经历过,但是失败率很高的事情。我认为这个转变过程中,最重要的是个人一定要清楚这两个角色的职责的差别。作为技术专家,你的职责是做深度的技术研究和实现,以技术能力和技术领导力为你的团队和业务提供强有力的支持。而作为技术管理者,你的职责是团队的组建、培养人员,做技术发展和人员规划,以各种管理手段来明确技术发展方向,保持团队的稳定和活力,为业务提供可靠的支持。

明确了职责之后的履行阶段实际上对很多人来说也是相当困难的。困扰比较大的两个问题一个是性格问题,是否喜欢和擅长与人沟通协调在这个过程中非常重要,而很多程序员包括我在内在这方面都是不太擅长的,不少人都也是在这一点上没法转变过来最终无法转型的。但这个性格问题并不是无法转变的,在内心主动寻求改变和外部条件的压力下,我感觉在这几年来还是发生的很大的变化的,有时候就需要自己逼自己去做一些自己不擅长的事。

另外一个问题就是管理时间和精力的投入问题。大部分的程序员和技术专家在向技术管理转岗的时候往往都会在这里掉坑里,我自己之前的案例就是一个惨痛的教训。很多人在这个过程中往往都会舍不得放下对技术的研究和写代码,害怕自己一旦离开技术太久就会代码能力下降,被技术浪潮抛弃。

因为放不下写代码和技术研究,花在这上面的时间越多,自然投入的管理上的时间就会越少,最终很可能无法完成到管理岗位的转变。一旦你确定了自己未来的职业发展方向是管理岗位,一定要尽早学会放手,把代码和技术研究交给其他人去做,至少保证有足够的时间投入到管理上。

2. 团队组建的故事:如何组建合适的技术团队

技术团队组建是技术管理者最主要的职责之一,在技术创业公司里,技术团队的组成是决定一个创业成败的关键因素。第一次开始创业的时候,并没有太多的经验,根本也没有做团队规划,5 个小伙伴完全是因为亲密的朋友关系走到一起来做事情,后果就是 5 个人里只有两个苦逼的写代码的程序员。团队的组成非常不合理,互相之间也没有很好的互补性。

这种状态一直持续在第 1 次和第 1.5 次创业的过程中,团队没有规划,有需求做不过来就加人,有认识的好朋友过来也加岗位加人。说到底还是之前说的问题,团队管理没有做好,并且在胡乱加人的过程中也在一些重要的岗位加入了价值观完全不一致的人,所有这些都为这次创业的失败埋下了伏笔。

第二次创业之前关于团队组建我们就吸取了教训,做了比较充分的准备。首先从可能涉及到的业务出发反推需要哪些技术和技能的人员和比例,例如做探针客户端需要什么人,做后端报表需要什么人,做业务系统的需要什么人,做后端数据处理架构需要什么人,一一理清楚,有了最小配置的人员数量之后再去挑选合适的人员。

因为又是一次从头开始的创业,而且初期的资金有限,并没有办法把原有的整个团队都带走,所以我们非常仔细地挑选初创团队的人员,首先肯定是选技术能力的强的;其次是对每个技术合适的人员评估性格,主动性和价值观是否符合要求,在这个阶段加入的团队成员能否保持一致的价值观非常重要,因为这些人很可能将来会成为公司核心骨干的技术专家或管理者,他们的价值观最终将影响公司的文化。

这个过程中,我们在一个岗位的人选上,确实出现了不同的意见:有一个技术能力非常强的,但是在任何关系到他利益的事情上都会斤斤计较的员工,另外一位是技术能力很弱的刚毕业不久的员工,但是做事踏实认真。最终我们还是选了后者。后来证明我们的选择应该是正确的,因为刚开始的两年里,由于资金的问题经常有几个月发不出工资来,如果选前者估计早就离开了,而后者到现在依然在我们团队里并担任着技术专家的角色。最后还要一个一个确认是否可以承受创业的不确定性。

这次团队的组建我认为是成功的,所有的初创研发团队都依然在听云的各自岗位上担任着核心技术专家和管理岗位。

在过去 10 年的发展中,我们的团队也加入了越来越多的成员,在这十年的团队组建过程中,我们招到过能力超强性价比非常高的人(这些人非常稀少,一定要想方设法创造好的环境和条件留下来),我花过半年的时间各种软磨硬泡挖来过技术一流的技术专家(感觉比追老婆还难),也跑到候选人的公司附近去做过面试。这里面有太多的故事和技巧就不一一分享了,其中最重要的一点是关键岗位上的核心骨干人员,一定一定要确认与团队的文化和价值观的一致。

3. 团队整合的故事:价值观的讨论

说到价值观的问题,再分享一个失败的团队整合的故事。还是上一家公司的经历,当时团队刚刚来到北京不久,由于新产品刚刚开始开发,又接了几个项目人手不够,所以通过朋友的关系从南京临时找来了一个做外包开发的团队一起做。后来做着做着就把两个团队整合到一起了,感觉还是挺自然而然的过程。但是却忽略了非常重要的一个事情,就是被整合的团队的头的价值观与原有团队是否一致。

可能是由于外包开发团队的原因,后来细想起来两个团队在对待产品和对待客户等问题上观点非常难保持一致,由于这些问题也导致矛盾越来越大,最终导致整合到一起的团队又分裂了。不过团队的价值观也只是团队整合里的一个重要根本因素,影响的因素还有非常多,这些年来也看过太多太多的失败案例,成功的却非常少。

以上是我今天的分享,希望能对大家在职业的发展规则中有所帮助。最后做个广告,听云将在 8 月 10-11 日在北京举办 APM 行业会议 APMCon,欢迎大家关注和参加。

今日荐文

点击下方图片即可阅读

左耳朵耗子:技术一定会让人失业,但我没有生不逢时



 
InfoQ 更多文章 520,程序员怎样表白更有效? 技术大牛的人生是怎么过的?技术实战的细节能有多美? Python速度虽然慢,但它工作效率高啊!不服? 左耳朵耗子:技术一定会让人失业,但我没有生不逢时 从淘宝到云端,阿里高可用架构演进实战
猜您喜欢 【.NET逆向】多功能 PDF转换器V3.0 破解教程 再谈启发式搜索算法 Container技术之cgroup使用 Amazon 前技术副总裁解剖完美技术面试 七牛梦想中心教室建成,让爱从云端落地