28

我最近一直在考虑软件估算,我有很多关于编码时间的问题。我很想听听那些至少有几年软件开发经验的人的来信。

当您必须估算您将花费在某件事上的时间时,您一天中有多少小时用于编码?什么占据了其他非编码时间?

你发现你花在编码上的时间比你的队友多还是少?你觉得你完成的工作比他们多还是少?

你的工作条件如何?私人办公室、共享办公室、团队室?单独编码还是成对编码?您的工作条件如何改变了您每天花在编码上的时间?如果您可以在家工作,这对您的工作效率有帮助还是有损?

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

最重要的是:您对自己的工作效率满意吗?如果不是,你会做出哪一个改变会对它产生最大的影响?

4

9 回答 9

21

我是一名企业开发人员,乔尔·斯波尔斯基(Joel Spolsky)在几个 StackOverflow 播客中称其为“沮丧”。因为我的公司不是一家软件公司,所以几乎没有商业理由来实施软件专家建议公司为提高开发人员生产力而采取的许多措施。

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

我会说我一天中有 85% 的时间用于编码,那时我可以集中精力并且有一项主要的编程任务。但更多时候,我一天中有 50% 的时间用于编码。如果生产支持(非编码相关)很繁重,我可能只有 15% 的时间用于编码。

我工作过的大多数公司都没有积极参与评估敏捷流程或测试驱动开发,但他们也没有做好瀑布式工作;他们的大多数开发人员都像剪切和粘贴的牛仔一样肆无忌惮地工作。

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

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

不幸的是,没有人愿意提供支持,所以我希望的其他生产力改进措施将是以下之一:

  • 更好的测试工具/方法来加速单元测试
  • 更好的业务分析工具/技能,以提高新开发的质量并限制其对生产支持负载的贡献
于 2008-08-16T21:25:03.607 回答
18

实际上,它可能平均每天 4 或 5 个小时。虽然它“笨拙” - 可能有几天可能有 8 或 9 个小时。

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

老实说,有很多拖延。我觉得它有点像作家们的障碍。有时它只是很难开始,但是一个好的 2 小时的会议是完成了很多工作。它只是您必须经历的所有准备工作,以及确保您采用正确方法的实验。无休止地盯着窗外检查电子邮件等......

于 2008-08-16T21:38:59.863 回答
6

我每周工作 37.5 小时。
其中 30 个小时(80%)我应该向我们的客户收费。
实际上,我发现我在实际客户端系统上使用了大约 60% 的编码,20% 用于试验新技术和阅读博客,20% 被浪费在办公室政治和“社交”上。

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

好。由于 20% 的时间用于提高自己的手艺,因此在 60% 的有效编码中,我可能会比我在 90% 的时间里如果不这样做的情况下产出更多。
再说一次,试着向高层解释这个事实;)

于 2008-08-16T22:30:51.413 回答
6

嗯,我通常至少迟到十五分钟,啊,我使用侧门——这样Lumbergh 就看不到我了,嘿嘿——然后,呃,在那之后我就在外面闲逛了大约一个小时。

...是的,我只是盯着我的办公桌;但看起来我正在工作。午饭后我也这样做了一个小时。我会说在给定的一周内,我可能只做大约 15 分钟真正的、实际的工作。

对我来说,项目之间的切换是拖延的一个重要原因。当我刚刚完成一个项目时,我倾向于拖延开始分配给我的下一个要求。我的头脑感觉仍然像在编码模式,但我必须先估算创建规范的费用。所以我不得不从编码切换到打电话给客户之类的,这感觉很不舒服。

最能帮助我提高工作效率的是在一天的最初几个小时内消除任何分心,并立即开始一天中最重要的任务。我需要尽早进入流程。


我建议看一下 The Programmers' Stone:

我们知道压力会损害一些认知功能。失去这些功能可以准确地解释为什么编程很困难,并向我们展示了许多其他改进我们组织事物方式的机会。其后果涉及语言、逻辑和文化规范。点击这里查看简介...

