New Software Engineers, Specialize Don't Generalize
“I’m just trying to learn everything right now. There’s a lot of stuff I don’t know,” said Jason at a one-on-one meeting. “Why do you need to learn everything?” I asked. “Well, I want to be a good engineer. Good engineers know a lot. I was in a meeting with Mansi, and she had all this knowledge. I want to be like that,” he replied.
New engineers want to learn everything. It’s a flawed early-career strategy. If you’re looking for work, your future employer will consider you one of many generalists with little experience, making you less compelling to hire. If you’re already employed, your manager is not clear where to position you to maximize your strengths because you don’t have any yet. Either of these situations will stifle your career growth.
Here are a few reasons to go deep into a subject early in your career.
It’s purposeful — You know what you need to do. You need to get good at X, so learn and do X. You won’t be distracted by trying to understand the other subjects. If another topic interests you, make a note of it to pursue later.
It builds your reputation — You will build a reputation if you attain enough depth. Your expertise in this area will develop your “technical gravity.” People will be attracted to and seek your knowledge just like Earth’s gravity attracts a body to itself. Your new reputation might open up a new job opportunity or a new project.
It benefits your team — You can help your team make progress and improve their skills by teaching, answering their questions, and helping with the problems they’re solving. Your manager will see your impact as a code contributor and a team force multiplier.
It’s faster — You develop proficiency in an area faster by focusing on one subject. You will learn other topics in practice, but your commitment to pursue depth in a single topic will accelerate your attainment of depth.
You will encounter blockers that slow your specialist pursuit. Don’t get discouraged. Here are a couple of situations in which you might find yourself.
Recommended by LinkedIn
My project doesn’t align with the specialty I’m pursuing.
This obstacle requires your creativity to overcome. You will have to find a related feature in your current project that gives you experience in the subject you’re hoping to get deeper into.
I used this tactic at Amazon. An engineer I managed wanted to specialize in machine learning (ML). We found an area of the project that could benefit from ML. He worked on it a little during work hours and on his own time. He eventually incorporated his ML-powered recommendation feature into the final product.
There’s too much to learn in the specialty I want to pursue.
You have to pick a sub-topic of your specialty in this situation. If your subject is crypto, start with the basics of encryption, decryption, and digital signatures. Or, if you want to build a reputation in mobile development, begin with Swift and iOS apps. Eventually, you will reach the level of mastery you want to achieve.
As a new software engineer, learning will be a perpetual endeavor for you. You should decide early on to focus your learning on one subject to attain proficiency or mastery. You can then move on to a new topic on which to focus. You will eventually achieve the breadth of knowledge you see in the senior engineers you admire.