It’s easy to forget the progress you’ve made when you spend so much time looking ahead. You see yourself now in the context of where you’d like to be. It’s rare we take a step back and look back at everything it took to get to where we are in this very moment.
Often, we obsess over that next mile, not appreciating the fact you made it through the preceding one thousand miles.
One day whilst coding away I was getting frustrated with myself over something fairly trivial. ‘I should know this by now, why am I such an idiot?‘. Then a thought came to me from some place unknown. ‘Imagine explaining what you’re writing, right now, to you in your first year of being a programmer’. It dawned on me that I wouldn’t have the slightest clue what was being said, I would have no idea what any of this code meant. I remember being amazed at the software people built.
I’d see something like an operating system, or a social media website, and would be blown away that a team of programmers somewhere could have created something so complex. I also remember a friend saying to me ‘wow, you pretty much know the syntax now without looking it up’. Not the standard library, not the framework, the actual syntax of the language. As in, where the brackets go etc. My friend was impressed by that. Imagine even thinking about that now?
It was almost inconceivable to me that fellow humans built some of the software I interacted with. I dabbled with SQL in my first year or two, trying to create a user login form in PHP, and I imagined the thousands of tables and SQL queries that people designed and wrote for something like Facebook. It was daunting and intimidating. But fast-forward a decade and I find myself working on projects of similar complexity (although not size). After that little thought experiment, I found myself smiling. I felt a sense of pride.
Despite the current frustration, that now seemed trivial, I’d become the kind of engineer I couldn’t ever imagine being, not all that long ago. Building the kind of software that’s complexity seemed baffling back then.
So take a look at what you’re working on right now, and imagine explaining it to yourself when you were just starting out. Chances are, you’d look like some kind of wizard. Chances are, you probably never saw yourself ever getting to the level you’re at right now. So, stop obsessing over where you’re not. By all means, have a plan for the future, targets and aims etc, but don’t forget about the last thousand miles you just covered.
Another thought experiment I did was, imagine explaining what you’re doing right now to someone who has no coding experience. You would struggle to explain one line of what you just wrote to most people. Now imagine the other thousand lines, the design decisions, the non-functional considerations like bottlenecks, memory usage, scalability, the CI/CD pipelines you set up, all of it.
Imagine how long it would take for you to explain all of that to someone until it all made sense? It would be virtually impossible, unless they spent thousands of hours doing what you did to get to where you are.
Despite what you think your short-comings and weaknesses are, I bet you that you are an incredibly impressive individual. Remember that.