如何有效地测量开发人员的工作时间?

10

我有一些软件开发人员正在为我的项目工作,我想为他们提供一种注册他们实际开发时间的方法。

我们有良好的意愿记录开发时间,但不强制要求。我们试图避免使用像Excel表格这样不太方便的技术进行记录。

我可以跟踪svn提交,但这是不可靠的。开发人员还会在一天中支持不同的项目,所以假设他们整天都在一个项目上工作是不正确的。

我曾见过一些实用程序每隔一小时弹出一个消息来确认你正在工作的项目,但这很烦人。

某种类型的活动窗口标题分析器可能会有所帮助(您可以从Visual Studio中获取解决方案名称),但我没有使用过这样的想法。

如果您有关于程序员/设计师工作时间登记的经验,请与我分享。 谢谢


此问题似乎不属于主题,因为它涉及工作场所相关的问题,而非特定的代码相关问题。 - Brad Larson
11个回答

10

这是一个好问题,而且您可以衡量开发项目花费的时间的最佳方法不是测量实际的工作小时数。

您说有意愿记录时间,但我对此持怀疑态度。从开发者的角度来看,过度的时间管理实际上会分散他们的注意力(也许全球所有开发者都是如此)。

我可以理解为什么在ODesk上如此过度地测量时间。这是有原因的,因为客户提前向ODesk支付项目时间,并且开发者需要向ODesk证明所工作的小时数。付款也是有保障的,由于oDesk的服务商和开发人员很少见面,因此没有信任关系。

既然您很可能不会预先支付开发人员的费用,而且很可能已经建立了更好的信任关系,您需要将注意力从笨拙而烦人的管理策略转移到更有用的事物上。

是的,女士们先生们,我正在谈论Scrum。抛弃保持每个开发者的工时记录的任何想法(他们会为此感激不尽)。相反,将Scrum管理引入场景中。

为您的产品开发创建一些迭代周期(里程碑),并在其中列出一些迭代(分批可交付项),尝试将您的迭代周期保持在每周一个周期。创建一个产品待办事项清单,并确保您知道谁正在处理什么。找个人担任您的Scrum Master,或者自己担任这个职责。确保进行每日反馈会议,让开发者大体上推动时间进程,并获得任务的现实估计。

阅读一两本关于scrum的书,并让其他人和团队成员参与学习曲线。调整基本的scrum方法,以最适合您特定的管理风格,我向您保证,您将拥有一个非常快乐的团队。

以人天为单位衡量时间,尽量避免对开发者进行小时制进展监控......


PS:我见过时间管理被极度执行的情况,我曾经认识一位同事,他为服务器奉献了5年之久,但因为第三次抽烟时忘记停止计时而被解雇! - JL.
很好的想法,我知道Scrum并正在将其应用于我们最新的项目 :) 但是,正如我在帖子中所说,开发人员不时被拉回到其他短期任务上,这就是我想要分析的内容。 专注于一项任务是最好的,但我们是一家小公司(即:没有足够的人力支持),无法做到这一点。 - twk
2
Scrum比更新电子表格消耗更多的生产力。 - Alan
1
回想起上周五,当我在我们的工时跟踪“系统”中输入“1小时:报告我的工作时间”时,我认为我可以安全地说,我同意这篇文章。 - Esko

3

你可能已经从谷歌搜索中看到了各种时间跟踪软件工具。但是,坦诚地说,你正在寻找时间跟踪的圣杯。例如,你是否认为开发人员盯着她的代码思考是开发时间?她可能会盯着屏幕1小时,只打字10分钟。在这种情况下,看起来她并没有工作很多,但实际上她工作了1小时10分钟。我不是说你所要求的无效,只是似乎这是一个没有完美解决方案的问题。

祝你好运。


开发人员会描述他工作了2个小时(1小时加上10分钟,因为开始时间),在这里完全信任他。但我需要给他/她一个快速简便的机会来完成它。 - twk

2

我认为你问的问题不对,而且会走向一条很滑的坡。开发中有很多与实际编码无关的因素。

如果你非要追踪什么东西,我认为更好的解决方案是追踪与开发无关的活动所花费的时间。当然,这里也有一些灰色地带。例如,讨论用户需求的会议可能应该算作开发时间,即使没有编码工作。


同意,但这些活动无论如何都应该记录下来。最终我必须为人们的时间向某人收费! - twk

