You love thinking. That’s great, but only focus on what’s in front of you at the current moment. Make things as simple as possible. This isn’t just a platitude. Often, the path forward will seem obvious, you’ll feel tempted to jump ahead or take a shortcut, and more often than not, you’ll regret it. Things that seem obvious become blindspots, and when you inevitably encounter a problem or issue you haven’t anticipated you’ll spend the most time searching for things hidden in plain sight. The key is to know where you are and to get feedback as soon as possible to know if it’s the right place. This applies as much to writing code as it does to refactoring it or any other aspect of software craftsmanship, like defining requirements, or communicating with your pair. What’s the best way to get fast and reliable feedback? You guessed it, by keeping the thing you are trying to get feedback on as simple as possible.
However, it’s a mistake to think that keeping things simple is easy. Not only is The level of attentiveness and care that have to be given to process is almost impossible to maintain, but choosing the simplest thing is very seldom the best way to solve a problem. As such, even if you are careful to adhere to the process and mindset I’m advising, you must get comfortable with being wrong. Most of what you write will be thrown away and it can be hard to come to terms with that especially if you are convinced of a better way, which you will be most of the time.
Next time I want to talk a bit more about communication and the idea of code authorship.