推特公司对软件工程师高效工作的建议-转载

“我们很难测量软件工程生产力,”推特公司工程效率部的技术总监彼得.塞贝尔说,“但是我们肯定能破坏它。”

在一场脸谱网举办的大会上,塞贝尔这样说道。这场大会集结了1800名来自约400家不同公司的软件工程师,他们开发的应用软件可能会被数百万甚至数十亿人使用。它讲述了一个关于推特公司软件进化升级的故事:一个有许多不同程序语言的babel,像Ruby, Java, and Scala,因为需要各类工程师一起协作,所以很难完成,但最后(大体上)完成了。

“作为一个知道如何去升级软件的行业,我们也知道如何去升级企业,如何有效管理使数千人在一起工作。”

“但是我们还没有解决如何升级软件工程和人员组织之间的连接。而且可能我们甚至还没有意识到这个问题的重要性。”

“我们对这类工作的投入少得可怜,”他说道。

塞贝尔认为,软件工程师小组从实际开发产品的人员中抽取适当的人数,并交给他们协助工程师的任务,可以提高小组的工作效率。他说,“一个十个人的团队不需要特别安排人员负责提高工程效率。”他们自己就能知道自己需要什么。“一个一百人的工程师团队,分出两个人”为其他人提供更好的工具和其他支持,“他们这一百人的产出和101个工程师的产出一样多。”

他还建议,一个一千人的团队需要255名工程师来支持其他人的工作,他们这一千人的工作效率等同于1400名工程师。而一个由一万名工程师组成的团队(脸谱工程师团队的规模),则需要分出三分之一的工程师负责提高工程效率。

这些有效工作的工程师们能一点一点的去除影响生产力的问题,而在一家大公司里每一点提高都会产生叠加效应。例如,每天减少五分钟的整理时间能让工程师们多增加百分之一的实际工作时间。减少找工具的次数-即使每次事故仅造成一两分钟的工作中断-能极大提高生产力。塞贝尔解释说,工作的每一次中断会打破工程师顺畅的工作状态,而研究表明,工程师通常需要十五分钟重新进入状态。好的工具也十分重要,塞贝尔说,因为好的工具能带来工作乐趣。“给员工提供好的工具跟给他们提供好的事务一样:都能使工作更加愉悦。”

工程效率团队也能减少塞贝尔所谓的“技术债务”,这是在工作过程中为使工程师继续前进而没有以最佳方式解决的问题,尽管他们知道之后还是得想办法解决。

塞贝尔承认他还没有解决推特的技术债务问题。“我的梦想是有一支高级工程师团队,”他说,“他们能顺道解决一些编码问题,进行升级然后再回到他们的本职工作。如果团队里有这类能主动解决一些无暇处理的事情的人,会带来巨大的工程收获。”

时间: 2024-10-18 22:31:14

推特公司对软件工程师高效工作的建议-转载的相关文章

第三十六篇:IC公司软件工程师的重要性

最近, 由于项目合作关系,结识了某软件公司的CEO, 和他交流过程中,聊到一个话题, 那就是现在IC(集成电路)公司的硬件工程师与软件工程师的配备比例,他给出的一些大公司(如Q, B 等芯片fabless巨头)的数字是1比3, 从而得出结论:软件工程师的COST太大, IC公司应该转换思路, 将软件业务外包, 降低成本. 关于这个问题, 我没有明确的答案, 是应该外包, 还是不外包. 从几个角度去分析一下: 1. 核心技术角度: IC公司的软件工程师往往需要参与到芯片设计过程中, 虽然说现在SO

软件工程师的职业成长

软件工程师的职业发展是有不少版本的,据书中介绍,证明个人能力的方法和模型有以下几种: 职业发展--考级之路 职业成长--Steve McConnell版本 职业成长--大公司版本 职业成长--自我评估 版本有很多,关键是能找到合适自己的职业成长之路.所谓的版本也只是给我们提供一个借鉴的机会而已. 巴克斯顿说技能的反面是"解决问题".在学习算法技能的过程中,如果真想提高自己的技能的话,首先应该把基础打好,通过不断地练习,把低层次的问题都解决掉,这样你才能有时间去解决较高层次的问题. 知道

第三章 软件工程师的成长

