Do I need a CS degree for a startup job if I already have skills?

6 points by roperopestomp ↗ HN
To start with, I know you don't need to go through a CS program to learn how to code. I'm a journalism student debating whether or not to get a minor in CS for the purposes of getting a job at a startup after college.

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 ] thread
Generally, at Google or other large companies, yes.

Generally, at a startup, no.

(comment deleted)
Assuming I had money to hire employees:

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.

I think the best predictor of being a good hacker is products you have built. I was a Electrical Engineer in undergrad, but then went to go for a PhD in microbiology. When the .com boom hit I wanted to get back to technology, but had been out of it for 5 years. I built up a portfolio of projects and used those as my in to my first job. I was able to submit code samples as well as running applications. The bar at google is high, but I would expect that this tactic would work for them as well (but dont know for sure), but it would have to be something very cool. The company I went to work for only hired people with a graduate degree in engineering (which I didnt have) but they made an exception for me based on the portfolio (and also probably because they were desperate).
If you are competent and willing to work for equity rather than a large salary, a startup will hire you. Unless they have "Color level funding", a startup does not have the ability to be too demanding on the formal qualifications. Take advantage.
The one thing that I give credit for [regarding a CS degree] is discipline. Discipline means actually going through whatever hoops the schools make you go through. Discipline means actually having the patience to take the requisite classes and doing the projects, even if it isnt glamorous.

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.

But doesn't finishing college at all prove the discipline thing? How about an Eagle Scout award, does that mean anything to you?
I think what he meant is that the kids who sat through the horrible Java and ASP.NET classes show that they can live through drudgery in the coding world.

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.

The sticky thing about industry experience is that its hard to evaluate expectations.

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.

There is some "academic" stuff you need to know to be a really good coder: algorithmic complexity, information theory, lambda calculus, and a good grounding in discrete and continuous mathematics.

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.

When do discrete and continuous mathematics (in a formal sense) come into everyday development tasks? I don't even really know what those fields are, but I do fine as a developer. What am I missing out on by not knowing anything about them?

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.

This is highly debatable. I have been coding in the finance, airline and manufacturing industry since '99. Not once have any advanced (read above HS algebra) mathematical concepts been necessary.

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.

At first, I was ready to tell you that the answer is definitely no, if you are a genuinely skilled developer.

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.

You're clearly right, because people with theoretical CS knowledge don't use markup, CRUD, Django, or Rails, and because it's a proven fact that if your tools aren't sufficiently complex, it is impossible to create something useful.

I'm impressed by your ability to derive rock-solid conclusions from thin air and I would like to subscribe to your newsletter.

It is poor form to ask for advice then rip someone for giving it to you...
What he gave me isn't advice, that's called an "insult"
He gave you some advice, what he didn't do was encourage you to learn. He was wrong to discourage you but he provided constructive criticism (minus the part about becoming a journalist)

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++.

Where's the insult? You mentioned that you are a journalism major, so I suggested a course of action that could parlay that into a startup job, which is exactly what you're asking about.

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.

Telling someone in journalism that they should go into PR is an insult. There is gaping chasm of difference between those two professions.

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.

(comment deleted)
Me and a partner are currently building a startup and we are looking for a good developer we don't care about the degree as long as your good if you think you might be interested you can contact me at bb152694@reddies.hsu.edu and I'll give you more details about the startup