我们每天有多少工作时间花在编码上?

时间:2020-03-05 18:40:05  来源:igfitidea点击:

我最近一直在考虑软件估算,并且围绕编码所花费的时间有很多问题。我很高兴听到至少有几年开发软件经验的人的来信。

当我们不得不估计花费在某件事情上的时间时,我们一天要花多少小时编码?其他非编码时间占什么?

我们发现自己花费的时间比队友编码的时间更长或者更短吗?我们是否觉得自己要完成的工作多于或者少?

工作条件如何?私人办公室,共享办公室,团队室?单独编码还是成对编码?工作条件如何改变我们每天花费在编码上的时间?如果我们可以在家工作,这对生产力有帮助还是损害?

我们使用什么开发方法?瀑布?敏捷?从一种方法更改为另一种方法是否对我们每天的编码时间有影响?

最重要的是:我们对工作效率满意吗?如果没有,那么我们将对它进行哪一项单一更改会产生最大的影响?

解决方案

回答

要回答我自己的一些问题:

我目前所在的团队只能进行总体任务估算,因此很难跟踪每天的工作时间。我要说的是,在我的职业生涯中,编码所花的时间介于25%(主要是管理)到85%+(每周在家工作4天,每周开会半天,开会)之间的任何时间。但是,如果我不得不猜测,平均值可能在60%左右。

对我而言,花时间进行编码的最大影响是会议的存在与否。当我与每个人都在同一个房间里进行敏捷项目时,会议往往是临时性的,而且时间很短,因此花费的时间非常多。我还感觉到,当我在团队会议室时,我花费的时间更少了-有时更少了-做非编码的事情,这是因为在没有人清楚地看到显示器的情况下,很容易浪费时间,无论是偶然还是其他原因。 :)

回答

我是公司开发人员,在几个StackOverflow播客中,乔尔·斯波斯基(Joel Spolsky)都称其为"沮丧"。由于我的公司不是软件公司,因此没有商业理由执行软件专家建议公司为提高开发人员生产率而采取的许多措施。

我们没有私人办公室和双30英寸显示器。我们的源代码控制系统是Microsoft Visual Source Safe。说够了。另一方面,我可以做很多事情,使我的生活充满活力,并为我的工作增添些多样性。我参与了业务分析,项目管理,开发,生产支持,国际实施,培训支持,团队计划和流程改进。

我可以说,我可以全神贯注地完成自己的主要工作,而这时我有85%的时间可以编码。但是更多时候,我一天中大约有50%的时间用于编码。如果生产支持(与编码无关)很重,那么我一天的工作量可能只有15%。

我工作过的大多数公司都没有积极参与评估敏捷过程或者测试驱动的开发,但是他们也没有在瀑布方面做得很好。他们的大多数开发人员的行为都像是轻描淡写的牛仔。

有时候我确实在家和孩子一起工作,这太可怕了。我的工作效率更高。

我的工作效率很好,但是如果消除了干扰因素和心理环境切换的成本,我的工作效率会更高。生产支持和项目管理开销都会造成此类中断。但是两者都是工作中必不可少的部分,因此我认为我无法摆脱它们。我想考虑的是团队的重组,以便项目人员可以专注于项目,而其他人则可以通过提供支持来阻止中断。然后在项目结束时交换。

不幸的是,没有人愿意提供支持,因此我希望提高生产力的另一措施是以下措施之一:

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

回答

实际上,每天平均可能需要花费4到5个小时。尽管其"块状"可能会存在几天,其中可能会有8或者9个小时。

在我所知道的所有软件开发人员中,写生产代码(相对于研究而言)为4到5的那些似乎是实际编码的最大值。还有很多其他的事情。

老实说,有很多拖延症。我发现它有点像作家的障碍。有时很难上手,但是一个好的2小时课程是很多工作要做。它只是我们必须进行的所有准备工作,还需要进行实验以确保我们采用正确的方法。无休止地凝视着窗户并检查电子邮件等...

回答

