To Degree, or not to Degree?
I was recently asked by a young & energetic developer (paraphrasing here, for the sake of brevity): “I’m a little concerned about entering the work-force. If I want to work in tech – should I go to university and get a Computer Science degree, or just dive headlong into building my own projects?”.
My TL;DR answer was: “A Computer Science degree is great. It can give you rock-solid engineering principles to create ambitious, maintainable code; but if its a binary choice, I’d choose doing your own projects”.
A Little Background
I’m a designer and developer without formal training. I began a CS degree, got through a year of it, hated it, did a philosophy degree instead, and loved it ☺. Which is not to say I haven’t invested a huge amount of time studying computer science and good engineering principles myself; just in a more haphazard and pragmatic way (where ‘pragmatic’ = “Shit, I just realised my code-base is a disaster… I think I need to study up on those design patterns some more”).
Still, via the pragmatic route, I’ve been lucky enough to have a career path with forward momentum. I did my first start-up fresh out of high school at 19yrs (spoiler-alert: it didn’t fly), then worked up from small freelance contract jobs, through to agency world, and eventually to running my own design / development business with a few multi-nationals / federal government etc. on the client list. While its absolutely been a bumpy ride, its mostly worked out thus far.
Tangible Talents: Make Your Own Stuff
So a few (idiosyncratic) words of advice for those considering a Computer Science degree – from someone who didn’t finish their’s:
If you’re looking to make your debut in the workforce, or looking to upgrade your position in the workforce: produce stuff. Your own stuff. I’ve found it to be a crucial factor in differentiating oneself from the competition; perhaps the crucial factor. Have a portfolio of projects you can point to that isn’t just “I did this for university”, but rather self-initiated projects that you’re totally proud of, that extended and challenged your limits, and that showcase the depth of your ability and energies.
self-initiated projects that you’re totally proud of, that extended and challenged your limits, and that showcase the depth of your ability and energies
The proof is in the pudding with engineering. By which I mean: having a Computer Science degree is a good sign, it shows that a candidate is really interested in software engineering, and that they’ve been exposed to the methodologies and principles of building large-scale, maintainable code-bases; but it doesn’t demonstrate that they are actually good programmers, who can pull off complex projects under time pressure and resource scarcity, solving problems and creating efficiencies on their own independent initiative. CS degree != A Great Developer.
From a founder’s perspective, when hiring talent, especially junior talent, the question isn’t so much: “Where-Have-You-Worked?” or “What-Degree-Do-You-Have?”, but “What-Kind-Of-Mind-Are-You?”- how will you adapt to all the different problems that will be thrown your way? Will you flourish under constraints? Will I need to hold your hand every time conditions and requirements change?
To Illustrate: we recently completed a round of engineering hires. Many candidates had CS degrees, some didn’t. It became quickly apparent this factor was not well correlated with the strength of the candidate. What did sort the wheat from the chaff was evidence of self-motivated initiative. Of the candidate group, only half had their own websites. A handful had projects built out to fruition for their own pleasure. And a fraction of that group had developed projects to a stage that wasn’t an “MVP” – (NOTE: Saying “Its just an MVP” doesn’t magically un-crapify something). The candidates that really impressed us (as communicators, as coders, as problem solvers and as people) were those who had built their own stuff, for their own enjoyment and edification. Their merits as problem solvers, thinkers, doers and developers were embodied in the quality and care of the product-build / and the elegance of the codebase. Projects made their talents tangible. You don’t want to hire Drones – they’ll be a drain on your own time – you want to hires Doers. Those special folks who can take a problem, go off to a corner, and come back in a day, or a week with a fully realised solution.
You don’t want to hire Drones – they’ll be a drain on your own time – you want to hires Doers.
Of course, in an ideal world, if you have the time, finances and energy: do both. Get your Computer Science degree for a foundation in engineering principles; while applying these principles in real-world self initiated projects, where you can pick-up the myriad of related soft-skills and learnings about getting from Zero-to-Complete. However, if it must be a binary choice, ultimately I’d advocate doing your own projects before a CS degree.