Do I need a CS degree for a startup job if I already have skills?
I've been working as a web developer for about 4 years, both freelance and full time with an advertising agency. I know PHP, HTML5, CSS3, JS + jQuery, all of them really well. I know how to use the command line, version control, and all that kind of stuff.
I have a Github profile (not on this screen name), open source projects, and a bunch of other skills like server administration that have gotten me plenty of work in the past, but never at a consumer web product company (except on a small-time freelance basis).
I'm also learning Python/Django and Ruby/Rails, working on projects in both at the moment.
So basically, I'm wondering if that's enough. My school's CS curriculum is based on Java and ASP.NET, which sounds to me like a big fast waste of time, and it would add one to two semesters to my time in school.
On the other hand, I would come away with good CS fundamentals that are language-independent. But on the other-other hand, I could pick up the same skills from MIT Open Courseware.
I'd REALLY like to hear from you if you're running a startup and doing hiring, not because I'm looking for a job but because I want to know whether a candidate without a CS degree faces a significant disadvantage.
Thanks!
21 comments
[ 2.5 ms ] story [ 57.2 ms ] threadGenerally, at a startup, no.
No, not having a CS degree would not be a significant disadvantage in general. And a candidate with some proven track record, a portfolio and/or demonstrable skill would not be at any disadvantage at all with me - simply by not having a CS degree.
lets be honest, about 10% of the work of the startup is exciting. the other 90% is pure drudgery, and that's part of the reason why some people opt to work for a large corporation.
I restrict myself to hiring kids with a solid CS degree from a good university, not because I think other people are incompetent or because those people are competent. I think, at the end of the day, especially for a startup, I want to be sure that I dont end up with a fly-by-nighter or with a person unable to keep focused on the task at hand for months at a time.
It makes sense in theory, and I'm sure there are examples of it. Hiring a student who enjoys coding so much that they s/he is cripplingly unmotivated by doing the tedious/boring stuff may have considerable repercussions.
That being said, I think that this policy should give exceptions to people with proven industry experience, like you. It shows that they can live through the parts of the job that they don't like without being fired.
on the one side, someone who hops from job to job every 6 months has a stability issue [prove to me that you can stick through this venture, long enough for it to reach critical mass].
on the other side, someone who stays at a job for many years may expect a senior role [i.e. must manage a team of coders], possibly rendering them ineffective.
as someone in finance, i can assert that most CS guys in finance fall in one of those two categories.
You need to be able to eye-ball an algorithm and go: hmm, that's O(n^2) ... not gonna work for this use-case... etc.
You can book learn this stuff. Just make sure you do.
Some of the best coders I know never darkened the door of a university.
Edit to elaborate on "everyday development tasks": some startups innovate by applying some novel algorithm (beyond well-understand and well-documented ones that anyone could implement), but many are just taking well-understood problems and solutions and doing them better. Better UI/UX, better business-model, more integrated with other platforms, etc.
My experience has been that the advance math stuff is the edge case in software development. The bulk of it is crud, business logic, parsing and I/O.
But then I realized that you consider markup and stylesheets with some CRUD scaffolding to somehow be "coding".
So I will tell you this: You don't need a CS degree to be a fantastic developer. But you DO need a fundamental understanding of algorithms, data structures, and how to analyze them. You need to have a fundamental understanding of how computers operate, regardless of how many layers removed from the metal you will be focusing your work. This is not the kind of thing you're going to find in a Django or Rails book.
If you really think computer science is all about writing markup + CRUD declarations, you should focus your energy on journalism. That kind of a degree could easily get you a job at a startup, writing copy for sites, press releases, etc.
I'm impressed by your ability to derive rock-solid conclusions from thin air and I would like to subscribe to your newsletter.
Scripting Languages (Python, Ruby, etc) teach you how to use a language but not as much to understand what's going on in the background. A basic knowledge of C is very good to have, data structures, algorithms, and just procedural programming in general is a good idea to understand to be able to optimize later. Although PHP resembles C somewhat (based on what I've heard) so you probably do have some knowledge of concepts behind C, but I would recommend at least taking a few classes at a university or college, simply because they give you a well-rounded education, and you will learn other nice things such as design patterns. Java is ubiquitous in the college environment though, I would recommended taking a class that explicitly says it's C and then one for C++.
Excellent copywriters can make very good money, and can be integral to the success of any company. I don't see any way that this is somehow "insulting".
If you're hellbent on doing something from the tech side, then I offered advice on the foundational skills/knowledge you should start with.
You also made a huge assumption about my existing CS knowledge and what I'd like to do with it. I was asking if I should persue a degree in it, not whether I should study it at all, and the main factor here is the time involved, not the difficulty of learning it.
Aside from that, your language was dismissive and presumptuous, and what you said, more or less, was "better stick to journalism, kid, anything else is too much for you."
Re-read what you wrote and really think about what it says.