技术领导要不要写代码?

技术领导要不要写代码?这是一个问题。

  我刚工作的时候就听说,程序员(那时候还没有“码农”的说法)是吃青春饭的,到 30 岁就熬不了夜写不动代码了,所以要尽早转管理岗。相应的,如果你走上管理路线成了技术领导,自然就不必干写代码这种低级重复的体力劳动了。所以当时自己代码写得很多,技术能力增长很快,但总感觉有点别扭。那感觉就像,你能把车开得又快又熟练,最终只是为了能按时到达机场赶上飞机。然后,你就再也不用开车了。

  不过无论如何,赶上飞机看来是更高级的选择,为了它,放弃苦心修炼的车技也可以接受罢。

  但是等我真正走上管理岗位,才发现事实和我想的完全不一样。当时公司的业务增长飞快,支持业务的系统却是几年前“一锤子买卖”的外包项目,更要命的是技术团队的人员组成和工作习惯还处在作坊状态。从我的角度来看,四下里全是大坑,填坑的速度慢得让人着急,在此过程中还经常挖下新坑…… 在我的职业生涯中,我从没有在那么短的时间里写过那么多代码。几年后大家查提交排名,我的名字仍然第一。好在我的努力没有白费,系统终于没有垮掉,顺利回到正轨。

  当时我身为技术领导,除去招人、定流程、做运维,还花了大量时间写代码,这样的做法是对的吗?如果是对的,后来我再没有写过那么多代码,好像也与“不称职的领导”无缘,甚至还被夸奖过“忍住放手让下属去做事,锻炼了组织”,这又是怎么回事呢?

  很长时间里我都在思考这个问题,发现大家的说法也大不相同。有人言之凿凿“不写代码的好领导不是好领导,因为只有自己写的代码才心里有底”,也有人斩钉截铁“当了领导还写代码是对不起公司,公司发给你领导的工资不是让你敲代码的”。

  大家的观点水火不容,所以或许这个事情并没有统一的答案,只有回到具体问题才有答案。我能确定的是,在我当时所处的情况下,自己不写代码系统肯定会瘫痪。但是跳出来看,又不能说“领导要写代码”就是放之四海而皆准的。所以只能具体问题具体分析,下面说说我的“具体”看法。

  首先要确信的是,写代码不是丢脸的事情。为了心平气和地理性讨论,我们应当摒弃那些天然带有强力感情色彩的词语,比如“码农”,同样也要注意摘掉其它的有色眼镜。在我们所处的时代,再复杂的算法,再精妙的系统,也必须输入一行行代码来实现的。这就好比写文章,文笔再好的人,也得自己一个一个字地把文章敲出来。

  其实这个比喻还不是那么合适,敲键盘是个“标准化”的过程,不存在“打字质量”的问题。写代码更像“创意”,比如多个程序,有同样的输入和同样的输出,但是这些程序到底能应付多少异常情况,有多么稳定,效率差多少倍,离开代码是很难发现的。正因为程序的质量很大程度上取决于代码的实现,所以写代码是必须的工作环节,写好的代码更是非常值得追求的目标。

  其次,技术领导不是什么“高人一等”的角色。软件的“软”就在于它是看不见摸不着的,很多时候不能从现实生活中照搬模型,只能靠思维和经验去把握。技术领导肩负着更大的职责,就应当有更深厚的经验与更严密的思维,才能保证软件开发的效果。单薄的专业经验加上发号施令的权力,这样的组合在其它行业或许能当领导,但在软件开发行业充其量只能诞生不称职的技术领导。埃里克·施密特在《How Google Works》里面写道,Google 需要的是既有领导才能又有自己实现能力的“创意精英”,我也觉得这种人是技术领导的最佳人选。

  既然“写代码”不丢脸,“技术领导”也非高人一等,也就没有必要把两者对立起来。所以我们不妨放宽视界看看更要紧的问题:技术领导这个角色,究竟应当干什么?

  可以肯定的是,技术领导领导的是技术团队,所以要对整个技术团队的工作负责。下面我们用简单的模型来分析技术团队的工作。

  A 是很不错的程序员,写代码速度是2,是普通程序员的 2 倍,代码质量是 1.5,是普通程序员的 1.5 倍。他对自己的状态比较满意,认为“搞开发就得是这样”。确实,他的生产率是普通程序员的 3 倍(2×1.5),他也确实很棒。

  A 的表现获得上级的肯定,于是升任技术领导,领导 3 个普通程序员开发程序。如果大家的工作都保持不变,那么团队生产率是 2×1.5 + 1×1×3 = 6。

  但是A升任领导之后,必然要花很多时间去做写代码之外的事情,不再保持“个人贡献者”的角色。我们假设他花了一半的时间去做其它事情,而代码质量保持不变,那么他的生产率降低为 (2×0.5)×1.5 = 1.5,A的生产率下降了很多。

  A 应当记住,现在自己不是“个人贡献者”了,所以应当关心团队的生产率。如果团队的生产率不变,那么整个团队的是(2×0.5)×1.5 + 1×1×3 = 4.5。这几乎是最坏的情况,技术领导被琐事缠身无法做出贡献,团队的生产效率因此降低。

  但是,如果A再减少自己写代码的时间到 0.8,把省下来的时间用于制定开发规范、砍掉不合理需求、搞活团队气氛等等,情况就会不一样了。假设A的一系列安排,让其他 3 个程序员的写代码速度提高到 1.3,代码质量提高到 1.3。

  对很多技术出身的技术领导来说,这种状态往往不让人满意,因为看不上其它程序员写的代码,总归要自己写才放心。但是,这时候团队的生产效率却变成了 0.8×1.5 + 1.3×1.3×3 = 6.27,反而高于最初的 6.0。团队生产率的提高正是公司对领导者的期望与考核标准。所以这个技术领导或许自己不满意,却是称职的。

  这个道理我之前在《领导的对象,是人还是任务》中讲过。领导的对象既不是单纯的人也不是单纯的任务,而是以人为媒介,驱动团队成员去完成更复杂的任务。

  所以如果你是程序员出身的技术领导,一定要区分“自己”和“团队”,你要考虑的不是怎么让自己写得更快更好,而是怎么让大家都写得更快更好。只要你能持续提升整个团队的生产效率,你就是称职的,哪怕“看不上”其他人的代码,也得忍住。

  在上面的例子里,如果你能把剩下 3 个程序员写代码的速度都提升到 1.5,代码质量都提高到 1.4,总生产率就有 1.5×1.4×3 = 6.3。这时候技术领导一行代码也不写,而且下属写代码的水平仍然赶不上自己,团队的生产率提高却是板上钉钉的事实——当然你还有其他办法,比如优化人员组合引入用生产率与自己相同甚至比自己更高的程序员,这样的效率更高了。

  当然,“一行代码也不写”多半是理想情况,许多时候技术领导还是必须要写代码的,因为软件开发终究是手艺活,大家认同的也是手艺。所以很可能会出现下面的情况:团队很缺某方面的开发经验或能力,除了技术领导之外暂时没人能对付;或者某个程序员不服气或者不理解某个决定,不能用头衔而只能用代码来说服和阐释……

  除了这些“必须”的情况,我也主张技术领导“应当”写写代码。软件开发这个行业还太年轻,层级隔离做不到那么好,只说不写是找不到感觉的,而很多技术决策的依据正是这种感觉。所以我每次接手新的项目和团队,通常都要把代码全都看一遍心里才有底,自己提交几个功能才算找到了感觉。

  这样看来,“技术领导要不要写代码”这个问题没有统一的答案。所以有时候你不得不忍住“让我来写”的冲动,有时候你又不得不忍住恶心亲自动手。

  就我个人而言,我觉得写代码而且不愿意放弃写代码能力的技术领导更可爱。程序员大多是单纯的,一起写代码,哪怕只写几个功能,也会告诉大家“我不是来发号施令的,而跟你们一伙的”。