3.1 个人能力的衡量与发展 软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.在团队的大流程中,是每个具体的个人在做开发.测试.用户界面设计.管理.交流等工作.因此个人在团队中也有独立的流程. 以开发人员为例,流程如下: *通过交流.实验.快速原型等方法,理解问题.需求或任务 *提出多种解决办法并估计工作量 *其中包括寻找以前的解决方案,因为很多工作是重复性的 *与相关角色交流解决问题的提案,决定一个可行的方案 *执行,把想法变成实际中能工作的代码,同时验证方案的可

CEO应向软件工程师学习的7个技能

软件工程师的哪些技能是值得CEO学习的?显然,软件工程师是逻辑的,高效的,注重细节的,有计划的,并且大多数CEO也是如此.但是,软件工程师还有一些更微妙,甚至是令人懊恼的品质,那么CEO是否可以从中学习呢? 1.懒惰 优秀的工程师(不只是软件工程师)是懒惰的:他们喜欢自动化重复性的工作,不愿意做任何不必要的工作.会议和文书工作通常都属于这一类.通过避免不必要的工作,软件工程师可以更高效,并且有更多的时间去做更多有用的工作.CEO也应该力求高效率的偷懒.删除不必要的活动,把精力和时间放到提升价值的

现代软件工程 第三章:【软件工程师的成长】练习与讨论

1.选哪一种医生? 分析一下四个医生, a)属于新手类型,能力有限,经验不足,主要能完成功能就可以.bug会比较多,代码也不规范. b)属于创造类型,既然能想到新技术和新方法,说明必然有一定的经验.但是创新虽好,也可能失败,成功可能性跟自己的能力有关. c)属于熟练类型,对于代码的实现相当熟悉,能够快速的实现功能需求. d)属于糊弄类型,相当之不靠谱,明眼人都知道,但有时瞎猫碰见了死耗子或者民间高手也有可能出现. 你要选哪类医生? 我会选c类型的医生,虽然创新不能保证,但可以保证最基本的功能需求

转载:CEO应向软件工程师学习的7个技能

软件工程师的哪些技能是值得CEO学习的?显然,软件工程师是逻辑的,高效的,注重细节的,有计划的,并且大多数CEO也是如此.但是,软件工程师还有一些更微妙,甚至是令人懊恼的品质,那么CEO是否可以从中学习呢? 懒惰 优秀的工程师(不只是软件工程师)是懒惰的:他们喜欢自动化重复性的工作,不愿意做任何不必要的工作.会议和文书工作通常都属于这一类.通过避免不必要的工作,软件工程师可以更高效,并且有更多的时间去做更多有用的工作. CEO也应该力求高效率的偷懒.删除不必要的活动,把精力和时间放到提升价值的任

构建之法(第三章 软件工程师的成长)

第三章的主要内容是:评价软件工程师的主要方法 1.个人能力的衡量与发展 软件工程包括了开发,运营,维护软件的过程中的很多技术,做法,习惯和思想. 软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程",软件开发的目的是为了提高软件的开发运营维护的效率,以及提升用户的满意度,软件的可靠性和可维护性. 1.1 IC在团队中的流程是怎么样的呢?以开发人员为例,流程如下. 1)   通过交流.实验.快速原型等方法,理解问题.需求或任务 2)   提出多种解决办法并估计工作量 3) 

构建之法学习(第三章 软件工程师的成长)

本章的主要知识要点:评价软件工程师水平的主要方法 1.  软件开发流程不光指团队的流程,还包括个人开发流程,因为软件团队是由个人组成的.在团队的大流程中,是每个具体的个人在做开发.测试.用户界面设计.管理.交流等工作.因此个人在团队中也有独立的流程. 以开发人员为例,流程如下 *通过交流.实验.快速原型等方法,理解问题.需求或任务 *提出多种解决办法并估计工作量 *其中包括寻找以前的解决方案,因为很多工作是重复性的 *与相关角色交流解决问题的提案,决定一个可行的方案 *执行,把想法变成实际中能工

第三章 软件工程师的成长随笔

软件工程包括了开发.运营.维护软件的过程中的很多技术.做法.习惯和思想.软件工程把这些相关的技术和过程统一到一个体系中,叫"软件开发流程", 软件开发流程的目的是为了提高软件开发.运营.维护的效率,以及提升用户满意度.软件的可靠性和可维护性. 把每个人的工作有序的组织起来,就是团队的流程.个人在团队中也有独立的流程. 软件开发的工作量和质量怎样衡量? 1.项目/任务有多大.2.花了多少时间.3.质量如何.4.是否按时交付. 职业成长:微软公司的软件工程师等级:SDE(初级软件工程师).