你的工作日有多少时间花在编码上?

28

最近我一直在思考软件估算问题,并对编码所花费的时间有许多疑问。我很想听听那些有至少几年软件开发经验的人分享想法。

当你需要估算完成某项任务所需时间时,你每天花多少小时编码?其他非编码时间都用来做什么?

你是否发现自己比队友花更多或更少的时间编码?你觉得自己比他们完成更多或更少的工作吗?

你的工作条件是怎样的?私人办公室、共享办公室、团队房间?是单独编码还是与其他人配对编码?你的工作条件如何影响你每天编码的时间?如果你可以在家工作,这会有益于还是有害于你的生产力?

你使用哪种开发方法论?瀑布式?敏捷式?从一个方法论转变到另一个方法论是否对你每天编码的时间产生了影响?

最重要的是:你对自己的生产力满意吗?如果不是,你会做出什么单一改变会对它产生最大的影响?

9个回答

21

我是一名企业开发人员,就像Joel Spolsky在几个StackOverflow播客中所说的那样,“忧郁”。因为我的公司不是软件公司,所以没有太多商业理由实施许多软件专家建议企业采用的开发人员生产力措施。

我们没有私人办公室和双30英寸显示器。我们的源代码控制系统是Microsoft Visual Source Safe。就这样说吧。另一方面,我能做很多事情来填满我的日子,并为我的工作增加一些变化。我涉及业务分析、项目管理、开发、生产支持、国际实施、培训支持、团队规划和流程改进。

我会说当我可以集中注意力并有一个主要的编程任务时,我有85%的时间来编码。但更常见的情况是,我只能有50%的时间来编码。如果生产支持(非编码相关)很重,我可能只有15%的时间来编码。

我工作过的大多数公司都没有积极评估敏捷流程或测试驱动开发,但他们也没有做好瀑布模型;他们的大多数开发人员都像剪切和粘贴的牛仔一样悠闲自得。

偶尔我会在家工作,但是由于有孩子,这很可怕。我在办公室更加高效。

我的生产力很好,但是如果消除中断因素和心理上下文切换的成本,它可能会更好。生产支持和项目管理开销都会造成那些类型的中断。但两者都是工作的必要组成部分,所以我认为我不能摆脱它们。我想考虑的是重组团队,让参与项目的人可以专注于项目,而其他人可以通过专注于支持来阻止中断。然后在项目结束时进行交换。

不幸的是,没有人想做支持工作,所以我希望实现的另一个生产力改进措施是以下之一:

  • 更好的测试工具/方法,以加快单元测试速度
  • 更好的业务分析工具/技能,以提高新开发的质量并限制其对生产支持负担的贡献

18

实际上,这可能平均每天需要4到5小时的时间。尽管有时候会有8或9个小时的情况,但这种工作量是“不稳定”的。

在我认识的所有软件开发人员中,写生产代码(而不是研究)的人,4至5个小时似乎是实际编码所需的最大时间。还有很多其他事情要做。

说实话,有很多拖延症。我觉得这有点像作家的障碍。有时候很难开始,但是一个好的2小时的会议可以完成很多工作。这只是你必须经历的所有准备工作,为确保你采取正确的方法而进行的试验,以及看窗外和检查电子邮件等无数的准备工作...


6
我每周工作37.5小时。
其中30个小时(80%)应该用于向我们的客户计费。
实际上,我发现我大约使用60%的时间在实际客户系统上编码,20%的时间用于尝试新技术和阅读博客,还有20%的时间浪费在办公室政治和“社交”上。
我对此感到满意吗?
我是否希望我可以每周花30个小时盯着屏幕完成我的任务?
嗯。由于我将20%的时间用于提高自己的技能,因此在有效编码的60%中,我可能比如果我没有这样做的话,在90%的时间内产生更多的成果。
不过,试着向上级解释这个事实吧 ;)

Lars,你提出了一个很好的观点:在工作中自我提高。这让我想问一个关于“闲暇时间”的单独问题! - Brad Wilson

6

通常我会迟到至少十五分钟,嗯,我使用侧门——这样Lumbergh就看不见我了,呵呵——在那之后,我会大约发呆一个小时。...

...是的,我只是盯着我的桌子看;但看起来好像我在工作。午餐后,我还会再这么做一个小时。一周中,我可能只有真正实际工作了十五分钟。

对我来说,切换项目是拖延的主要原因。当我刚完成一个项目时,我倾向于延迟启动分配给我的下一个任务。我的头脑仍然感觉像是在编码模式下,但我必须先估计创建规格的费用。因此,我必须从编码转向打电话给客户等其他任务,这让我感到不舒服。

