Hacker News new | past | comments | ask | show | jobs | submit login

If you are serious about programming and have any possibility of doing this at all, by all means get a CS degree at the best university you can access. I have worked with or interviewed a few programmers without any university degree and time and time again their confidence in how getting a degree is a total waste of time was directly proportional to their ignorance of basic facts from various areas of CS and inability to solve problems in a systematic way.

A lot of those people simply never get any external validation, have problems getting along with other people, and are unable to accept any kind of mentoring (while they desperately need it), in the end growing up believing in the greatness of their skills which in reality are not even mediocre. Since this seems to be the reason a large fraction of people does not finish their degrees, by this point as a recruiter I would just not hire a person without a degree.

For this reason, I would also ignore a lot of the testimonies that invariably will appear here of self-taught programmers proclaiming supposedly doing great, unless they have projects and code to back their claims up.

There certainly are exceptions, but do not start with the belief you will be one. Getting the same kind of wide perspective you get from a college degree from self-studying is several times as hard. I have self-studied mathematics after finishing my CS degree for a few years now and that's my practical experience. If you don't have the possibility to attend university, make sure to get as many opportunities as possible of verifying and testing your skills in different areas and stay modest.

This post by Notch of Minecraft fame illustrates all that I have said very well:

http://notch.tumblr.com/post/15782716917/coding-skill-and-th...

As far as practical advice goes, as soon as you are able to at all write working programs of non-trivial complexity (say, a platform game) MIT OCW is the place to be:

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

Taking those four courses in this order will provide a great basis, but I would be surprised if someone would be able to complete those in less than two years when self studying (I solved most exercises from SICP, learned a lot, but took me more than a year). To get the equivalent of a university degree, you would still need to heavily study at least four more topics: networking & security, compilers, operating systems and databases. Those two books might be a reasonable shortcut to learn some of this:

http://www.amazon.com/Programming-Language-Pragmatics-Third-...

http://www.amazon.com/Programming-Language-Pragmatics-Third-...

Source: I started working full-time as a developer when I was 19 and did it ever since, did a four year CS degree as evening studies after work (already having significant programming experience when starting the degree) and spent a significant amount of time self-studying (I worked through almost all of SICP, read the "Dragon Book", wrote a compiler etc.). I would never be where I am today (wherever it is) without teachers and colleagues from the university, there would be just lots and lots of gaps in my knowledge I would never get aware of.




"by this point as a recruiter I would just not hire a person without a degree"

While the variability of self-taught is higher than those with a CS degree, there are plenty of self-taught (without CS degree) software engineers who rise to the top of hard core software engineering companies (e.g. Microsoft, Facebook, VMware etc.), besides high-profile college drop-outs like Bill Gates and Mark Zuckerberg.

I suspect that your recruiter position expose you to lower than average quality candidates, as most good engineers never needed a recruiter -- they are simply referred by their friends and colleagues.


While the variability of self-taught is higher than those with a CS degree, there are plenty of self-taught (without CS degree) software engineers who rise to the top of hard core software engineering companies (e.g. Microsoft, Facebook, VMware etc.), besides high-profile college drop-outs like Bill Gates and Mark Zuckerberg.

I am not sure if Mark Zuckerberg can be described as self taught,especially if you consider his high school's CS curriculum.

http://www.exeter.edu/documents/COI/COI_Final_2013_14.pdf#pa...


On the other hand, I have come into contact with hundreds of programmers with CS degrees who were simply inept. It goes both ways.


I've been really considering a 2nd BS in CS at times, but just can't seem to get myself to do it. I have BS in engineering, but not CS. I get fustrated because of what would be required for a MS in it, and some schools the time for a 2nd BS is just out of control for myself.

I also see myself being in more management of programmers at sometime. It's pretty rare for me to trivialization a solution process. I've done it, but so has everyone. Making mistakes is the learning process.


The older I get, the more I agree with your point. That's why I'm planning to complete a bachelors degree in CS, IT, or CE. It does make a difference.


Both links to Amazon go to the same book. What was the other book that you were suggesting?



Thanks. I'm still in the phase where I can't build anything non-trivial, except for simple web applications.

When I'm ready, I plan to start studying these resources.


6.00 from MIT and the Udacity courses about CS/programming might help bring you up to speed, and 6.00 is periodically offered at edx as a full online course. Wish you luck!




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

Search: