Some Background:
I'm doing off-the-shelf software ( desktop apps).
The Problem:
I am leading a group of 10 developers+designers ( basically all the knowledge workers type) and I give them quite a lot of leeway in doing their job. I don't enforce office hours and I don't glue them to their chairs for 8 hours a day, I don't look over their shoulders, I don't enforce dress code etc etc.
However, I do
- Define Road Map for my product under development using Redmine. And I define the tasks that should go into each Road Map. The date for a Road Map is fixed ( Usually on a monthly basis) and usually, One sprint per Road Map.
- After that, I assign the tasks to the developers and ask them to provide estimation for each task. After looking at their estimation, I will either take out or put in more tasks for a particular sprint so that they don't over-commit and can't deliver in the end.
- I ask them to fill in the amount of time worked on a specific task everyday and the percentage of the progress so that I can keep track of the progress.
- I would review their progresses at the beginning of every week to see whether I need to move some tasks to the next sprint.
That's it, no standup meeting, no daily monitoring etc. I fully trust that my developers are honest in their time estimation and working time/progress reporting.
As a developer myself, I understand the tendency of the developers to overestimate their ability and the very real possibility ( near certainty actually) that software projects do delay unless prevented by supernatural forces, that's why I don't strictly hold them accountable for unable to deliver all of the tasks they commit at the beginning of a sprint.
Everything sounds pretty good from a developer-centric point of view, right? I am not the pointy-hair manager as described in this question! This should ensure best working relationship between the employers and knowledge workers, no?
The reality is that, some of the developers have a hard time to
- Complete all the tasks defined in a Road Map.
- Fail to provide time estimation for all the tasks assigned to them, despite my repeat probing
- Fail to consistently fill in the amount of time worked on a specific task. They will update the redmine task, but that is when they are done with it. Usually, they are late in finishing a task-- something that always happen in software development.
- And despite repeated probing, they still fail to consistently fill in the amount of time worked everyday.
- Usually, they are able to complete only 50-60% of the predefined tasks for a sprint.
- I do talk to them when I see them fail to do 2) --4), but they keep on repeating the same mistakes.
I could have imagined the worst and assume that their inability to complete all tasks and to provide daily progress consistently as a sign that they are slacking off. At least this is my visceral feeling. But I want to be a more enlightened boss; I want to give them the benefit of doubt. As I review their timesheet on redmine everyday, my heart sinks if the timesheet isn't updated. But still, I would like to believe that the developers are doing their job and they are just forgetting to update the timesheet (ie, I trust them, I want to!). Nonetheless, the inability of the programmers to clearly indicate their progress ( or the lackof) to me strains the emotional part of me.
What should I do in this case? On one hand I understand that the amount of time spent on a task/ the ability to finish all tasks during a sprint doesn't really correlate with a creative worker's true output. But on the other hand, I would need a way to really understand the creative worker's true output and to reward them appropriately.
How to measure the creative workers' output who are not filling in the timesheet?
Clarification
The reason I ask them to fill in spent time is for their own good, so that they can get better and better at estimation time by comparing their estimated time and their spent time. But, let's say if they are too busy to put effort in improving the their estimation ability, since the data is there, we can use Redmine plugins to enable us to better predict when the software will finish ( think of EBS in fogbugz).It's not for the purpose of controlling them.
Secondly, Redmine allows one to indicate the progress (% done), which is why I would want my devs to update the progress done. I would want them to indicate the amount of time left for a task, but this is not really possible via current system.
Thirdly, as to why I want them to fill in timesheet and estimate the progress? The reason is that our software needs to have a Road Map, so that we know by when we can deliver what. We need to be responsible to our customers and clients and by responsible, I mean, we need to be able to tell them the feature they requested can be implemented by what date.
Fourth, When I talk about reward after completing a project, I am not talking about using monetary stick to move them towards my goal, but rather, i want to know which developers are more capable and therefore can be promoted etc. I know it's pretty hard to do the whole Rewarding System correctly without impacting the morale of the company, but you gotta have a system to recognize the good ones from the bad ones. At the very least, I need to know how to pay everyone fairly. If you treat everyone the same ( the good ones and the bad ones, the hardworking ones and the lazy ones), pretty soon the good ones will feel that their contribution is not appreciated and they would just leave.