来自: www.luanxiang.or

时间: 2024-10-03 10:43:57

技术领导要不要写代码?的相关文章

程序员、技术领导、管理者各有烦恼,你占了几条?

我专业从事软件开发工作已超过 10 年的时间,我热爱这份事业,希望有一天我会被人们称呼为老程序员.但这一路走来,我经历了许多可怕的事情,这些事情让我讨厌我的工作.在职业生涯早期,我曾期望有人能给我一份职场指南,这样当遇到之前未曾遇到的事情时,我就不会感到如此的孤单和沮丧. 从某种意义上说,这篇文章就是那样一份指南.我写这篇文章有三个目的. 一.回顾 辨别出我们以往都曾有过的经历.这些会帮助我们建立一些理解上的共识,可以作为判断其他不熟悉的问题的参考点. 二.展望 辨别出一些你还未经历过的新问题,

关爱码农成长:关于写代码二三事

工作这么多年以来,一直从事软件相关领域,即使担任主管职务,也一直对技术充满热情.写代码写了这么多年,多少有些体会.我把自己对写代码这份工作的心得写下来,希望能给从事相关领域或有志于写代码的人参考. 一.你适合当程序员吗? 程序员,也叫软件工程师.程序设计师,我觉得「程序员」三个字简洁有力,是一种身份的象征. 如果你正从事这份工作,恭喜你!这是个热门行业,在可预见的将来,也不会消失.不过也别高兴太早,这一行的技术汰旧换新非常快,必须不断努力学习才行. 一点天赋 打开一个空白文档,必须创造出代码.与

程序员如何像写代码一样找女朋友