1
这取决于您使用的IDE - 如果您正在使用Eclipse,则建议使用Mylyn插件。您可以测量每个任务花费的时间。任务可以从每个著名的任务存储库中获取,例如Tuleap。详情请参见此处
用户只需将任务设置为活动模式 - 并在完成任务时停用以停止计时器。我认为Mylyn将支持这样的过程 - 如果任务状态更改,则会触发活动模式(如果关闭则停用任务)
有时开发涉及使用浏览器或终端。 Eclipse也可以用作浏览器和终端 - 因此开发人员无需离开Eclipse - 因此几乎可以测量与任务相关的每个活动。

1
你需要像这样的仪表板来测量任务时间。了解真正的软件开发人员时间的唯一方法是让他们跟踪它。这样,当他们切换任务时,可以说他们停止了计时。我认为最困难的事情可能是让开发人员将其用作衡量他们在某个项目或甚至代码模块上工作多长时间的标准等。如果您能够使用这些指标来减少干扰和其他时间浪费,您可能至少能够获得有关他们花费多少时间编码与电子邮件相比与其他开发人员交谈等的合理估计。

+1 这看起来很有前途 - 正在检查... - twk
我曾经使用过PSP,并接受过TSP教练的培训。我有点喜欢TSP,但作为一个喜欢看到自己缺陷类型和数字极客的开发人员,我更喜欢PSP以及它收集的指标。希望这能有所帮助。 - mcauthorn

1
如果您想测量开发人员的活动窗口,您必须假定他们具有善意,因为任何一个像样的开发人员都可以在您试图对他们进行压力测试时绕过它。例如,我大约花费三分之一的“开发时间”在Firefox浏览器中查看参考资料。

也许可以要求开发人员保持日志,这样您就知道他们的时间去哪了?虽然这不是理想的,但您永远不会比这更好。


是的,某种形式的日志记录会很好 - 我认为这就是我们正在讨论的内容。但是这些日志应该是集中管理的,因此需要一个工具来处理。有任何已知的工具吗? - twk

1

如果您想要测量花费在分心、干扰和其他任务上的时间,那么让开发人员自愿提供这些信息不是符合他们的利益吗?
您曾经说过正在实施Scrum。

如果真的需要这样做,可以在每日Scrum会议上谈论此事并将其纳入仪式,或在一天结束时增加一个非常短的每日会议。让开发人员估算一天中有多少时间花费在干扰和其他任务上。对我而言,这感觉是最接近“正确”的一种测量方式,考虑到涉及的困难。

因此,不要让开发人员记录时间,而是让Scrum Master来总结,同时尽可能使开发者感到轻松愉悦。确保开发人员从中获得一些切实可行的东西,否则它很快就会出现在阻碍列表中。

正如Dean J所暗示的,您必须信任开发人员。


是的,这很理想。不幸的是我们只有一周见两次面,其他时间都在远程工作。 但我同意最后记录会非常有效。我应该提供一个工具来代替会议。 - twk

0
尝试测量开发人员的工作时间是错误的观念。一个恰当的问题应该是程序员的效率是什么。这不能通过编码时间、坐在电脑前的时间或类似的方式来衡量。
正如Joel Spolsky在软件工艺博客中所说,软件开发“……不是制造过程。”
在这篇SO文章中也涉及了相关但有些不同的讨论侵入式程序员生产力测量工具

0

我绝对不建议您使用开发人员被强制使用的任何时间测量软件。这会严重干扰开发人员的注意力。

相反,可以使用以下简单的技术:

电子表格:适用于小型项目或开发团队

创建并在线共享电子表格可能是最简单的方法之一。将项目任务添加到电子表格中,分配任务给开发人员,让开发人员估计他们的任务所需的时间,让他们根据自己的意愿更新任务状态(非常粗略地在0%和100%之间),让他们指定完成任务所需的实际时间(小时)。

因此,在电子表格中,您可能有以下列:任务名称、分配给、预估时间、实际时间、完成百分比。

Google Drive 电子表格可能是答案。这是一种非常简单快速的方法,最大程度地减少了开发人员的干扰。

Scrum:适用于中大型项目或开发团队

任务和 Scrum 信息记录在办公室的板子上和/或可以使用特殊的 Scrum 应用程序。一个好的网络 Scrum 应用程序是 Pivotal Tracker,我建议任何规模的项目或团队都可以使用。

关于Scrum的更多信息: http://en.wikipedia.org/wiki/Scrum_(development)


在这两种情况下,产品负责人(客户或与客户打交道的人)、项目经理和所有开发者都能更好、更快地实现:
  • 沟通
  • 估算
  • 查看团队和所有参与者的进展

0

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