Software development is a gigantic field. Not just in the millions of people in our industry or huge market cap attached to it, but in the sheer size and depth of topics we can apply our skills to. Basic programming skills enable us to take on wildly different tasks and completely different sub-fields all under the umbrella of computer science. It’s easy to say that you want to be a developer, but what we need to be asking is what sort of developer do we want to be? What subset of CS problems do we want to be solving day in and day out?
Initially when this question was put to me, I would say that I wanted to do it all. I love the field of computer science and I don’t want to miss out on exciting parts of the field. However, as I progressed through my internships, I realized that specialization would allow me to experience the parts of software development that I love to the fullest.
What I realized was simple, when you specialize, you choose a set of problems that you personally find the most compelling. You’ll come into work excited everyday because you love working on those specific tasks. Specializing gives you a chance to filter for only problems that you’re genuinely interested in working on.
The second reason more capitalistic in nature: you’ll make more money. Choosing a sub-domain allows you to gain deeper knowledge in certain areas of computer science. This deep knowledge in turn makes you more attractive to companies. Not the most compelling reason for those of us who are programmers by passion, but it’s something we should consider.
I’ve been going through this journey recently. Until a few months ago, I’ve always been interested in becoming a machine learning expert. As a junior developer, it’s hard not to get sucked in by the allure of sentient machines. But when it came to AI, I never got that moment where everything just clicked.
Recently felt that click at my current internship. I work as a data engineer creating pipelines to process huge amounts of data so that customers can ask questions of this dataset (at least that’s my elevator pitch to my relatives). Something about the problem space speaks to me in a way that I hadn't felt before. Time will tell if this is really what I’m interested in, but it’s a start.
So my advice junior developers like myself is to experience everything. From side-projects, to combing through old CS textbooks, just learn. I’ve found that internships are the best way to find that spark, but you might find it in an obscure GitHub repo. It doesn’t matter where you find your passion or whether it intentionally find it, it just matters that you find it.Image