To the student programmer who thinks their college degree isn’t going to teach them everything they need to know:
Early Spring semester, my professor surveyed how many of my classmates had landed a summer internship already; there were actually a handful in our group of about 30 students who’d known since before the spring where they were headed that summer–and some of the companies included places like Nike and Microsoft.
Imagine that. Imagine landing a job at a Fortune 500 company right out of college because you landed an internship a summer or two before graduation! (Or, if you’re a self-deprecating Millennial/Gen Z like myself, just imagine landing a job!)
Well–disclaimer number one: you don’t have to land a really fancy internship to find a good job after graduation; and disclaimer number two: it’s not guaranteed or even likely you’ll be working on self-driving cars or IBM’s Watson at your very first development job. But. The fact is we tend to place fields like that–and the jobs they provide–on a pedestal of technological godhood.
Reading about graduates at MIT, Princeton, or Caltech being snapped up by companies like Tesla and Google for their novel research and programming skills is, honestly, a little disheartening. It feels like you have to be a genius, or something close to it, to even understand, let alone land a job in, any field that’s new, complex, or both. And then, if you’re like me, you look at your course requirements for graduation and think, How are classes like Operating Systems or Client-Server Interactions going to help me understand machine learning? Or voice technology? Or programming video game physics? Or any of the things people are working on these days?
Like the words say on the cover of life’s most important textbook–don’t panic. You can put away the course requirements. The fact of the matter is, your college degree is not going to teach you everything you need to know.
What your degree is going to teach you is how to teach yourself.
The internship I worked the summer after my freshman year had a small group of college-age interns working to build a desktop version of some mobile software. Only two of us were right out of our freshman year of college–the rest were juniors, seniors, and even graduates who’d worked internships at places like NASA. It was intimidating, to say the least. The first day on the job, they paired each of us off and gave us a small project to work on for two days, a simple desktop application–but with a list of frameworks and tools to use that none of us had ever heard of before.
Going in, none of us knew anything about the language they wanted us to use–Kotlin–or any of the frameworks–like TornadoFX, RxKotlin, and even the Gradle build tools–so we were all pretty much the same level of confused. The only difference was that the students who’d been in school longer had a better idea of how to look for information and get started.
It was usually little things, like someone thinking to use a hashmap over an array (when I, just a freshman, didn’t even know what a hashmap was!) Sometimes they read an article and understood way more of the concepts the first time through. But rarely did anyone say, “Oh, I’ve worked with this before.” Rather, the more experienced of the interns could say, “Let’s try this” and see it work more times than not–not because they knew more, but because they’d learned to teach themselves using the patterns and intuitions you see all across computer science.
And that’s what your degree is for! It is not for you to walk off campus with the knowledge of every language, framework, and operating system under your belt; it is for you to learn the kind of problem-solving and base-level knowledge that will allow you to understand the new stuff that will inevitably be thrown your way.
Maybe you know this intellectually; I think, to a certain extent, a lot of us do.
But tell that to yourself when you see the poster for that AI research grant your classmate worked on where even the research question doesn’t make sense to you. Remind yourself of that when the kid next to you asks about something you know isn’t in the course curriculum. Think back on it when your professor is explaining a particularly niche concept that you know you won’t need to do the assignment but everyone seems to be following along but you.
You’ve got this. You’re learning how to learn, which means you’re right on track. Specialization and deeper knowledge are fantastic, but most people don’t start diving into those until they’re at least a little bit settled in their career. Some peoples’ brains latch right onto this stuff, and those are the classmates you see breezing through concepts faster than others; the pressure to be the same way is always there, I know, but I promise you:
You’re right where you need to be.
Those deeper concepts will make sense eventually.
Focus on the class, not your peers or the research grants or the industry, and you’ll be just fine.
It’s a little trite, but it’s true: everyone starts somewhere. That means that everyone who understands more than you, at one point, only understood what you do now. They worked their way up from there, which means you can and will, too. So don’t let yourself stay intimidated by internships or video game physics or That One Kid’s open source project. It’s not that you will never understand how to do those things–it’s that you’re building your foundation so that someday, maybe soon, you’ll know just where to start.
An aside to the student who wants to get started down a more specialized path:
If you’re interested in a more specialized field of CS and want to start pursuing it, by all means, don’t let the fact that you haven’t gotten your degree or that you feel underqualified stop you! Imposter Syndrome is your biggest enemy–jump in, and the worst that can happen is you realize you don’t quite know enough yet to be able to pursue your interest efficiently. My point above is that it’s okay to not know enough yet–but don’t let the fear of that stop you from at least trying things out.
Your best resource is going to be your professors. Figure out what you’d like to look into, and then present that to them with the question, “where should I get started with this?” They’ll likely have some great resources for getting started. If they’re not sure, or if the resources they provide don’t prove very helpful, find someone working in your field of interest, reach out, and ask them. It’s a little bit of networking practice, and since it’s for finding resources rather than a job, it’s much less nerve-wracking. LinkedIn is a great way to do this, and your professors might also know recent alumni or colleagues working in the field you’re interested in.
And while I’m no expert, I’ve taught myself some of the basics in a few fields I don’t have any actual coursework in, like web dev and cybersecurity, so I’ve got a few resources for getting started in those areas among others–don’t hesitate to reach out if you want my input through my Contact page or at
ki****************@gm***.com
!