于 2008-08-17T00:34:27.497 回答
5

我每天大约有 40% 的时间用于编码。40% 用于非编码活动(例如与我们粗略的构建服务器打架,或者弄清楚为什么 NUnit 失败而没有再次出现错误消息,或者试图弄清楚为什么我们的代码停止与楼下的 Oracle 服务器通信......像这样的垃圾)。另外 20% 通常用于拖延或开会。

我对自己的生产力满意吗?绝对不。我每天工作 7 个小时左右,我花了大约 2.5 个小时进行编码。我宁愿每天花 5 到 6 个小时进行编码,而只花一个小时来处理所有其他事情(遗憾的是,会发生这种情况的一件事——PM 不再每天都在玩弄构建脚本—— - 不会发生)。不幸的是,由于我是一名企业开发人员,管理层并没有看到时间被浪费掉。因为我在一天中 40% 的时间里完成的工作比大楼里的大多数无人机在一周内完成的工作要多得多(包括 PM),所以他们认为我的工作效率很高。

于 2008-08-16T21:47:45.137 回答
4

@Bernard Dy:我大概有 30% 的职业生涯是在公司环境中度过的(目前还没有)。通常是在一些失败(或没有失败,但失败)的启动想法或某种倦怠/改变之后。有一点没关系,很高兴认识来自完全不同背景的人(他们会认为与律师和精算师一起出去玩会很有趣),但最后,我觉得很难得到早上起来有动力(或在假期害怕回去之后) - 可能是因为你定义的原因(只是缺乏关心)。但它至少有很好的经验和想法的来源。你可以在任何地方遇到聪明的人(不仅仅是聪明的程序员——我总是试图找出谁是企业背后的真正大脑)。

有趣的是,我唯一一次练习严格的敏捷/XP 是在公司环境中——在那种情况下,每天可能有 7 个小时是实际动手编写代码(成对)——在那一天之后,我从未如此筋疲力尽。不确定这是否是一件好事,也许我只是懒惰。

于 2008-08-17T03:23:34.350 回答
2

回答我自己的一些问题:

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

对我来说,编码时间对我影响最大的是会议的存在与否。当我和每个人在同一个房间里进行敏捷项目时,会议往往是临时的,而且时间很短,所以编码所花费的时间非常多。当我在团队房间时,我还觉得我花更少的时间——有时是更少的时间——做非编码的事情,因为当没有人清楚地看到你的显示器时,更容易浪费时间,不管是意外还是其他. :)

于 2008-08-16T20:36:02.877 回答
2

我做外包,基本上我整天都在编码,我有两个项目,我没有太多时间做其他事情,这意味着我不能做更多的工作,因为我无法完成任何事情,这是一个好政策,你应该尽可能地服用。

还要记住,你应该有空闲时间,非常重要的是要充分休息,因为如果你不这样做,你就不会很有效率。这里的关键是计划和纪律。

在我的非编码时间里,我和妻子一起度过,我也喜欢出城,尽量不去想我的项目,我越是平衡这种平衡,我就越有效率。

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

最后我想说的是,恕我直言,我们的职业不应该被视为一部作品,而应该将其视为有趣的东西。

于 2008-08-17T07:34:31.550 回答
1

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

我花了... 10% 的时间实际编码。在我的非编码时间,我主要测试、评估、比较和记录结果。我还花很多时间为我将要编写的代码编写规范和研究我将要编写的代码,我参加当前项目的头脑风暴会议等。

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

在这里,我们有一个共享办公室,有两个团队。我们大多是一个人编码,很少一对一。我的工作改变了我编码的时间;过去我大部分时间都花在编码上,对编码没有很好的理解。如果我有一项任务,我会立即开始编码,并且每次我意识到自己做错了什么时都会重新编码,等等。这是非常无效的。

开发方法现在介于原型和螺旋之间。它清楚地改变了我编码的小时数。

我对自己的工作效率感到满意,这与我的截止日期和目标有关。

于 2012-03-21T07:33:49.087 回答