On Engineering Learning
I’ve been blessed to be part of the learning journey of several software engineers; throughout my career I’ve been on both sides of the equation, a student to great engineers who taught me a lot, and a teacher to bright engineers who also taught me a lot.
Given I’m a fulltime mentor at my current position, I get the same question by every engineer in our team, regardless of their seniority or experience, the one recurring question is always “What should I learn next?”, some times the variation of “I’m not sure where my career should go next”, or “I feel lost/overwhelmed reading/learning to advance my career”.
Before I can tackle those kind of questions, I want to stress on something; Your learning and development is your sole responsibility first and foremost.
Yes your employer should have an L&D plan for you, and your manager/lead should be your mentor, but you first need to be a student, and a student is always seeking knowledge and opportunities to learn.
A good mentor will speed up your learning, put you on the right path, but will not spoon feed you knowledge.
They will show you how it should be done, help you do it yourself, let you do it on your own and give you feedback, then finally help you teach it to someone else.
But to do that, you have to be thirsty and motivated to learn.
Are you really looking for a mentor?
A mentor doesn’t have to be older or absolutely more experienced, their single criteria is that they have something to teach you.
Often times I’ve heard the phrase “There is no one around me to learn from”, but everytime my reply is “There is but you are not looking”.
A mentor can be your peer and/or colleague at work, they can be someone you met on the internet, someone you met in a meetup or conference, but how would you find them if you don’t actively seek their help?
There is too much to learn
In our industry, its a never ending journey of learning, either you are just starting out or well into your tenure as a software engineer, you’ll always need to keep learning, that is if you want to remain relevant, and the fact is, there is a lot to learn.
Like A LOT! its a never ending sea of daily, nay, instantaneously expanding ocean of new techniques, tools, languages, …, etc.
You’ll never know it all, and you shouldn’t know it all.
Master of all = Master of none
When you’re first starting out, you should aim to build depth and mastery in a single vertical; you are starting out with python? stick with it and learn it properly, build mastery with it, learn the tools and understand the inner-workings, don’t make the mistake of spreading yourself too thin, only swiming in the shallows.
Building a mastery is very important because while you think you are learning a single tool, you are actually learning a whole set of fundamentals, first of which is how to learn in the first place. You are finding your own style of learning, and that is one skill that once you master, you’ll propel your L&D quite the distance forward.
Being a master in a vertical allows you to spread your wings into other verticals smoothly because it gives you the ability of building patterns and relations; you learned Python pretty well, bet now you can go into Ruby and perfectly understand the syntax, you even know what duck typing is, garbage collection, closure, … etc. its more or less the same concepts and fundamentals just different sugar here and there, and its those differences that you need to understand, no longer the whole set of fundamentals.
Spreading your wings
Once you’ve a mastery, its time to spread your wings, you need to start expanding your horizon, don’t fear trying new things, taking on new challenges, but don’t forget You’ll never know it all.
I’ve never met a good engineer who knows everything, in fact most of them rely heavily on studying, stackoverflow and google, but you know what their real secret is? They know what to study and what to look for, thats it, they don’t have it memorized by heart but they know it exists and what its limitations and capabilties are.
It’s perfectly fine that you feel lost in the vast sea of tech, but the most important thing is how you learn to swim and how you ask for help.
Just remember its not a race, its a marathon, and the only competition you have is your past self.