As software engineers, we tend to be lifelong learners. Suppose our current job becomes less challenging, and there is nothing more to learn. In that case, we usually resort to one of the following:
- Find a more exciting team or company.
- Start something on the side in our free time.
- Bring more advanced concepts to the current team and codebase.
It’s the third one that is the most worrying because it happens way too often, and it’s probably more harmful than you think.
This article isn’t preaching against new technologies, architectures, etc.
Instead, I’d like to point out that in about 95% of the cases, they are introduced years before they are actually necessary. Instead of making the software more straightforward, this makes the software more complex.
What should we do instead if we want to learn more new stuff then?
Well, one thing is to invert your focus. Instead of chasing something more complex, take on the challenge of making what you have much simpler.
In fact, making the existing codebase and architecture more straightforward than it already is — is a considerable challenge, in the process of which you are guaranteed to learn new things!
Suppose you feel the urge to learn something new and deal with a more complex task. Perhaps, you should talk to your business stakeholders to see if they have an idea that they don’t even want to mention to product & engineering. (Because they think it’s too challenging or impossible)
These types of ideas are where there is real gold for learning, innovation, and valuable complexity!
If you have other ideas on the topic, feel free to send me a Tweet!