在程序员的世界里,妹子是稀有动物,女神就更是凤毛麟角了,大部分程序员由于经常面对电脑,缺乏与人的沟通交流,加上软件行业的工作特殊性,因此找女朋友更是难上加难.那么,程序员如何用自己的方法去追求心仪的女生呢?有这个冲动的朋友请继续看下去. 1.需求分析 根据自己的性格特点.经济实力,合理定位:适合自己的女性范围,也就是软件工程里常谈到:需求分析.自己最想找什么样的女孩,譬如:身高在什么范 围,年龄在什么范围,学历在什么范围,相貌有什么要求,对性格有什么偏好,喜静还是偏活泼.你越能更多了解自己,知道

好技术领导和差技术领导区别在哪里--转

原文地址:http://suanfazu.com/t/topic/9613 Foursquare团队技术领导简要指南——有感于Ben Horowitz“好产品经理,差产品经理”一文. 团队合作 一个优秀的技术领导必然是团队的一份子,他们认为当整个团队成功时自己才称得上成功.他们不仅要做好繁杂和不讨好的本职工作,还要清除项目中的障碍,从而让整个团队能够以 100% 的效率运转起来.一个好的技术领导会努力去拓宽团队在技术上的可行性,以确保对关键系统的认识与实施不仅仅局限于一两种想法. 一个糟糕的技术

CTO集体怒吼:我到底要不要继续写代码(下篇)

注:承接上文,CTO们就从哪些方面确定产品和技术布局大方向,目前面临的困惑,以及作为CTO的技术修炼等方面进行探讨.上篇:CTO集体怒吼:我到底要不要继续写代码(上篇) 5.在人人创业的时代里,竞争压力非常大.有很多产品,甚至会有多个竞争对手,那么产品技术和布局会非常重要.CTO从哪些方面确定大的方向? 肖文峰(TalkingData):人员成本水涨船高,尽早储备人才. 多深多远还是回到CTO对于公司未来的愿景理解的多深.根据愿景储备人才.尤其是创业初期,大家知道人才是很贵的,比如研发人员,尤其

关于知乎《四十岁还在写代码,是幸福还是悲哀?》的不同看法

 今天看了知乎上的文章关于<四十岁还在写代码,是幸福还是悲哀?>.但是我不太赞成作者的观点,我想表达自己的一些看法.我们本着以目前中国IT的现状出发.目前我认为中国的程序员很努力,很上进,并且很有想法.假如四十岁还是写代码的话,我们就把他当做资深工程师,就是比高级程序员好一点的程序员,但是达不到架构师水平.假如达到,那么就和我们的命题有矛盾.我认为目前中国的架构师几乎是不怎么写代码的,最多写核心的代码.那么这样40岁的程序员还在写代码的话,我认为应该从如下方面去考虑,并且每个方面要占一些不同的

CTO集体怒吼:我到底要不要继续写代码!

以下是6位发疯的CTO,在一起讨论人生.命运.创业.工作时,发出的怒吼: 休息跟生活是一样的,基本上每天是工作到晚上12点. 我应聘去说我会做软件,人家不要我. 我为什么成为CTO?到现在还有一点莫名其妙的感觉. 研究技术是自己的娱乐,但是把技术转化为产品这是一个工作. 我经常调侃说"我是做技术里数据最好的,数据里产品最好的". 跟我老婆要求的方向越来越偏差了,她是希望我能陪孩子.怎么办呢?招聘.但是现在要找到一个38岁的老男人,做过这样的事情,也很难,人家也肯定也有家庭. 我到底要不

惊!十二星座程序猿竟然这样写代码

原文链接 水瓶座 大概只有水瓶座的程序猿可以做到代码神秘到无人能解. 水瓶座,属于风系星座.常被称为"天才星座"或"未来星座".他们较着重于精神层次的提升,是很好的启发对象.对于编程,也是如此.水瓶座程序猿的代码中充满了各种天马行空的奇思妙想,同样也含纳着一般人没法理解的抽象. 双鱼座 如果说水瓶座程序猿写的代码是来自外太空的探险童话,那双鱼座程序员的代码就是浪漫的诗歌,字里行间都是普希金和海子的诗句.众所周知,双鱼座是极其细腻感性化的一个星座,哪怕是编程这种极富逻

CTO集体怒吼:我到底要不要继续写代码!(上)

CTO集体怒吼:我到底要不要继续写代码!(上) 以下是6位发疯的CTO,在一起讨论人生.命运.创业.工作时,发出的怒吼: 休息跟生活是一样的,基本上每天是工作到晚上12点. 我应聘去说我会做软件,人家不要我. 我为什么成为CTO?到现在还有一点莫名其妙的感觉. 研究技术是自己的娱乐,但是把技术转化为产品这是一个工作. 我经常调侃说"我是做技术里数据最好的,数据里产品最好的". 跟我老婆要求的方向越来越偏差了,她是希望我能陪孩子.怎么办呢?招聘.但是现在要找到一个38岁的老男人,做过这样