Though this post is titled Confessions of a Code Muggle, I decided the term Code Squib is more appropriate:
This past May, I graduated with a degree in Computer Science from Penn. It was exhilarating; the award ceremonies, the pomp and circumstance, the luncheons, dinners, desserts, and drinkups; all dedicated to the graduating seniors. Summer rolled around, and I was feeling pretty good. I had landed my first real internship in Silicon Valley, doing UI design. I should probably mention at this point that I switched to CS as a sophomore and became more involved with Penn’s Computer Science Club (the Dining Philosophers) as a senior, after 3 years of not being particularly involved with the CS community.
The first thing that I noticed when I left the world of classes and books was that I know NOTHING about this stuff. This is a common feeling for new grads to have, regardless of their field of study. But the second thing that I noticed is that everyone around me really knows a LOT about “this stuff”. People who were younger than me and had taken fewer CS classes than me were forced to explain things to me left and right. The realization set in: I am a Code Squib. For those that are not very familiar with Harry Potter lore, a Squib is a person born into a Wizarding family (read: computer science program) that has no Magical ability (read: 1337 skillz).
I began to panic. What did I know? What am I doing here?? How did I even get a degree in CS?! It occurred to me that all but one of the amazing people I know learned their skills outside the classroom. What exactly did my $120,000 in tuition get me then, if not a knowledge of writing code? (This topic is a post for another day, so I’ll save it for then.) This is not a rant against Penn CIS or the quality of my education, but I was disappointed to discover that I should have learned a lot more during those 4 years than I did.
This feeling was doubled, perhaps tripled, when I noticed the social aspect of CS that I had missed out on as well. I spent my 4 years in a blissful ignorance, hardly ever venturing to the “boring, tech-y” parts of the web, like ycombinator, Ars Technica, and GitHub. Startup culture was a total mystery to me. Hackathons, meet ups, code jams, even small side projects with friends are all things that I just passed over or barely participated in. It never occurred to me to code outside the classroom.
On graduation day I had never written a line of PHP, Ruby, Javascript, or CSS. Interview questions (Give a 1-line C expression to test whether or not a number is a power of 2 **) scared me to death. I had never written a significant code project outside of a homework assignment. And what has been driving me crazy for the past few weeks is that this is my fault. By “learning for the test” all this time I missed out on so many opportunities to truly learn. At this point I fear I am no more valuable to companies than a freshman.
I’m finishing my Master’s degree in CS this year, and I want to change all this. I might never get to the point where I can be a professional software engineer. But it’s never too late to start over, try new things, and work to get to a place where you can be proud of your abilities. The toughest part will be learning to be humble and to try and learn from everyone you meet. I hope that anyone reading this who identifies as a Code Squib will join me in making an effort to reeducate ourselves. Personally, I’m going to start off building some web apps using JavaScript/CoffeeScript and maybe a JavaScript framework like Node.js. I encourage Code Squibs (and non-Squibs, too) to throw themselves in headfirst, build cool stuff, and see what follows.
TL;DR? Write code outside of the classroom. Classwork is not enough to truly understand software engineering, so you should take every opportunity to build cool stuff and learn new technologies. It’s worth it.
For more information, check out this article by Steve McConnell.
** For those that are curious, my original answer was: if (x && !(x & (x-1)) == 0) See if you can do better!