Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Do web startups hire CS majors?
10 points by raptrex on March 2, 2009 | hide | past | favorite | 21 comments
Right now im a 1st year student at Cal Poly Pomona as a computer science major. I have been interested in building web applications, however, there are no CS classes at my school that teaches web development. I know i can learn it on my own (i know html, basic SEO, CSS, some php). I was wondering if startups hire CS majors or should i switch to CIS, which has a few web classes related to the internet, but CIS is mostly buisness related from what i know about it. If startups do hire CS majors, what do they do?


You are simply conflating CS with programming, which is very commonplace.

Programming is the craft/art skill of manipulating digital code and data. Within programming you can learn about specific domains - for web apps that would mean databases, networking, a host of standard formats and protocols, and user interfaces. Many commercial programmers go their entire career focused only within one or two domains.

Computer science is the academic study of computation. As the rigorous curricula of today would have it, it is a more mathy endeavor than programming by itself. In particular there is a focus on provability and formality that doesn't come up in commercial programming.

Basically, stuff you learn in CS won't help you ship the ideal mix of features, stability, and time cost for (insert app here). What it will tell you is about a variety of methods with which you may approach the underlying computation problems and direct your own original research efforts.


In particular there is a focus on provability and formality that doesn't come up in commercial programming.

I'd call tarsnap commercial, but it has involved proofs and formality. Right now I'm writing a paper which proves some properties about the efficient computability of functions -- because showing that these functions cannot be efficiently computed makes it possible to rely on them for security purposes.

Sure, tarsnap is unusual in the amount of cryptographic research behind it, but most interesting applications do something new at least.


That's also... not an answer to the question.

Still, given a CS major and no experience applying math to practical matters, how valuable is that to someone looking for new hires?


Furthermore, a formal understanding of computation will give you a good intuition of what things are "good" or "bad" techniques (algorithmically), what kinds of things are computable/not, etc.

This can be advantageous (you know things like DP and more formalized algorithms) but most of it is far above what you will ever need to do (probably. Certain areas use more high-level things)


If startups hire CS majors, they code. CS at your college probably isn't pure theory, but rather closer to Software Engineering. And you can't expect college to teach you everything that you'll need to know on your own.

Take this summer and spend it hacking on a project you find interesting. Learn a particular language (preferably one that your college wont go over. Be it Haskell, Ruby, a Lisp variant, whatever) and learn it as well as you can in a few months.

Then when the next summer rolls around, you'll have two years of class + that summer building something on your resume. And that summer will help out a lot in terms of practical experience working on a project (as opposed to a 1-2 week assignment that you drop as soon as it's handed in for a grade).


Just finished interviewing 5 programmers, all of them CS undergrads or grads, for my startup. (This might be a bit biased because CS majors were the ONLY ones we interviewed so far.) Two things occurred to me during the interview process: 1) CS majors have some formalized training in designing software, and 2) the most important part of their resumes was the experience/internships/projects section. Nothing can replace the work that is done outside of the classroom. Classes can't expect 40 hours/week of coding but real jobs can. So, initiate projects yourself or find internships that will actually utilize and grow your skills.

I am a sophomore in college, so take my advice for what it is. But, I wouldn't think I'm too far off from reality. Good luck


Good advice. I think I will wait until I finish learning Java and C++ before looking for internships. Your a sophomore in college and interviewing people for your startup? I think im behind :(


Yeah like Zev said know something before you get there, but expect to rapidly learn new technology at your internship...that is the best way to impress and push forward in a job. I was hired a couple years ago to work on a company's employee portal, which started as sort of a joke because it was so rudimentary, but I learned the insides and outs of the existing software and quickly learned how to hack it (without using any real programming language). Within weeks my boss had me doing complex work flows/applications on the portal and paid me a pretty penny for it! Every internship will be different, but just try to be flexible with what you're given. My guess is this is what will impress potential employers the most, especially web startups looking for individuals who can think outside the box.

The interviews were actually slightly intimidating because most of the applicants knew more programming than I did! Cool experience though :)


Its definitely a good idea to know something before applying for an internship. You don't want to go in there and sit around doing nothing for the duration. It looks bad on you.


A good way to get a leg up:

1. Do some jQuery tutorials and really bone up on flashy javascript.

2. Learn to use any popular web 'stack' - LAMP is easiest on *Nix servers, RoR and Django are not rocket science. Nor is ASP for that matter.

3. Go out and find a web designer, or yourself bone up on design and CSS

4. Find easy contract work such needs basic web programming. Eg "install a picture gallery in my website" = $200/300/400.

5. Move on up with the contract work or launch your own site.

6. ???

7. Profit!

