阅读更多

0顶
0踩

非技术

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

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



本文作者:余晟,微信公众号:余晟以为(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
要写。至少我是。

发表评论

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

相关推荐

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

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

  • Javascript 、Vue —— 禁止鼠标右键点击事件!

    用户让加上鼠标右键点击事件定义 :oncontextmenu 事件在元素中用户右击鼠标时触发并打开上下文菜单。语法Internet Explorer 8 及更早 IE 浏览器版本不支持。

  • 禁止复制、禁用选择、禁用F12、禁用右键菜单

    【代码】禁止复制、禁用选择、禁用F12、禁用右键菜单。

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

    使用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() }) 无非就是阻止了默认的行为

  • 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...

  • 禁用鼠标右键和键盘的某个键

    // 禁用鼠标右键 // //function DisabledRightClick(btnClick){ // if (navigator.appName=="Netscape" && btnClick.which==3) // {return false;} // else if (navigator.app

  • 禁止鼠标选中,禁用鼠标右键的代码

    document.body.onselectstart=function(){return false;};禁止用户选中网页上的内容,IE及Chrome下的方法一样。使用onselectstart,例如 IE: Firefox下,控制css: body { -moz-user-select: none; } 注:Firefox/Opera不支持onselectstart事件,所以用css方

  • Jquery如何禁止鼠标右键菜单

     jquery中使用contextmenu事件,如果返回true,则允许右键菜单;如果返回false,则禁止右键菜单 导入文件 <script type="text/javascript" src="jquery.min.js"></script> js方法 <script> $(function(){ //contextmenu事...

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

    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

  • 将完全屏蔽鼠标右键,无右键菜单

    蔽鼠标右键,取消选取、避免复制

  • 屏蔽鼠标右键

    一 介绍 用户浏览网站时,经常会使用鼠标右键,进行快捷方式的操作,例如“查看源文件”、“刷新”等。 但是某些网站并不想让用户执行这些操作,这时就需要屏蔽鼠标的右键操作。 那么如何禁止用户使用鼠标右键呢?可以通过JavaScript脚本调用鼠标事件(onmousedown事件)覆盖鼠标右键的快捷菜单来实现。   二 屏蔽鼠标右键应用 运行本实例,当用户单击鼠标右键时,会弹出对话框屏蔽右...

  • 网页禁止鼠标功能代码之禁止鼠标选中

    网页禁止鼠标功能代码   这个代码以前在网上找的,试用效果不错,放这里留备份,我想这个也能算是常用的代码之一了。当然啦,查看源码时鼠标肯定可以用啦,不过,有时不用想那么复杂、要求那么强大,况且源码中的代码比文本多。 1 JavaScript> 2 document.oncontextmenu=new Function("event.returnValue=false;"); 3 docu

  • 破解网页右键菜单被禁止的方法

     遇到网页上有精美图片或者精彩文字想保存时,通常大家都是选中目标后按鼠标右键,在弹出菜单中选择“图片另存为”或“复制”来达到我们的目的。但是,目前有许多网页都屏蔽了鼠标右键,致使我们一按鼠标右键就会弹出个窗口,上面写着XXX版权所有、禁止使用右键之类的话,对此大家都已经习以为常了。   其实,这是由于网页文件中被加入了如下代码: =780) window.open(http://it.com.c

  • 禁止右键代码

    在和之间加入如下语句: <Script Langvage=javascript> function Click(){ if (event.button!=1){alert('本站图片禁用右键!'); }} document.onmousedown=Click;

  • js如何实现禁止鼠标右键的功能

    遇到网页上有精美图片或者精彩文字想保存时,通常大家都是选中目标后按鼠标右键,在弹出菜单中选择“图片另存为”或“复制”来达到我们的目的。但是,目前有许多网页都屏蔽了鼠标右键,那么用js如何实现禁止鼠标右键的功能呢? 1.与禁止鼠标右键相关的JS说明 <script type="text/javascript"> document.oncontextmenu=new Function("event.re

  • 禁止鼠标选中文字

    禁止鼠标选中文字:在页面中写 onselectstart="return false" firefox 实现就更简单了 .aa{-moz-user-select:none;} --------------------------------- ..你直接在    这里加的话, 整个页面都不能复制文字了吧。。  如果是针对IE浏览器的话 ,C

Global site tag (gtag.js) - Google Analytics