There’s an interesting dichotomy in software development. If you read what aspiring developers write, it sounds like the dream: grinding Leetcode, posting anonymized resumes for critique, and building endless side projects. But if you’ve spent time inside real software organizations, you’ve likely met some deeply unhappy people.
But there is a lot of opportunity within that dichotomy because it takes a special calling to be both a dream and a nightmare. And a lot of that opportunity lies within mindset.78 Solutions is a mindset — one possible path toward both expertise and joy. It may not work for you and if so, that’s okay because we’re all different. You might think this is hokey crap — and that’s okay, because if that’s how a mindset hits you, you’re probably right. But it may…and if it does there is a path towards both software expertise and joy.
Deliberate practice
The term deliberate practice was coined by a psychologist named Anders Ericsson and his colleagues. They challenged the idea that ’expertise’ was attained through some innate or supernatural talent with the discovery that expertise was closely related to the individual’s assessment of how frequently they practiced deliberately. Deliberate practice is characterized by two key steps:
- break the required skills down into smaller parts. Practice each part repeatedly.
- outside of practice, get feedback from experts and reflect on your own skills and progress.
In his early research, Anders Ericsson came up with a benchmark of 10,000 hours for the attainment of expertise. That number is highly debatable and there are many ideas against it. But it takes time…a long time and a very committed practice.
It can be quite hard to engage in true deliberate practice in software. People have tight deadlines. Technical debt inhibits actual practice. And software changes so quickly that 10,000 hours is counted with a for loop that reaches 8,000 and resets back to 6,000. And a big part of deliberate practice is being able to work on progressively more difficult tasks - that is really hard when we have bosses, sprints and deadlines. Even finding expertise assumes that those experts (as rare and valuable as they are in software) have time and managerial support to mentor.
And then, there is burnout.
But there are still ways. You can (and should) reuse your own code as often as you can. Not only is it the ultimate way to assess your continuous progress but it’s a great way to start building more reliable software faster and cheaper. If you don’t like aspects of your job, automate them and use those tools. In fact, build as many tools as you can and use them constantly. Better yet, document them and let other people use them.
And then there is burnout.
So… you need limits. Your mind needs rest. You can’t just work and work and work and work. Pick 1.5 problems a week and solve them. (That is 78 solutions a year.) If you work within sprints, the challenge is figuring out how to break down your sprint tasks into 3 problems per sprint but with practice you’ll discover that that is a really helpful abstraction that can help you think about reusing code and solving problems elegantly.
But fundamentally, have you ever tried to solve all your problems at once? How did that go?
Consistency and momentum
The key is to keep going. Don’t push yourself to burnout. Aggressively avoid crunches and crunch culture or your brain will pay the price and it will take the rest of you down with it. Treat your career, the perfection of expertise and even building a startup as an ultramarathon instead of a really really really really long 100m dash.
Again, choice comes into this because while consistency is important you need breaks or you will burn out. So sometimes the right choice is to break way from a consistent pattern, unplug and stop solving problems. At least in the way you think. Because when you practice the idea of consistent and constant growth, sometimes rest is the most important 1.5 solutions you can contribute.
Enjoy life
Hustle culture might leave some people wealthy — but it leaves many more burned out, and even more quietly unhappy. Instead, enjoy life. Rest. Laugh at your mistakes. Find moments of ridiculous joy. That’s the real reward of this journey.
Thank you for reading and welcome aboard.