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.…
There’s an invisible ceiling at the top of all jobs, some point where you aren’t learning or your career isn’t advancing as fast as you hoped for. Most companies have a plan for this. They promote, incentivize, and hand out larger opportunities as needed. They have to or they lose their employees, but there’s no need for a system of advancement for interns, employees who aren’t going to be there for the long haul anyways.
As an intern, joining a new company is terrifying, you’re tossed into the middle of an unfamiliar world and you need to learn really fast while trying to exceed your co-workers’ expectations. The first month of an internship most concentrated learning environment I’ve ever experienced, but eventually tapers off. You’ll have learned the technology the company uses, figured out the language they speak, and you’ll begin to learn at a lower rate.
This happens to full-time engineers of course, but it happens far sooner to interns simply because we aren’t there long enough and the work given to us reflects that. No matter how great we are as software developers, we can’t be given long term, important projects because we’ll be gone in a few months.
I’m not going to advocate that the company does anything to fix this problem for interns. It’s enough of…