College programming vs. professional programming: Misconceptions and reality, from a beginner point of view

As a recent graduate in Computer Science and now full time software developer inside a software company I decided to share some of my thoughts on how things relate (or not at all) between the academic and professional life of a programmer. When in college I had a lot of beliefs that I confirmed after starting working and a lot of others that I realized were completely wrong. So this article maybe helpful for those that are ending the college journey and somehow are afraid/anxious about what lies ahead.
I’ve been working now for about 8 months as a full time software developer, on a junior level, interacting with clients, managers and team colleagues on a daily basis.
While in college I always have wondered what it would be like after graduation. During years I’ve learnt and practiced tons of theories and classical algorithms, courses that sharpened my analytic thinking, decision making, best practices on software development and architecture, programming paradigms and so on. But I always wondered while in all those classes:
How much of all this massive content that I’ve been exposed, will I really use?
And I guess I may have gotten the answer now: almost all of it and almost none of it, at the same time.
Addressing some topics below I’ll try to expose what I feel after my brief experience coding full time so far vs. what I thought before, and if that has some value I’ll try to give some advice I wish I had before.
You don’t need to be able to code a B-tree from the top of your head in your interview to prove that you know data structures
I had this misconception that to be accepted to a software company I would have to know how to code linked lists, b-trees, graphs classical algorithms, all by the top of my head, on at least two different languages/paradigms, on a white board in front of the interviewers and do it perfectly in order to be hired.
Okay, I might have exaggerated a bit.
But I really thought my programming skills would be put to the test at the point that if I forgot the complexity difference of a bubble sort and a quick sort that would matter for the interviewer.
The reality is that they are way more interested to evaluate if you know how to communicate with people, if you have other hobbies beyond coding and staring repositories on Github. If you graduated on a good college, they know that you are able to code, that your theoretical basis is strong, and that you’ll take care of that nasty null pointer on your own, even if it takes you 3 days of work. So my first advice would be: Focus on communication.
You don’t know how to code, you simply don’t
Were you a prodigy in college? All programming courses A+ with professors’ compliments and taps on you back? (I wasn’t, not even close) Congratulations champ! That doesn’t really matter now. I mean, of course, the more you know the better, and of course you should always give your best and code the best you can. But in the professional environment sometimes you’ll have to code nasty workarounds with the approval of you manager in order to deliver faster instead of implementing that super optimized and fancy approach you remember from Cormem’s book but that would take you 3 full days... Remember: clock is ticking, client is waiting for that deliver. Second advice: deliver.
Now you REALLY have to start studying… yep, after college ended
Speaking about myself, as this is my point of view about the issue, I had zero will of after coming home from classes study on my own that super powerful Javascript new framework and finish all those Alura and Codecademy’s courses about the most varied new technologies that are the state of art in the hipster programming world. Can’t lie that I have a hundred percent power of will now, however, you’ll begin to catch yourself learning new stuff and reading some new language documentation just for fun, just to know how it works, and then you’ll try to apply it on a project of your own during you free time, while you drink that cold one after work. And that’s the third advice: become passionate about coding.
Have fun coding
This is maybe the one thing that didn’t change at all from college to professional life. I keep having fun coding. Programming is really funny, one second you’re stuck on the lack of a semicolon (the classical example) and hence feeling like crap because of it. Next second you fix it, it all works and you feel like you could code the next rocket that will be launched to the outer space, on your own… On your professional life that feeling remains, and the best part of it is that after solving one problem you’ll always be stuck on a greater one, you’ll always have to push yourself harder, you’ll always learn. So, keep having fun!
Don’t be afraid of leaving college, like I was. Everything will work just fine in the end.
Cheers! :)