← Back

Managing Uncertainty

Tackle the hardest tasks and uncertainties first to prevent problems from piling up and work with greater peace of mind.

By nature, programmers often struggle most with the tasks they find hardest. We usually start with the ones we enjoy most or feel like doing at the moment, because we can choose what to work on from everything ahead of us.

A novice or junior developer always starts with the fun tasks, while a professional programmer chooses the hardest tasks first, or the ones that leave them especially uncertain. The consequences of that choice are clear.

The novice starts work having fun with whatever appeals to them most, without realizing that they are accumulating tasks and problems for later—and that these will keep growing. In the end, they will feel overwhelmed and rush through the hardest problems to solve (probably doing a poor job).

The professional, however, knows this is how things go. Their first priority is to prevent problems from piling up as the time available to complete the work runs out. That is why they tackle what is hardest, or what they do not yet know how to solve, at the beginning of the sprint or work phase.

This is another quality of a professional developer: experience has taught them that leaving uncertainty until the end is never a good idea. If it is eliminated right at the start, the remaining tasks can be approached more calmly and with greater peace of mind—essential states of mind for producing quality software.

At least, that’s how it is for me: I can’t work with any real peace of mind when I have that constant mental nagging about something I still don’t know how to do, or another part of the work I have no idea how to solve yet.

“A good developer always seeks to work with peace of mind; to achieve that, uncertainty must be eliminated at the beginning, not left until the end.”