我一天的编码花费了大约40%。 40%的人从事非编码活动(例如与我们粗略的构建服务器抗争,或者弄清楚为什么NUnit再次失败而又没有错误消息,或者试图弄清楚为什么我们的代码为何停止与楼下的Oracle服务器对话...像垃圾一样)。另外20%通常用于拖延或者开会。

我对自己的生产力满意吗?绝对不。我每天工作7个小时,我花了大约2.5个小时的编码。我宁愿每天花5到6个小时来编码,而只花一个小时专门处理所有其他事情(可悲的是,会发生这种情况的一件事情-PM每天都停止使用构建脚本-是不会发生)。不幸的是,由于我是公司开发人员,因此管理层看不到时间在浪费。因为在一天的40%时间内我要完成的工作比建筑物中大多数无人机(包括PM)要完成的工作要多得多,所以他们认为我的工作效率很高。

回答

我每周工作37.5小时。
这些时间中有30(80%)我应该向客户收费。
实际上,我发现我在实际的客户端系统上使用了大约60%的编码,有20%的人尝试新技术并阅读博客,还有20%的人浪费在办公室政治和"社交"上。

我对此感到高兴吗?
我是否希望我可以每周30小时盯着屏幕看我给定的作业编码?

出色地。由于20%的时间用于提高自己的技能,因此在60%的有效编码中,我可能比90%的时间(如果不这样做)产生的产出更多。
然后再次尝试向更高层解释这个事实;)

回答

Well, I generally come in at least
  fifteen minutes late, ah, I use the
  side door - that way Lumbergh can't
  see me, heh heh - and, uh, after that
  I just sorta space out for about an
  hour. 
  
  ...Yeah, I just stare at my desk; but
  it looks like I'm working. I do that
  for probably another hour after lunch,
  too. I'd say in a given week I
  probably only do about fifteen minutes
  of real, actual, work.

对我来说,在项目之间进行切换是拖延的主要原因。当我刚完成一个项目时,我倾向于拖延开始分配给我的下一个要求。我的感觉仍然像是在编码模式下,但是随后我必须先估算创建规范的费用。因此,我不得不从编码转换为致电客户等,这让人感到不舒服。

对我最大的帮助是在一天的头几个小时中消除所有干扰,并立即从一天中最重要的任务开始。我需要尽早进入流程。

我建议我们看一下The Programmers Stone:

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

回答

@伯纳德·戴(Bernard Dy):我的职业生涯大概花费了30%的时间在公司环境中(目前不在)。通常,在某些失败(或者没有失败,但失败了)的启动想法或者某种倦怠/改变之后。可以的一点点,很高兴认识不同背景的人(他们本以为律师和精算师会很有趣,可以和他们在一起),但最后,我觉得很难可能是出于我们定义的原因(只是缺乏照顾),所以早上起床(或者在经历了一次可怕的假期之后)。但至少它的良好经验和思想渊源。而且我们可以在世界各地见到才华横溢的人(不仅仅是聪明的程序员,我一直试图找出谁才是真正的企业主)。

有趣的是,我只有在公司环境中练习过严格的敏捷/ XP了,这种情况下,一天大概7个小时是实际动手操作的代码(成对出现),一天之后我从未如此疲惫。不知道这是否是一件好事,也许我只是懒惰。

回答

我从事外包工作,基本上我整天编写代码,我有两个项目,没有太多时间做其他事情,这意味着我无法承担更多工作,因为我什么都做不完,这是一个好政策,你应该尽你所能。

还请记住,我们应该有空闲时间,非常重要的是要休息,因为如果我们不这样做,工作效率将不高。这里的关键是计划和纪律。

在我与妻子在一起的非编码时间中,我也喜欢出门逛逛,不要去思考我的项目,我越能使这种平衡变得越有生产力。

当我工作量不大时,我喜欢阅读编程博客,也喜欢学习编程。

最后,我想说的是,恕我直言,我们的职业者不应该被视为一件作品,相反,我们应该将其视为有趣的事物。