Process managers are obsessed with the idea of eliminating waste in a process. Whether it is material waste or wasted time, there are masters programs and PHDs focused strictly on solving these efficiency problems.
There is another kind of waste which runs rampant at most companies, wasted developer/engineer time. This waste doesn’t have a directly traceable cost. Often times, a developer doesn’t even realize his or her time is being wasted. They are just jumping through the hoops laid out before them to accomplish their task, but what could they have accomplished in the same time had those hoops not been in the way?
Developer waste can come from all levels of the process. A feature might not have been fully defined and required re-work. That wasted time isn’t necessarily the developers fault. It might be a process manager’s responsibility to make a spec for the feature. It might be a product managers responsibility to talk to the customer and define what problems they are facing and how to solve them. It might be an internal customers fault for failing to communicate their needs or failing to understand their needs.
All these people could cost a developer time, but do you know who wastes more developer time than anyone else? Developers. I can guarantee that 100% of processes I have been involved in I have wasted my own time, whether I am aware its happening or not. Lets categorize that wasted time into two buckets; definitely my fault and partially my fault.
##Developer waste that is definitely my fault##
- I could have made bash aliases when a project started to save me 10 seconds 1000 times over the course of a month
- I could have made a module for a chunk of code immediately instead of waiting (for what?!)
- I could have followed TDD practices and written my tests first to guide my development, especially if testing is a requirement to merging code
You get the point. We know how to be efficient developers (and humans), but actually doing those things regularly is the difficult task. Something as small as bash aliases will save you an immense amount of time over the course of a month. We don’t look at that time as wasted because it doesn’t feel lost. After all, you were busy.
##Developer waste that is partially my fault##
- I could have taken the time to better understand the customer needs instead of being a code monkey
- I could have asked more questions
- I could have planned and thought ahead in my work to identify a dead end sooner
- I could have communicated a dead end sooner, or with the right people, to get the missing information sooner in the process
This list is full of things I could have done to avoid wasting my own time. I may not be directly responsible for the waste, but there were things I could have done to reduce or minimize that waste. Problems of this nature may be out of your hands, but there are actionable steps you can take to make it better. Don’t be a victim. Complaining about process looks a whole lot better when you are looking internally for ways to improve the situation first.
The problem with wasted developer time is two-fold. First, most developers are either unaware their time is being wasted, disinterested in the work or mission of their job, too worn down by the grind of process to care, or too quiet and timid to complain about their wasted time. Second, companies cannot see what is wasted. Complaining about wasted time means nothing unless you can articulate what could have been accomplished with that time.
How to fix it? You can never fix it, but you can always improve it. As a developer, look at your own desk first to improve your workflow. If you work with developers and technology is crucial to your businesses success, recognize that their time is a limited resource. There is no one size fits all solution. Some problems might be solved by distancing developers from customers, others might be solved by sitting them side by side. Any solution begins with honest retrospection.