Moving The Goalposts
Great software engineers aren’t hired to write code, they’re hired to solve problems. You may have seen this quote before in one form or another. Early in your career, someone will define the goalposts for you. Someone will give you small, well defined problems with achievable deadlines.
Later in your career the tables will turn. You will be responsible for identifying problems and solutions. At some point the scope of the problems will surpass what you know. You may panic. It’s ok. Dealing with the unknown is scary.
How will you know where to set the goalposts on problems beyond your scope? In short, you can’t, but it’s ok. We are playing a different game now, the rules aren’t the same. We define the goalposts. If we don’t like where they sit, we move them.
Make An Educated Guess
Planning is half the battle. Whenever I tackle a problem I try to spend 10-20% on planning. You need to immerse yourself in the problem. Question your assumptions and challenge your understanding. Smaller problems will make it easier to set goalposts.
The purpose of the 10-20% investment is twofold. It forces you to spend time with the problem. It also forces you to not spend too much time with the problem. There will always be gaps, holes, and unknown unknowns. You can only anticipate so much and you will never catch it all.
You need to approach solutions to large problems as investments. Good investment plans define when to pull the plug. Too often projects fall into sunk cost fallacy. Your understanding of the problem will evolve as you work to solve it. Responding to change over following a plan.
Running To The Goalposts
Aim to complete a tracer bullet for your goalpost. This will build the big picture and help fill in the gaps. Tracer bullets should not be the final solution. Don’t build your house on top of sand. Go back and clean up the solution, write some documentation on what you learned. Good is better than perfect.
If the goalpost is too far away, you need to measure as you run. Measurement is a necessity. Without it, we wander without direction. Measurements aren’t meant to be 100% accurate. Think of them more like bets. “I can build this in 2 weeks with 70% certainty”. You should be able to articulate rough estimates. If you can’t, you don’t understand the problem well enough.
Reflect On Your Progress
Combine your theoretical with the practical. Think about:
- Is the timeline reasonable?
- Should we continue to invest?
- Are we measuring the right things?
Like Aristotle’s thoughts on Phronesis:
Phronesis involves not only the ability to decide how to achieve a certain end, but also the ability to reflect upon and determine good ends consistent with the aim of living well overall.
Phronesis - Wikipedia
You can apply this same process to your own work. Does your work’s end align with your values? This feedback loop should drive the choices you make on what to work on. Remember, you can define the shape of things to come.
Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use.
~ Steve Jobs
If you don’t like where the goalposts sit, you can move them.