阅读更多

0顶
0踩

非技术

转载新闻 技术领导要不要写代码?

2016-03-01 13:43 by 副主编 mengyidan1988 评论(4) 有5243人浏览



本文作者:余晟,微信公众号:余晟以为(yurii-says)
技术领导要不要写代码?这是一个问题。

我刚工作的时候就听说,程序员(那时候还没有“码农”的说法)是 吃青春饭的,到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。这时候技术领导一行代码也不写,而且下属写代码的水平仍然赶不上自己,团队的生产率提高却是板上钉钉的事实——当然你还有其他办法,比如优化人员 组合引入用生产率与自己相同甚至比自己更高的程序员,这样的效率更高了。

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

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

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

就我个人而言,我觉得写代码而且不愿意放弃写代码能力的技术领导更可爱。程序员大多是单纯的,一起写代码,哪怕只写几个功能,也会告诉大家“我不是来发号施令的,而跟你们一伙的”。
  • 大小: 33.8 KB
  • 大小: 16.6 KB
0
0
评论 共 4 条 请登录后发表评论
4 楼 aaronluo 2016-03-10 08:36
真没时间写,我现在的情况每天跟打杂一样。。。当然,我只是个一线经理
3 楼 panchaoxz 2016-03-07 11:22
能写出好代码,才能让CODER 真心佩服。服众!
2 楼 小小莫 2016-03-02 15:43
是的!目前我公司的情况就有点相反!!!
1 楼 zhongli 2016-03-01 22:09
要写。至少我是。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Jquery使用小技巧汇总

    下面列出了一些Jquery使用技巧。比如有禁止右键点击、隐藏搜索文本框文字、在新窗口中打开链接、检测浏览器、预加载图片、页面样式切换、所有列等高、动态控制页面字体大小、获得鼠标指针的X值Y值、验证元素是否为空、替换元素、延迟加载、验证元素是否存在于Jquery集合中、使DIV可点击、克隆对象、使元素居中、计算元素个数、使用Google主机上的Jquery类库、禁用Jquery效果、解决Jquery类库与其他Javascript类库冲突问题。 1. 禁止右键点击 $(document).ready(function(){ $(document).bind("contextmenu",fun

  • js屏蔽鼠标右键js屏蔽鼠标右键js屏蔽鼠标右键

    js屏蔽鼠标右键js屏蔽鼠标右键js屏蔽鼠标右键js屏蔽鼠标右键

  • C#禁止textbox复制、粘贴、剪切及鼠标右键的方法

    主要介绍了C#禁止textbox复制、粘贴、剪切及鼠标右键的方法,涉及C#针对窗口消息的处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下

  • 开发中可能会用到的jQuery小技巧

    1) 禁止右键 在开发 Web 应用的时候,有些情况需要禁用右键单击功能。使用此代码,jQuery 开发人员可以在网页上禁用鼠标右键点击。代码如下: 代码如下: $(document).ready(function() { //catch the right-click context menu $(document).bind(“contextmenu”,function(e) { //warning prompt – optional alert(“No right-clicking!”); //delete the default context menu return false;

  • 禁止鼠标右击 网站定制自己的右键菜单

    禁止鼠标右击的若干种方法,以及一些常用的JavaScript技巧! 网站定制自己的右键菜单 蛮好用的!

  • 网页中怎么屏蔽鼠标右键和部分按键功能

    使用HTML里的<body>标签来作修改,它只有以下短短的一行代码: <body oncontextmenu=self.event.returnValue=false> 这里,定义了oncontextmenu。使得右键的值为false,起到了屏蔽右键的效果。 接下来要讲的,就是屏蔽左键(当然不是屏蔽所以功能,不然网页就没用了)的选定功能。 老样子使用<body>标签来修改 <body onselectstart="return false">

  • 最简单的禁用鼠标右键菜单---禁止鼠标选中

    //禁止鼠标右键菜单 document.addEventListener('contextmenu',(e)=> { e.preventDefault() }) //禁止鼠标选中 document.addEventListener('selectstart',(e)=> { e.preventDefault() }) 无非就是阻止了默认的行为

  • 禁止鼠标多次点击选中div中的文字

    来源:http://www.cnblogs.com/myjiejie/archive/2010/12/04/1896327.html 今天遇到一个很少有的问题  做div的点击计数事件  因为里面有文字 所以 当点击多次时  文字老被选中  可郁闷了   查了查资料

  • 获得鼠标坐标的方式以及相关的鼠标天使移动案例

    鼠标坐标获取 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <tit.

  • JavaScript-----禁止鼠标选中文字和禁止鼠标右键上下文菜单

    一.禁止鼠标选中 selectstart 开始选中 二.禁止鼠标右键菜单 contextmenu 主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单

  • 禁止鼠标右键和鼠标选中

    禁止鼠标右键菜单 禁止鼠标选中(selectstart 开始选中)

  • js禁用右键及跳转

    禁用右键:oncontextmenu 控制跳转 说明:a标签的onclick事件的返回值可以决定是否跳转,返回true可以跳转,返回false不可以跳转 <!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title>...

  • 禁止鼠标点击选中

    【代码】禁止鼠标点击选中。

  • html中禁止鼠标选中文本

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>user-select</title&gt...

  • javaScript屏蔽鼠标右键,F12及其它审查元素功能

    代码加密是一项很头疼的事情,在这记录下一种自我安慰型的“代码加密”方式。 //屏蔽鼠标右键 document.oncontextmenu = function () { return false; } document.onkeydown = function () { var e = window.event |

  • 禁止界面选中图片,文字以及右击操作

    1.禁止界面选中图片和文字 <img src="img/icon-logo.svg" alt="" class="icon-logo-copy" draggable="false"/> body{ -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none;...

  • jquery禁止右键,jquery禁止复制代码

    禁止右键的代码:     $('body').bind('contextmenu', function() {       return false;     }); 禁止复制的代码: $('body').bind("selectstart",function(){return false;}); 鼠标事件: $(function(){  $('a').mousedow

  • 屏蔽鼠标右键功能

    window.document.oncontextmenu = function() { ​ return false ​ }

Global site tag (gtag.js) - Google Analytics