views:

540

answers:

10

I have a few software developers working for my projects and I would like to provide them a way to register time they spent on real development.

There is good will to register development hours, no force, but we try to avoid techniques like excel sheets register because this is so uncomfortable.

I can track svn commits, but this is unreliable. Developers also helps supporting different projects during the day, so assuming they work on one project by whole day is not true.

I've seen utilities that popups a message every hour to confirm the project you're working on but this is annoying.

Some kind of active-window-title-anaylzer might help (you can get solution name from there in the case of Visual Studio) but I have no experience with such idea.

If you have any experience with programmers/designers work hours registration, please share with me. Thanks

A: 

Try DotProject or XPlanner

Josh Stodola
A: 

An active window analyzer won't give you reliable results, because your developers will swap between programs (Outlook, File Explorer, version control, internet browser, etc.). Your proposed analyzer won't log that time, although it will very likely be part of the development time that the developer puts into the project (software development is not just coding in VS all the time).

tomlog
I spend a lot of time on the phone too. It's hard for me to quantify this so I just make a guess at the end of the day...if I remember.
Steve
Yes, at the end of the day one can tolerably well specify hours working for each of the projects. Anyway, there should be a way to note this, and analyze after some period of time.Then, why not to note this 4 times a day?
twk
The problem is those days where the phone rings many times. These are the days that I'm really really busy and noting times just gets forgotten until a few days later.
Steve
+2  A: 

There're various time tracking software tools as you have probably already seen from doing google searches. But in all honestly you are asking for the Holy Grail of time tracking. For example do you consider a developer staring at her code and thinking as development time? She might stare at the screen for 1 hour and only type for 10 minutes. In this case it looks like they don't work much when really they worked for 1 hour and 10 minutes. I don't mean to say what you asking for isn't a valid thing to want it just seems to be one of those problems that doesn't have a perfect solution.

Good luck.

StarShip3000
The developer would describe 'anyhow' that worked 2 hours (1 + 10 mins as started hour) - full trust here. But I need to give him/her a chance to do it quick and easy.
twk
+6  A: 

Its a good question, and the very best way you can measure hours spent on a development project is not to measure hours spent at all.

You say there is good will to register hours, but I have my doubts. Realistically, from a developers point of view, excessive time management is a distraction for most (perhaps ALL developers on the planet).

I can understand why time is measured so excessively on ODesk. There is a good reason for this, because project time is paid up front by the client to ODesk, and the developer needs to prove to ODesk hours worked. Payment is also guaranteed, and its unlikely oDesk providers and developers ever meet in real life, so there is no trust.

Since its unlikely you're paying your developers upfront, and its more likely you have better trust established, you need to perhaps switch your attention from a management strategy that's cludgy and annoying, to something way more useful.

Yes ladies and gentleman I am talking about Scrum. Throw any notion of keeping hour per hour tabs of your developers out the window (they'll love you for it). And instead introduce Scrum Management into the scenario.

Create some sprints (milestones) for your product development, and in that have a list of iterations (batched deliverable s), try keep your iterations down to a weekly period. Create a product backlog, and make sure you're aware who exactly is working on what. Find someone on the team to act as a scrum master on your behalf, or to take on this responsibility yourself. Make sure you have daily feedback meetings, keep them short and focused, to identify any risks that might get in the way of deliverable s. Let the developers more or less drive the timing process, and get realistic estimates for tasks.

Read a book or 2 on scrum, and get others and team members involved in the learning curve. Tweak the base scrum methodology to best suit your particular style of management, and I assure you, you will have a very happy team.

Measure your time in man days, and try avoid getting on the back of a developer for hour by hour progress...

JL
PS: I've seen hour management taken to the extreme, a fellow worker I once knew was fired after 5 years of dedicated server, because he was out having a smoke break for the 3rd time and forgot to stop his hourly billing!
JL
Great idea, I am aware of Scrum and implementing it for our newest project :)But, as said in my post, the developers are pulled back (from time to time) to other short-time tasks and this is what I would like to analyze.It is best to focus on one task at a time but we are small company (read: not enough people for support) and cannot achieve that.
twk
Scrum eats up a lot more productivity than updating a spreadsheet.
Alan
Thinking back to last Friday when I entered *"1 hour: reporting my work hours"* to our work hour tracking "system" I think I can safely say that I agree with this post.
Esko
+1  A: 

I think you're asking the wrong question and are headed for a slippery slope. There's so much that goes into development that has nothing to do with actually coding.

I think a better solution if you're deadset on tracking something is to track the time spent on activities NOT related to development. Of course there's some grey area there too. For example, a meeting to discuss user requirements should probably be counted towards development even though no coding will get done.

Wade Williams
Agree, but these activities should be recorded anyhow. At the end I have to charge someone for people's time!
twk
+1  A: 

you need something like this dashboard to measure time on task. The only way to know the real software developer time is to have then track it. That way when they switch tasks they stop the clock so to speak. I think the hardest thing would be getting the developers to use it as a measure of how long they work on a certain project or even code module, etc. If you can then use those metrics to reduce distractions and other time sucks, you might at least be able to get a decent swag about how much time they spend coding versus email versus talking to other developers, etc.

mcauthorn
+1 This looks promising - checking...
twk
I used to use PSP and was once trained as a TSP coach. I kind of like the TSP but as a developer who loves seeing his defect types, and a numbers geek, I loved PSP and the metrics it collected. I hope it helps.
mcauthorn
+1  A: 

If you're trying to measure what the developer has as their active window, you have to assume goodwill, because any decent developer can sneak around that if you're trying to turn the screws on them. I spend about a third of my "development time" in Firefox looking at references, for example.

Maybe ask the developers just to keep a log, so you know where their time is going? Whereas that's not ideal, you're never going to do much better than that.

Dean J
Yes, some kind of logging would be good - I think this is what we are discussing about. But these logs should be centrally managed so there is a place for an tool. Any known?
twk
+1  A: 

If you are trying to measure the time spent on distractions and disturbances and other task, would it not be in your developers interest to give you this information willingly?
You said somewhere that you are implementing scrum.

If you really have to either take it up at the daily scrum, making it a part of the ritual, or add a very short daily meeting at the end of the day. Let the developers guesstimate how much of the day was spent on distractions and disturbances and other tasks. To me that feels like it will be as close to "correct" as any other way of measuring, considering the difficulties involved.

So, instead of having the developers note down the time, make it the scrummaster's job to sum it up, and make this as painless as possible for the devs. Make sure that the developers gain something tangible from doing it as well, otherwise it is going to end up on the impediment list awfully quickly.

As Dean J implied, you have to trust the developers anyway.

Mikael Ohlson
Yeah, this is ideal. Unfortunately we meet only twice a week, other days working remotely.But I agree that at-the-end logging would work very well. Instead of meeting I should provide a tool for it.
twk
A: 

yes, try new XPlanner: XPlanner-Plus is an open source tool for agile, scrum teams. It's based on XPlanner and has a new and improved features, such as fancy design, email notifications for tasks' status and others.

xplanner-plus
A: 

Trying to measure a developer's work hours is the wrong notion. A proper question to ask is what is a programmer's effectiveness. That can't be measured by coding time, time spent sitting in front of a computer, or the like.

As Joel Spolsky put it well in a blog on software craftsmanship, software development "...is not a manufacturing process."

A related but somewhat different discussion appears in this SO article on an invasive programmer productivity measurement tool.

Joel Hoff