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

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

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

您的工作条件如何?私人办公室、共享办公室、团队房间?单独编码还是两人一起编码?您的工作条件如何改变您每天花在编码上的时间?如果您可以在家工作,这会提高还是降低您的工作效率?

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

最重要的是:您对自己的生产力感到满意吗?如果不是,您会做出哪一项更改对其影响最大?

有帮助吗?

解决方案

我是一名企业开发人员,Joel Spolsky 在 StackOverflow 的几个播客中将我称为“沮丧”的人。因为我的公司不是一家软件公司,所以没有什么商业理由去实施软件专家建议公司采取的许多措施来提高开发人员的生产力。

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

我想说,我每天 85% 的时间都在编码,此时我可以集中精力并且有一项主要的编程任务。但更常见的是,我每天大约 50% 的时间用于编码。如果生产支持(与编码无关)很繁重,我一天可能只会用 15% 的时间来编码。

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

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

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

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

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

其他提示

实际上,平均每天可能需要 4 或 5 小时。虽然它“不稳定”,但有时可能会持续 8 或 9 个小时。

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

老实说,有很多拖延症。我发现它有点像作家阻塞。有时只是很难开始,但是 2 小时的良好课程就可以完成很多工作。这只是您必须经历的所有准备工作和实验,以确保您采取正确的方法。无休止地盯着窗外、检查电子邮件等等……

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

我对此感到高兴吗?
我是否希望能够每周盯着屏幕 30 个小时来完成指定的作业?

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

好吧,我通常至少迟到了十五分钟,啊,我使用侧门 - 这样,Lumbergh看不见我,呵呵 - 嗯,嗯,之后,我只是在大约一个小时的时间里摆出了大约一个小时。

...是的,我只是盯着我的桌子;但是看来我在工作。午餐后,我也可能再做一个小时。我会说,在给定的一周里,我可能只做大约15分钟的实际工作。

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

对我提高工作效率最有帮助的是在一天的头几个小时消除任何干扰,并立即开始执行当天最重要的任务。我需要尽早进入流程。


我推荐看一下《程序员之石》:

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

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

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

@伯纳德戴:我职业生涯的大约 30% 是在公司环境中度过的(目前不是)。通常是在一些失败(或没有失败,但失败)的启动想法,或某种倦怠/改变之后。暂时还可以,很高兴认识来自完全不同背景的人(谁会想到和律师和精算师一起玩会这么有趣),但最终我发现太难了早上充满动力(或者假期结束后害怕回去)——可能是因为你定义的原因(只是缺乏关心)。但至少它是很好的经验和想法的来源。你可以在任何地方遇到才华横溢的人(不仅仅是聪明的程序员——我总是试图找出企业背后真正的大脑是谁)。

有趣的是,我唯一一次实践严格的敏捷/XP 是在公司环境中——在这种情况下,可能每天 7 个小时实际动手编写代码(两人一组)——一天之后我从来没有如此疲惫过。不确定这是否是一件好事,也许我只是懒惰。

回答我自己的一些问题:

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

对我花在编码上的时间影响最大​​的是会议的存在与否。当我与每个人都在同一个房间处理敏捷项目时,会议往往是临时的,而且时间很短,因此编码所花费的时间非常长。我还觉得当我在团队会议室时,我花在做非编码事情上的时间更少——有时甚至更少,因为当没有人清楚地看到你的显示器时,很容易浪费时间,无论是意外还是其他原因。 。:)

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

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

在我和妻子一起度过的非编码时间里,我也喜欢出城,尽量不去思考我的项目,我越能保持这种平衡,我的工作效率就越高。

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

最后我想说,恕我直言,我们的职业不应该被视为一项工作,相反,你应该将其视为有趣的事情。

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

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top