If you do this through college (and I didn't start until my senior year, a deep regret), you will level up to the forefront of web programming by the time you graduate.

Also, now that web is mature - there are multiple paths to success. I think getting the Server Side Language/ Javascript/ CSS/ HTML loop right in your head is the most important. You can follow that up with MVC frameworks, Adobe Air, Silverlight there are at least 4 or 5 solidly "employable" paths you can take


Have been working with Linux for over a decade. Had 9 interviews for a site reliability engineer role at Facebook here (which I gather is considered a startup until it becomes profitable or gets bought), before I got a 'no'. Interview that lost it for me was a guy (who'd just graduated college) presenting a page of math and telling me to write some Python to implement it. This wouldn't have been my job function, but I couldn't read the math = 'definite no hire' in Facebook speak.

Worked out better in the long run.


What kind of math? Just curious.


Literally this:

http://upload.wikimedia.org/math/7/6/f/76f99713cf111eb035d90...

What's being implemented is pretty simple to write with an English explanation. But my interviewer expected me to get it from the notation above.

It's been a decade since I left high school, and the programming in my career doesn't involve formulae. After a bunch of successful interviews I bombed on this question, and was never forgiven.


That's the Fibonacci Series. It would be hard for me to forgive anyone who wouldn't at least recognize it too, since it is so famous and is basically the classic example of recursion.

EDIT: seeing as this thread is about a CS major trying to get a job, this is also something that is taught quite early in a CS curriculum ;)


The job was as a system administrator, emphasizing troubleshooting and automation. The question wasn't job related.

I can handle Fibonacci when the problem is described, but a page of math means nothing to me.


Having interviewed people fresh out of college for both web-startups and established companies, from my view the most important thing you'd need to know if you want to work in a web start-up are:

1. how to get around a UNIX system (be comfortable with emacs and/or vi, know your shell, be able to install Apache/your favourite web frame yourself on a machine

2. know basics of TCP/IP networking (know how HTTP works, be able to debug it using telnet/netcat and tcpdump/pass through proxies)

3. know databases (not just "SELECT Ajax FROM Php", but know about indices, joins and normalization/de-normalizations)

4. or more dynamic languages (Python, Perl, Ruby, Php etc...) as well statically typed as object oriented languages (Java is common for enterprise web development)

These are really just the basics (give or take). Most of these (except for databases and dynamic languages) are a standard part of any CS curriculum. Databases course should be readily available as an in-major elective. Dynamic languages -- if not available as an elective -- should be easy to pick up as you go along.

These are also very nice to have and would make you not look like a "PHP script kiddie":

* Understand how your OS works, at the least be comfortable using strace and gdb and digging around /proc and tuning sysctl/proc/kernel parameters

* Understand more about networks: more about DNS, know how a load balancer works (NAT)

* Know C/C++: that's what the extensions for your dynamic programming language are written in, that's what your web server/web proxy and database are (usually) written in.

* Know algorithms, data structures. Be able to do bitwise manipulation (e.g. how would you track on which day of a month a user visited a site?). Understand the advantage a message queue would provide, understand non-blocking I/O and threading/forking models.

* Know more about OO, meta-programming/reflection, functional languages -- be able to hack up your own ORM layer/ad-hoc MVC.

There are jobs in web development that don't even heavily touch HTML/CSS/Javascript and tend to be heavier towards algorithms, databases and UNIX hacking. These are called "back-end jobs". The other end is "front-end", which requires more familiarity with UX principles/Javascript/ActionScript/Flex and basic graphics design/layout in addition to HTML/CSS. The specific hot things (current frameworks, etc...) change but the general of computing is an invariant. The latter is what you learn in computer science classes.

Lastly, you should absolutely do programming/web-development for fun -- first, it's the way to learn things you won't learn in class (or at your first job). Secondly, many start-ups operate under the maxim of "don't hire anyone who doesn't code for fun", thirdly -- chances are, working for a web start-up won't make you a millionaire: if you don't find programming to be fun and worth your time (making long hours non-monetarily rewarding), enter a field that you would (you're lucky to be amongst the few who has the chance to choose).


These are definitely good things to know, but I wouldn't necessarily expect a fresh-out-of-college 22 year old to know them all - I think you can pick them up on the job in the first couple of months/years.

The important thing is to be willing to learn and improve yourself, and to just have a natural talent for programming. Nobody expects you to hit the floor running in your very first job.


I knew most of these things at twenty two, coming out of college -- however, my case is slightly different -- I've been a hobbyist before and during college.

Nonetheless all of the material I've described was offered at university I attended and getting a formalized training in the matter (particularly a rigorous mathematical approach to algorithms, data structures and formal languages/automata) definitely helped.

Nonetheless -- if one is motivated and disciplined -- they can pick these things up at a job (provided you get a job where the environment is conducive to learning, vs. one that merely expects you to crank out business logic 9-5) as well as entirely on their own.


I guess my experience is a bit different, since I was a math major.

Even in my first job, which was pretty much just cranking out business logic 9-5 I've learned a lot about databases, OO programming, UNIX and software development in general.

At the beginning you have so much to learn that even if you don't work for Google or Microsoft (they actually do a lot of non-trivial R&D) you will still probably be learning a lot.


great post!





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: