英文好文:项目经理应该把30%的时间用在编程上

  英文原文:Engineering Managers Should Code 30% of Their Time

  在一个科技公司里,软件技术经理用在编程上的时间应该不低于总工作时间的30%。无论是管理一个团队,还是一个分部,还是整个公司,当技术经理用在编程上的时间低于30%时,他执行职责的能力就会发生严重退化。

  我的这个断言可能跟那些我看到的想成为团队首领的软件程序员们期望的情况完全相反。每次晋升,程序员们都期待花在编码上的时间会大幅度减少,当 从“leader”爬到“经理”职位时,就应该彻底脱离编码活动。而且,他们期望以一种“动口动眼不动手”的方式来保持对代码库的熟悉。再上级的领导就跟 编码完全没关系了(如果有的话)。

  大概一年前,当时我的时间被越来越多的其它事情占用,例如招聘,管理,开会等。我就发现,作为一个技术首领,当花在编程上的时间低于某个比例 后,管理效果和工作效率就会出现问题。之前我写过一篇短博客阐述过这种体验和观点,但没有展开具体的描述。这里,我将会对这个观点展开更详细的论述。

  为什么要坚持编程活动

  很多人认为,作为管理者,应该退出战斗第一线,专注于大战略和管理工作。当然,管理者把大部分的时间用在这种事情上是应该的。但是,在我们这样 一个行业里,因为我们允许或要求管理者几乎不再去编程,现实让我们付出了沉重的代价。一旦一个人停止编码,他和程序员们关心的事物之间的重要联系就会退化。当这种情况发生时,决策、计划和干群关系就会出问题,从而瓦解了将技术人员提升到管理职位的良好愿望基础。

  项目开发评估能力

  程序员的百宝箱中最重要的一个绝活就是估计工期。如果没有准确预估的能力,整体计划是不可能正确的出台的。大家也知道,做为一个族群,程序员们 对工期的估计是臭名昭著的——糟糕的不能再糟,事实上,当从程序员口中得到一个预估的数字后,公认的方法是将它乘以二。通常,程序员都会对开发工作抱有非 常乐观的态度,但如果我们使用“estimate traction”理论,就会发现,编程活动表现出特别易变的特征。因为我可以用很多方法实现一个功能,当我们在还没有深入细节之前,我们的估计就是不可 靠的。

  技术债务

  另外一个事情是,对于技术债务给 项目造成的影响,技术经理必须掌握第一手的资料。如今,技术债务这个术语非常流行,常被用来当作争论的弹药——优先开发新功能还是先重构老代码。对“技术 债务”这个词的内涵熟悉的人通常最容易发起论战。作为技术经理,你不仅仅要熟悉这个概念,而且它们会在你判断何时偿还技术债务的决策中起直接作用。经常写 代码的经理拥有更多更有价值的信息来判断何时/如何做出这样的决策。

  知情的连续性

  我并不是随意选择30%的比率的。我是基于自己的经验,将足够的时间参与到开发活动中,你很容易就能时刻掌握代码库的任何变化。如果时间太少,你对开发动态的掌握就是断断续续,无法连成线。一旦断了线,我就需要重新理顺脉络,由此得到的惩罚就是浪费了额外的时间。

  分担责任

  作为负责人,你不可能让所有决策都由你制定或由你批准。但你需要了解所有决策的前因后果和背景知识,来辅助这些决策。最终,你要为这些决策的后果负责,你对项目情况的掌控能力要能匹配你的这份责任。

  积极参与编程赢得团队尊敬

  大家需要明白:要想成为一个成功的经理,你需要为团队成员提供服务,促进开发,确保他们完成任务。我曾在一篇博客里写过如何诊断和修复经理们有 问题的干群关系。但是对于的管理程序员来说,你需要热爱编程。因为你的团队在编程,如果你在编程上做榜样,他们都会对你肃然起敬。

     阅读感悟以前就碰到过,技术人员往往是佩服技术比自己强的人。所以如果不能帮助下属解决技术问题。只会说,任务施压,只会导致离心越来越远。

  达到30%的障碍

  尽管付出了最大努力,我仍然在保持30%的编码时间上遇到了很多的阻碍。包括下面这些:

  工作繁多:在一个创业公司里,你总有忙不完的工作需要去做,即使在公司有规模、壮大后,如何对众多都很重要的事情排优先级也是一种考验。技术经理有很多职责,完全会占满他的70%的时间。下面就是一些:

  • 领导和照顾团队:这是一个技术经理的第一要务。你已经不能只为自己的工作负责,你要为你的团队能保持最好的工作状态负责。指导团队任务,解决纷争,思考如何优化工作条件来提高工作效率和舒适度,这都需要时间。
  • 做决策:随着职权的增加,技术经理需要花更多的时间放在各种各样战略上的统筹和计划等事务上。起初,也许只是一些技术方面的决策,但之后,产品开发和竞争策略方面的事务将会占去很大一部分。
  • 招聘:经理,总监,副总们,CTO都需要组建自己的团队,有时需要迅速组建。一个好的招聘高手能带来很大帮助,技术经理在这样的事情上的作用是无可替代的。好的技术经理会活跃的跟上级保持沟通,不断的将自己团队中的优秀人士推荐出去。
  • 客户:随着技术经理职权的增加,他们经常会对外抛头露面。他们会被带去参加“推销会”,期望他能带去一些有深度的话语。或当重要客户不高兴时被叫去灭火。
  • 公关:资深技术经理会把一部分时间奉献给公开演讲,写博客,或者报刊上发表文章。不论你在这些活动中出了多少力,这些写作、编辑、排练、差旅、出席活动等都是花费时间的。

  夺回时间:上面我说的这些活动都是一个技术经理应该投入时间的事情。下面要说的是我从经验中发现的一些陷阱,是它们在阻挡我努力保持20%最低限度的编码时间,至今仍站在我面前,妨碍我重回30%的目标。

  • 勇于说不:高成就意味着要努力工作。然而,做事要稳妥,一个技术经理最重要的职责就是,当你的团队负担过重或接近这种状态时要勇于说不。如果你这个时候不说不,其他人就会开始对你的计划和工期承诺指手划脚。
  • 开会:为如何高效的开会出谋划策已经成为了一帮人的职业,这是有其自身原因的。我的职业生涯中浪费在会议中的时间算是最多的了。尤其是不断的面试或出席必须由团队首领出席的会议。

  失败的策略

  当在探索如何夺回我的编码时间时,有很多的方法并不奏效。

  • 少睡:这种方式虽然对我有巨大的诱惑,但其实牺牲睡眠时间没有一点效果。你的大脑需要休息,缺少睡眠会影响情绪并降低工作效率。
  • 只看头文件:我以为这种方法可行,但实践中,只看提交的C++代码的头文件对你的管理工作的帮助甚少。
  • 专一:作为团队首领,你只关注代码库里的一个项目也许是可以的,但对于总监或更高级别的人来说,你应该对负责的所有东西都要熟悉、了解。
  • 委托:有时候为了多做工作,会将一些事情随意的交给他人做,但实际上一些像写报告这样的事情你一定要认真嘱咐才行。

  成功的策略

  尽管走了很多死胡同,我还是发现了一些成功的方法:

  • 时间分段:我的日程表上没有被预先分配的时间是非常少的。想起来这也是很显然的。于是我专门为编程特地分出一些时间段。实践中,这些时间段经常会被重新调整,虽然每周只挤出8小时,效果是完全不一样的。
  • 委派:委派要有技巧,尤其是在你对如何执行抱有强烈想法并有能力去做时。有很多原因导致一个经理反对将任务委托他人,但事实上每个原因都应该被当作一个现存的需要解决的问题,而不是一个不可逾越的障碍。没有什么比放手让一个你信赖的人替你主持一个会议能释放你更多的编码时间了。
  • 工作时间:将时间分段,工作时间里尽量避免打扰。在这些时间段之间的时间里,我会干一些不重要或不需求注意力长期集中的事情。

  最后几招

  下面是一些经验建议,送给那些发现自己试图达到30%但无法接近的技术经理们:

  • 学习如何读代码。跟写代码比起来,这是一种完全不同的技巧。
  • 指定会议流程,对会议进程保持控制。不参加任何没有计划的会议。
  • 用一台好用的电脑。你喜欢MacBook Air?不,别用它。
  • 清楚如何访问一个开发环境,这样当有修改时可以快速测试。
  • 记住你是把一小时分成5个时间段使用的人。如果有事情需要一小时,在日程表上标明。
  • 20–30%是我自己的发现。你的也许跟我不同。评估你自己的(你修复一个紧急bug需要多少时间?你知道代码库中麻烦最多的程序是哪一块吗?随机找一段程序,看看你是否知道是做什么的。如果不能,说明你需要更多的时间)。
  • 分类列出哪些事情什么时候做,哪些事情应该完成。(知道Getting Things Done (GTD)的人会看出这是提高工作效率的基本技巧。)
  • 最后,我最近越来越喜欢在纸上看一些东西。看上去好像是一种倒退,比如把需求规范、需要优先实现的功能列表、甚至一段代码打印出来看,但相对于长时间盯着屏幕,这是一种平衡。

  我希望这些方法对你们有用。如果你有其它更好的技巧,请在评论里告诉我。谢谢。

时间: 2025-01-28 04:44:28

英文好文:项目经理应该把30%的时间用在编程上的相关文章

项目经理应该把 30% 的时间用在编程上

本文的作者Eliot Horowitz是MongoDB的创始人和技术总监. 在一个科技公司里,软件技术经理用在编程上的时间应该不低于总工作时间的30%.无论是管理一个团队,还是一个分部,还是整个公司,当技术经理用在编程上的时间低于30%时,他执行职责的能力就会发生严重退化. 我的这个断言可能跟那些我看到的想成为团队首领的软件程序员们期望的情况完全相反.每次晋升,程序员们都期待花在编码上的时间会大幅度减少,当从 "leader"爬到"经理"职位时,就应该彻底脱离编码活

新项目经理必读:分析什么是项目经理

一.项目经理的处境 经过数年的打拼,怀着美好的向往,我们终于成了他--项目经理.然而,梦做到最真的时候,往往也是梦醒的时候. 项目经理其实也是悲情人物.从"程序猿"到项目经理,可以说是刚出虎穴,又入狼窝.要知道,做一个合格的项目经理,比成为一个优秀的程序员,还要难得多. 本来以为当上了项目经理,王子和公主从此就可以幸福的生活在一起了,没想到,跋涉的路才刚刚开始.我实在不想打碎这美好的梦想,这有些残忍,但清醒的痛着,总好过麻木的睡着.更何况人生本来就是一个接一个的杯具,每个角色都有他的难

项目进度控制:项目经理的重要职责

项目进度控制应该算是项目经理的一项重要职责.而俗语说的"时间就是金钱"放在这里就体现得再明显不过了.项目管理其实和自驾车回老家过年是相同的,在实际上,按照项目的定义,"自驾车回老家过年"其实也是一个不折不扣的项目,只是它更加的贴合大家的生活,也更容易引起共鸣,那么我们就拿它来做例子说明好了. 假如从乘客的角度看,如果坐了很久时间的车,但是我们却没有达到预期的目的地的时候,那么我们就会产生疑问,一般都会去向司机询问"到哪里了",而如果司机的回答没有

优秀的敏捷项目经理是项目成功的尚方宝剑

如果按照思维定式来考虑已有的Scrum框架,项目中本没有敏捷项目经理(Agile PM)这样的角色.而在另 一些敏捷方法中--例如特征驱动开发(FDD)人们仍然依仗项目经理(PM).但项目经理的角色已更多转变 为负责项目行政方面,而非负责协调开发团队及其活动方面,或是处理资源问题方面(也远非项目管理知识体 系--PMBOK中所描述的传统意义上的项目经理).仍旧以特征驱动开发(FDD)为例,以上描述的是开发经理 的职责而不一定是项目经理的职责.在战术层面上,敏捷项目经理应该比普通项目经理看得更远,

