[转]技术领导要不要写代码?

[转]技术领导要不要写代码?

前言

嗨!大家好啊!那么今天开始呢,笔者会为大家带来一些比较优秀的文章进行转载整理,在这里也感谢所有的文章提供者辛勤的付出!

如原文作者不希望转载,请联系!

附上:

喵了个咪的博客:http://w-blog.cn

原文地址(乱象,印迹):http://www.luanxiang.org/blog/archives/2228.html

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

我刚工作的时候就听说,程序员(那时候还没有“码农”的说法)是吃青春饭的,到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。

这时候技术领导一行代码也不写,而且下属写代码的水平仍然赶不上自己,团队的生产率提高却是板上钉钉的事实——当然你还有其他办法,比如优化人员组合引入用生产率与自己相同甚至比自己更高的程序员,这样的效率更高了。

当然,“一行代码也不写”多半是理想情况,许多时候技术领导还是必须要写代码的,因为软件开发终究是手艺活,大家认同的也是手艺。

所以很可能会出现下面的情况:团队很缺某方面的开发经验或能力,除了技术领导之外暂时没人能对付;

或者某个程序员不服气或者不理解某个决定,不能用头衔而只能用代码来说服和阐释……

除了这些“必须”的情况,我也主张技术领导“应当”写写代码。

软件开发这个行业还太年轻,层级隔离做不到那么好,只说不写是找不到感觉的,而很多技术决策的依据正是这种感觉。

所以我每次接手新的项目和团队,通常都要把代码全都看一遍心里才有底,自己提交几个功能才算找到了感觉。

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

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

小结

本文中说的特别好的一点就是当你成为了所谓的"技术领导"那么你的目的再也不是让自己更强,而是要提高团队整体各项,本文作者用了一个例子描述了,当你的效率是3的时候不如团队效率是1.5,那么你get到了吗?

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

时间: 2024-09-30 04:57:34

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

技术领导要不要写代码?

技术领导要不要写代码?这是一个问题. 我刚工作的时候就听说,程序员(那时候还没有"码农"的说法)是 吃青春饭的,到30岁就熬不了夜写不动代码了,所以要尽早转管理岗.相应的,如果你走上管理路线成了技术领导,自然就不必干写代码这种低级重复的体力劳动 了.所以当时自己代码写得很多,技术能力增长很快,但总感觉有点别扭.那感觉就像,你能把车开得又快又熟练,最终只是为了能按时到达机场赶上飞机.然后, 你就再也不用开车了. 不过无论如何,赶上飞机看来是更高级的选择,为了它,放弃苦心修炼的车技也可以接

IT人的技术哲学书单:谁说写代码、做产品就不需要参禅悟道?

刚刚进入大学校门时老师曾经说过:"无论学习什么专业,只要研究到最后就是哲学."我们笑着问道:"那么,写代码写到最后也是哲学?"老师回答:"是的,那就是技术哲学."现在回想起来,的确如此,我们发现技术中无处存在着哲学.那编写代码来说,对于同样一个功能进行实现,有的同学就会使用了很多的设计思想和设计模式,这样的代码无论是在自己看来还是拿给其他人看都会是赏心悦目的,而且也非常便于后期的重构. 无论是科学家还是工程师,成长不能只局限于技术层面,也要学会如

天天写业务代码的程序员,怎么成为技术大牛,开始写技术代码?

小编特地从阿里技术协会(ATA)分享一篇内部文章:   不管是开发.测试.运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己. 然而"梦想是美好的,现实却是残酷的",很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说"天天写业务代码还加班,如何才能成为技术大牛",测试说"每天都有执行不完的测试用例&quo

嘿!架构师,你写不写代码呀?

概要: 1.架构师是神马狮,代码是什么马 2.架构师的成长之路 3.架构师是使用代码作画的大狮 4.本期"小狮子"奖 架构师是什么狮,代码是什么马 记得那天是这样的,总导演(右导)一抛出话题,群内雄狮们可炸开了锅: 狮子郭:架构师应该写代码,架构师需验证自己架构上想法的可行性- 狮子肖:架构师必须得做到了解现状,方案与实际相符,别和猿类离得太远... 狮子P:架构最早是源自建筑,没见过建筑架构师码过砖. 狮子木:仰望星空,脚踏大地. 大伙交流得很high,本狮却觉得心底空闹闹的,我们在

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

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

想要少写代码,就多花点时间思考

我曾经在我的微博上说过这样一段话 ,而我想在这里把我的这个观点描述地更加完整一些. @左耳朵耗子 :聪明的程序员会使用50%-70%的时间用来思考,用来尝试和权衡各种设计和实现,然后她们用30% – 50%的时间是在忙碌着编码,调试还有测试.而聪明的老板也会鼓励团队这样做.但是傻逼的老板,苦逼的程序员却会拿出来100%-150%的时间来忙着赶进度,返工,重构,还有fix 大量的bug--所以, 越差的团队只会越忙,甚至还忙不完他们的工作. 而在现在这个浮躁的时期,再加上敏捷咨询师们这群人念的歪经

关于CTO该不该写代码:我们调查了100个CTO,70%的人说不用写但要懂

近期,某医疗互联网公司前CTO在网络上飙红,很多IT圈人士的微信.微博均遭到刷屏待遇.具体事件经过不再做累述,信息大家都已心照不宣. 我们关心的是,由这次事件所引出的各种声音,其中最突出的一种声音是,广大IT人士开始对CTO要不要自己写代码产生了诸多疑问,大家都各执己见.鉴于此,我们特别设计了一次问卷调查,在本次调查中我们对接近100多名以CTO,CIO为主,也包括程序员.产品开发人员在内的相关人士通过问卷的形式进行了集中调查.并邀请了相关企业的技术人员对调查结果进行了客观评论与分析.以下为本次

艾伟也谈项目管理,技术领导的疑难:如何掌控其他成员的开发

如何将项目的开发掌控好是技术领导(Team Leader)必须做好的.何为掌控项目的开发,即开发的进度和质量在计划内,不在期限快到时慌手慌脚,也不需交期到时天天加班,更不能删减测试时间.总而言之,就是开发工作有节奏,按部就班到达预期目标. 理想总是好的,可现实总是残酷的.你有过每个周六都加班,每晚都加班的经历没?你有项目完不成,接二连三申请延期发布的经历没?你有过遇见过你委以重任,但他却误了你事的同僚没?如果你工作了一段时间,又恰好又有带过小队伍的经历.我想你应该也遇到过这些问题中的一个或几个吧

会写代码的项目经理

也许文章的标题起的带有讽刺的味道,其实这也是本人的一个小小的疑问. 一个项目的领导者该不该对技术有一点深度的了解或者说项目经理应该是一个不错的高级程序员.我的头跟我说项目经理不需要写代码也不需要对技术有多了解,只要对项目的进度有个整体的把控就OK了.这种观念一开始我不太赞同,项目经理对技术的实现没有一定的了解,在安排进度的时候是不是会草率的了事.给程序员预留的时间也不能准确的控制好,是不是会导致项目的进度控制的不太合理: 在参与开发项目的时候尤其是有一定技术含量的时候,更要项目经理对技术的实现有