As I have grown into a more experienced web developer, I have been thinking a lot more about this tweet by Joel Hooks:
There’s a tendency to jump straight to step 32 of the “new thing” vs focusing on steps 1 and 2.— Joel 🌧 (@jhooks) July 4, 2018
“what’s the next smallest step that we can do?”
Skipping to the end can often lead to failure and hard feelings when you’ve put in a lot of work and it gets a 👎
Baby steps. 🐣
I could spend the better part of a weekend just enumerating all the times that I jumped to a solution for a problem I was working on at the time.1 Skipping past the the important groundwork of framing the problem space, and evaluating, as well as reevaluating, the problem.
Its difficult as an engineer, to have the patience to step back and reevaluate a problem before jumping to a solution. It takes a lot of critical thinking to determine what the actual ask is for a new feature, or what the cause of a bug might be.
The first thing I would generally suggest to new or junior developers is to take a step back from the problem before diving into it with a concept for a solution.
That can either take the form of getting up to go for a walk, grabbing a cup of coffee or tea, or even just sleeping on it to approach from a clear headed state.
In general, I think there are two constants in software engineering (especial web development):
As with most advice however, the key takeaway here is that things change, specifically code will change. Don't feel like you need to write the correct solution the first time you attempt to solve a problem.
Frequently, on your way to that 32nd step in developing your feature or application, you will encounter steps 5, 18, and 27 where you throw out all your current work and rewrite it from the ground up because you discovered another pattern or stumbled across some other insight into your work.
Its ok to accept these rewrites, because if you skipped them and jumped to step 32, you might have missed out on those opportunities to learn more about what you were building.
As I was chipping away at the concepts behind this blog post, I was reminded of the many long summers growing up around the house as a kid helping my dad on some of his small construction projects. These projects varied, and including building out a new back deck, building out a new front deck, redoing our siding, or the multitude of other projects. The part I remembered the most was a saying that my dad taught me:
"Measure twice, cut once"
It didn't really resonate with me too much when I was a little kid, I thought it only applied to construction, however I have now realized that it applies to a lot of things in life as well.
I do think though, that there were a few parts missing from this wisdom, and I would generally expand it to be:
"Measure twice, cut once. Always prepare to buy more lumber."
A part of me would like to think that I have gotten better at the skill of not skipping that groundwork, but I know I still do make the same mistakes.