Earlier today we had a guest speaker come in to speak to us (the Web Development Immersive class) broadly about computer science, algorithms and data structures and things like that. He also shared his experience at General Assembly Singapore, which was a bit over 4 months prior. That got me thinking about the time tradeoff.
Is it worth the time to do a CS degree?
The quick answer is it depends. I’m not interested here to compare computer science with another bachelor’s degree to try and value one more. So in that case, the answer is I don’t know.
But let’s compare doing a computer science degree and not doing a computer science degree, but instead, spending that time as a computer science practitioner, as a developer. This is the question reframed:
At the end of 3 years of (A) doing a computer science degree, and (B) working as a developer, which choice puts you in a better position to be an engineer?
The obvious answer you’re probably trying to yell through the screen right now is B, of course! Engineers build things, and the only way you get better as an engineer is if you gain experience building things, the argument goes. I agree. But that leaves us with another curious question:
Why bother learning CS at all?
If the point is to be able to build software faster, more beautifully and with less bugs, we’re better off spending the time writing code. CS offers nothing but theory.
So… are there roles that companies prefer to fill with CS majors with less experience? Probably not. Google and Uber to known to hire based on ability to create good software, not the origin of your CS degree. Startups even more so, for practical reasons. Same for dev houses and big consultancies like ThoughtWorks and Pivotal Labs.
So why bother with a CS degree when it’s less useful in helping you find a good software job? They can’t all be going into academia. If they did, then ok. That’s one place I imagine CS is valuable.
But then there’s the art of computers in CS. Yes, I know it’s called computer science, but what I mean by “art” is the philosophy of computing and the foundations that everything this digital life we’ve quickly acclimatised to is built on. If your goal is to really understand what you’re doing when writing code, how memory is allocated for the new variable you’ve declared, perhaps so that you can appreciate your work and that of other scientists and programmers more, then it may be worth it sacrificing dev experience to learn CS.
Other than that, I still believe it’s a much better idea to attend a 3/4/5 months bootcamp and start being a practitioner as soon as possible. That’s the beaten path to becoming a good software engineer.