Developers want to solve technical problems rather than hash out requirements.
They want to apply the breadth of their technical knowledge to design appropriate solutions, learning and acquiring new skills along the way.
They want to enter into a “flow state” for prolonged periods of time, focusing on solving the problem at hand. Every software developer has experienced being so immersed in their work that hours flew by.
This is where the real enjoyment of software development lies.
Picking up some work to find the underlying need hasn’t been fully articulated is annoying, although quickly addressed with a quick conversation.
Continuing work to hit another blocker that can’t be as easily fixed is more annoying, requiring emails and perhaps another conversation.
Sometimes, the work becomes completely blocked as the need for further analysis emerges. Seeking consensus and clarification is now required.
The developer must decide whether to wait, perform the analysis or switch to something else entirely.
In the worst case, the analysis is complicated, time-consuming and requires multiple conversations – things like clarifying business rules, functional behaviour and exception handling.
While senior developers can often step into the analyst role, whether they should be doing so is a bigger question.
Developers are most effective when they can resolve the right amount of detail early on in their work, before executing it relatively unhindered.
If you are unhappy with your development team, they may need more detailed guidance.
Clear and effective software requirements can help with this.