项目经理的眼:一切都是项目 - 项目管理系列文章

笔者是技术出身,曾担任过软件工程师等职位,现在已经转型做管理(项目管理,产品管理,部门管理),所以今天就讲讲项目经理对于项目的一些看法.心得和体验. 本文受程序开发,软件工程思想影响,在现在的编码中,最主要的还是面向对象程序分析与设计,简称OOA和OOD.所以,在软件工程师眼中,一切皆为对象.今天,我们这里说的是:在项目经理眼中,一切皆为项目. 我们知道,在最新的项目管理知识领域中,划分成"整体.范围.时间.成本.质量.人力资源.沟通.风险.采购.项目干系人"共10大领域的内容,但是我

艾伟也谈项目管理,项目经理成长日记(7)——说是细,做的粗

估计绝大部分的公司都在提倡一个口号:"注重细节."但是往往是口号容易喊,行动却是千辛万苦,何谓细节?也就是自身工作的每一个环节.每一道流程的琐碎小事,而这些小事又常常容易被人忽略.有很多人有雄才大志,内心中充斥着舍我其谁的非凡气魄,但其眼高手低,小事不屑,大事难成,最终只落得一事无成的悲哀. 软件开发亦是如此,提倡了许久的注重细节,更有甚者许多公司标榜自己的优势在于:"我们更注重细节."然而如果说我们要做到和自己提出的口号一致的时候,我们该如何去做?该做什么的事情才

项目经理 架构师的区别

项目经理和架构师的岗位职责 项目经理和架构师这两个职位虽然在工作内容和职责上不同,但是在国内的企业中这两个职位的职责经常会放在一个人身上,在中小型公司中更是如此,一个人既是项目经理又是系统结构的设计者.在比较正式的企业中,也会存在同一个在这两个职位间相互转化的情况,例如从架构师转为项目经理.自己对这两块比较感兴趣,希望能够在这两个职位间自如切换.因而在"猎聘网"找了对这两个职位的说明,摘录如下,作为自己学习和提高的目标. 项目经理 1. 负责项目进度管理.质量控制.人员管理.风险管理,

12 个让项目经理比程序员更痛苦的问题

论语·子张>: 子夏曰:"仕而优则学,学而优则仕". 后半句"学而优则仕"更为人熟知,按我浅薄而世俗的理解,这话的意思是,由学可以致仕,就是说,你学问大了,就能当官.比如苏东坡,比如柳宗元,比如诸遂良,比如孔子,比如李斯,比如苏秦,比如范仲淹,比如欧阳修,比如海瑞,比如杜甫--这种情况,在古代实在是数不胜数. 学而优则仕这种传统,在软件开发领域也有体现:很多人会因为技术工作做得好而走上管理岗位.然而,这样走来的技术领导,在刚晋升时,往往会面临很多问题,经历痛苦

大家觉得这样的项目经理是不是傻逼......

问题描述 我弄完个东西....就过来只关心按钮放那个位置网页的标题改一下一些不痛不痒的问题程序的逻辑一点也不关心(其实他也不懂)还尼玛说这个这个下午做完啊,我草合着我现在为了你那点P事要停下我手头重要的活.....后来好了我跟他说这些事你找设计人员去.... 解决方案 解决方案二: 解决方案三:你私下抱怨一下也就算了.也许你在他那个位置上,谁知道呢,又没有真正比试过,也许还不如他呢.解决方案四:幼稚的做法只能过个嘴瘾,其实伤害不了别人,只不过把阴损传给自己和身边的人,会让你变得气虚血虚影响你小身