对于我最有帮助的提高生产力的方法是在第一时间消除任何干扰,并立即开始今天最重要的任务。我需要尽早进入状态。


我建议看看程序员之石:

我们知道压力会损害某些认知功能。这些功能的丧失可以准确地解释为什么编程很难,并向我们展示许多其他改进组织事物的机会。其后果会触及语言、逻辑和文化规范。点击此处获取介绍...


5
我大约有40%的时间在编码,另外40%的时间用于非编码活动(例如与我们不靠谱的构建服务器斗争,或者弄清楚为什么NUnit再次失败却没有错误消息,或者尝试弄清楚为什么我们的代码停止与楼下的Oracle服务器通信...等等)。其余的20%通常是浪费时间或开会。
我对自己的生产力满意吗?绝对不满意。我每天工作7个小时左右,其中大约有2.5个小时用于编码。我更愿意将一天中的5-6个小时用于编码,只有1个小时用于其他事情(可悲的是,唯一能够实现这一点的事情——PM停止每天玩弄构建脚本——不可能发生)。不幸的是,由于我是公司开发人员,管理层并未看到时间被浪费。因为我在那40%的时间内完成的工作比大多数员工一周内完成的工作还要多(包括PM),他们认为我很有生产力。

4
@Bernard Dy:我职业生涯中大概有30%的时间在企业环境下度过(目前不在此类工作中)。通常这是在一些失败的(或者并没有完全失败,但是逐渐消失了)创业想法之后,或者由于某种原因而导致的疲劳和转变。一开始还好,能够认识来自完全不同背景的人们也是很不错的(谁会想到律师和精算师也可以很有趣呢),但是最终,我发现早上起床时缺乏动力(或者度假后害怕回去)变得太难了——可能是因为像你所说的那样缺乏关注。但是这是很好的经验,并且可以提供创意的灵感。你可以在任何地方遇到聪明的人(聪明的人不仅仅是程序员——我总是试图寻找企业背后真正的智囊)。

有趣的是,在企业环境中我唯一实践过严格的敏捷/XP方法——在那种情况下,每天大约有7个小时都是手动编码(与另一个人配对)。那天结束后,我从来没有感到过如此筋疲力尽。不确定这是好事还是坏事,也许我只是有点懒惰。


2
为了回答我的问题:
我所在的团队只进行粗略任务估算,因此很难追踪每天的工作小时数。就我的职业生涯而言,编码所花费的时间从25%(主要是管理)到85%+(一周工作4天,在家办公,每周开会半天)不等。如果必须猜测,平均值可能在60%左右。
对我编码时间最大的影响因素是会议的存在或不存在。当我在敏捷项目中与所有人在同一房间里工作时,会议往往是临时的和非常短暂的,因此编码时间非常长。当我在一个团队房间里工作时,我也感觉自己做非编码事情的时间比较少,有时候少得多,因为当没有人清楚地看到你的显示器时,浪费时间很容易,无论是否出于意外或其他原因。 :)

2

我是一名外包人员,基本上整天都在编写代码,我有两个项目,没有太多时间去做其他事情,这意味着我不能接受更多的工作,因为我可能无法完成任何任务,这是一个很好的政策,你应该只接受自己能承担得起的工作。

还要记住,你应该留出充足的时间休息,因为如果你不休息,你的生产力就会下降。关键在于规划和纪律性。

在我不编写代码的时间里,我与妻子在一起,也喜欢离开城镇,不想我的项目,我平衡得越好,我的生产力就越高。

当我没有太多工作时,我喜欢阅读编程博客,也喜欢学习编程。

最后,我想说的是,在我看来,我们的职业生涯不应该被视为一份工作,而应该被看作是一件有趣的事情。


1

我是一名软件开发人员,在研发部门工作,每周工作40小时。

实际编码只占我的时间的10%左右。在非编码时间里,我主要进行测试、评估、比较和记录结果。我还花费大量时间为我将要编写的代码编写规范并进行研究,参加当前项目的头脑风暴会议等。

我可以说,与我的队友(也是软件开发人员)相比,目前我是最多编码的一个;但这取决于我们每次工作的任务。我不认为实际编码就是努力工作。如果有一个好的规范、适当的研究和对项目的良好理解,编码只是一种形式,并且几乎可以顺利快速地进行。

在这里,我们有一个共享办公室,有两个团队。我们大多数时间都是单独编码,很少成对编码。我的工作变化很大,我曾经花费大量时间编码,但对编码并没有很好的理解。如果我有一个任务,我会立即开始编码,并且每次意识到自己做错了什么就重新编码,这样效率非常低下。

现在的开发方法学介于原型和螺旋之间。这显然改变了我编码的时间。

我对自己的生产力感到满意,与我的截止日期和目标相关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接