Hacker Newsnew | comments | show | ask | jobs | submit login
Books that will Substitute for a Computer Science Degree (techoozie.com)
149 points by fogus 1798 days ago | 91 comments



Consider that the best athletes in the world have coaches. Even if it's a cooperative endeavor, it helps an athlete to have someone else to design training programs, objectively point out weaknesses, push them when the still have more to give, and pull them back when they've gone too hard.

In theory, the athletes can do this by themselves. In practice, they rely on their coaches.

In theory, you can read books on your own and hold yourself accountable so that you grind through difficult problems and projects so that you actually learn the material you read about. In practice, having a teacher to help you through this process makes you much more likely to succeed.

-----


This kind of coaching/mentorship is probably found a lot more in a grad program than undergrad, where it's pretty much nonexistent.

-----


I majored in English and went to Clark University (http://www.clarku.edu -- a lot of people haven't heard of it), where I think I got a lot of mentorship and connected with my professors. That might be because I took a lot of time to seek them out or because Clark is a small liberal school, but I think the larger issue is that most, though not all, professors will offer mentorship/guidance to the extent the students seek it out.

Now I'm a grad student at the University of Arizona, and I tell my students the same thing most of the time: if they want to go beyond whatever is required in class, they should start by showing up in their professors' office hours, ideally with somewhat smart questions or comments. Most professors will, I think, respond well to this, and will often give recommendations on books to read and/or projects to work on. A few days ago I taught pg's essay "What You'll Wish You'd Known," and students glommed onto this paragraph (http://paulgraham.com/hs.html):

A key ingredient in many projects, almost a project on its own, is to find good books. Most books are bad. Nearly all textbooks are bad. [9] So don't assume a subject is to be learned from whatever book on it happens to be closest. You have to search actively for the tiny number of good books.

Very true: professors are a good place to find this. If you read whatever books they recommend and go talk to them about those books afterwords, I think that coaching and mentorship kinds of relationships will probably form, even at big state schools. Professors are often interested in you to the extent that you are interested in the subject they are interested in.

Obviously, there are exceptions, but most of the time this principle works reasonably well. But very few people follow it. If you (not the OP -- a general "you") show up in office hours say "mentor me!" you're probably not going to get much. But if you show up and ask questions x, y, and z, then read whatever the prof recommends, then come back, you'll probably have a much better shot.

-----


This is true, but that wasn't my point. I used coaching as an analogy to point out that even people who are among the best at what they do don't do it alone. There is an attitude among technical people that "the material is out there, who needs school?" which I find too reductionist. Courses are more than just the raw material; they are infrastructure, incentives, and, yes, outside help.

-----


I get the impression that some undergraduates at some colleges do get good coaching and mentorship, and I would like to hear from other HN participants if they know of examples of that.

-----


I would like to hear from other HN participants if they know of examples of that.

/me raises hand

It helps to be in a small department. A friend of mine at another (larger) school once asked me for advice on how to seek out letters of recommendation. The problem was that none of the professors knew who he was, since he'd only been in large lectures and never had the same professor twice. On the other hand, there were a few professors (2 in math, 2 in CS) who had taught multiple smaller classes I was in. When I was looking for recommendations, I had a lot less trouble finding professors who knew my background (including both other classes I'd taken and areas where I'd gone wandering beyond the scope of the courses they'd taught) well enough to write them.

Most of the complaints I hear about professors/instructors being unreachable come from people who never make any serious attempt to reach them (i.e. so few try and so many complain that those who don't try must be a majority of those who complain). Beyond that, those who do contact the professor/instructor for additional mentoring typically aren't the ones who need it most.

-----


I got my best coaching from other undergrads and occasionally other grads. Two dudes named David Kitchen and Noah Falk stood out in particular (if you guys are out there somewhere, I still think you rock!). It makes sense. The undergrad TAs and mentors all wanted to TA and they're closer to your skill level. The professors are there for when you outgrow your TA. But since I didn't seriously start learning math or programming until I entered college, I never made it that far. =(

-----


I went to a small, well regarded liberal arts college in the Midwest. The science programs provided a lot of direct interaction with professors as well as copious lab time, projects, summer internships. Lab equipment was extensive; as it was (sometimes too frequently) put, undergrads received training on and regularly used equipment that elsewhere you might not "get to touch" until in a grad program.

It helped that the school was quite well funded/endowed. Some big name alumni had not just or even primarily given them money, but had as much or more so given them investment advice and opportunities that paid off many fold.

This is an attraction of a small (often private) college. But you have to pick carefully and ascertain that the reality there lives up to the rhetoric.

I'm not particularly pitching for this route as an education. Rather, providing a specific example, as requested by the parent.

P.S. Tuition was not as high as some schools, but it wasn't cheap. However, a majority of the population received aid (often significant) of one sort or another. If you experience "sticker shock" when shopping around, realize this and, if a school interests you, apply and see what happens. (Although it's been some time since I was there, and education costs as a percentage of income seem to have grown more and more out of scale, in general.)

Also, while that college had many excellent areas and faculty, they also had their not so good areas and some particular lemons. You can't just look things on a school level; you need to consider particular programs and departments, where you have strong interests. At the same time, often part of the liberal arts experience is figuring out just what major you actually want to pursue, so don't feel certain that your interests going in are going to remain constant.

Finally, I should mention that the college paid fairly well and was in an area with low living costs and good schools for faculty children. Faculty also had decent resources and the ability to take leave to pursue personal work/research. Thus, it was able to attract good faculty. Further, they knew coming in that the institution's primary focus is education, not research. Your research need not suffer (then again, maybe many faculty were not of the most highly obsessed research-centered nature that also produces some "super stars"), but you were there first and foremost to educate.

-----


This depends a lot on the person, the school and the actual teacher. While I believe that a high quality school like Stanford, MIT, etc will have excellent teachers and will teach you a fair amount, I have yet to encounter such people. I also believe some people are just better at figuring stuff out on their own than others, which is fine.

The places I went to didn't really have the passionate and good people you need for teaching imo. Sure many of these people can teach the basics, but once you get to a certain point a fair part of the students is actually a lot better than these teachers. You need more hackers, more highly skilled people.

I actually remember watching some of the Stanford video seminars and those courses seemed more appealing than the stuff I was being tought.

-----


This depends a lot on the person, the school and the actual teacher.

Of course. But I'm making a point about what works for most people, most of the time. In this analogy, it's not necessarily a direct mapping from coach to teacher. If the coach is part of a large infrastructure, such as on a football team, then the mapping is more direct.

Teachers are only one benefit of taking an actual course. An established syllabus which has gone through years of iterations is another benefit - and this is often independent of the actual teacher. Another is the motivation. Taking a course is an investment of money and ego that self-study often lacks. People tend to be more committed to something they've invested in.

-----


Most people aspire to be merely adequate.

-----


But a teacher doesn't have to be a teacher in a school setting. It could be a peer or mentor in a completely different environment (be it work or just a good friend).

The success found in coaches for people who are already talented at their craft often centers around motivation and challenging that person to become even better.

-----


Certainly. But such people are in short supply.

-----


You have to realize that IRC, forums, mailing lists, etc are often just as good or better than some random-circumstance professor, and that programming and computer science are especially well equipped in this area.

-----


Sadly, in my experience, teachers in Computer Science degrees rarely help one through this process.

-----


Yes. I never encountered someone who actually could have (a) sold me a CS degree, then (b) coached me properly, until after the Web was invented.

The other point I'd make is that I went to grad school, and frankly in the technical subjects the professors are rarely the best coaches. Most of them have not been beginners for a long time, and their primary focus is not on how to relate to beginners. (Primary focus: How to relate to funding agencies. Secondary and tertiary focuses: How to relate to the rest of the department, and how to relate to grad students. Somewhere down near the bottom of the priority queue: Relating to undergraduates. Those profs who are primarily focused on teaching are absolute godsends, but are probably also having trouble getting tenure; such is the nature of undergraduate technical education at elite universities.)

The best coaches tend to be slightly-older fellow students. Ironically, the social structure of undergraduate classes is designed to segregate students at different levels of experience; the moral of that is: You must take steps to seek out older students who are willing to offer advice.

-----


I had great teachers that helped me with my education at my school and they truly enriched my learning experience.

-----


Yes, my Uni experience overall has been kind of disappointing, but the good classes with interesting teachers have been amazing. Also the motivation of having to study has got me further than I would myself.

-----


The kind of teacher/pupil coach/athlete relationship you are talking about is expressly not what Universities have historically aimed to provide. A University gives a student access to resources (including mentors), and time to study, it _does not_ provide someone to continuously watch over you in the way you describe.

In fact, you are only really tested to see if you have improved once in an entire bachelor degree -- at the end of it.

-----


No mention of SICP - the CS classic that's not only decently rigorous, but actually inspires the fun and joy of programming, as it promises in its Preface:

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html

-----


There are tons of other books that could be there, too. Any "top X books for field Y" list is going to be a bit arbitrary, probably telling you as much about the people who wrote the list as the field itself.

That said, I'd also suggest:

* Concepts, Techniques, and Models of Computer Programming by Peter Van-Roy and Seif Haridi ("CTM"), which covers several different programming approaches. Not about different languages, but their underlying models, and ways in which they can be combined.

* The Art of Prolog, by Sterling & Shapiro - An excellent book on logic programming, using Prolog for exercises. (CTM also touches on Prolog, but this book goes quite a bit deeper.)

* The Lambda papers - http://library.readscheme.org/page1.html

* _Lisp in Small Pieces_ by Christian Queinnec ("LiSP"). On implementing Lisp, strongly skewed towards Scheme.

* Paradigms of Artificial Intelligence Programming by Peter Norvig ("PAIP"). AI, problem solving techniques, Lisp practicalities and implementation, Prolog, tons more. Extremely lucid. (I wish it was a hardcover, though.)

* C Interfaces & Implementations by David Hanson - an excellent book on how to design C library APIs, including quite a few useful libraries.

-----


Upvoted for the PAIP mention - Any book that can totally shift your conception of what programs can do within the first three chapters has to be up there. I know plenty of CS students from university that currently work writing software (I did Maths) who still look at me like some sort of he-witch whenever I do or suggest something data-driven as a solution to a problem, but it's that book that did it for me - it's almost a shame that the only people of my age likely to have read it are the lone "I code out of interest" types that are always on the look-out for a good mind-bending.

(the greater shame, of course, is that these people are less likely to find a satisfying job in the area than their seemingly uninterested CS-grad friends (grumble grumble))

-----


I know what you mean...I did history. :) (I've been programming since I was 5 or 6, though.)

If PAIP doesn't get you into data-driven programming, _The Art of Prolog_ definitely will.

-----


And speaking of logics, Prolog, and language. This is certainly a classic (SICP for Prolog?):

Prolog and Natural-Language Analysis, Fernando C. N. Pereira and Stuart M. Shieber

http://www.mtome.com/Publications/PNLA/pnla.html

http://www.mtome.com/Publications/PNLA/prolog-digital.pdf

-----


"SICP for Prolog" would probably be _The Art of Prolog_ by Sterling & Shapiro, mentioned above.

Clocksin's _Clause and Effect_ would definitely be the _Little Schemer_ of Prolog. (No elephants or PB&J, though.)

-----


I liked this list because it includes more books that I haven't read (and a few I hadn't heard of before today) than the last several lists like this posted to HN. The books look solid (I know of some of the authors) and the topics are well chosen.

-----


This is nonsense.

A CS degree includes math, science, a range of CS electives (e.g. database theory, networking, algorithms) and non-CS electives (e.g. writing, philosophy).

Plus, you have graded assignments, lab exercises, supplemental papers, and interaction with teachers and fellow students.

-----


Good point, Formal logic I studied in the phil dept far outstripped the AI courses at a similar level in CS. The same goes for Linear Algebra and data mining/IR.

Those two areas, possibly along with linguistics (data mining again), were much more useful to me than the programming 101 type courses.

-----


Strange, Linear Algebra and Formal Logic were part of my CS curriculum.

-----


Agreed. I think you could substitute a degree if you work through most books required for it.

After dropping out of mathematics, CS and physics studies (big mistake there), I've been working as a programmer for 10 years. But I routinely check out the curriculum at Universities to update my bookshelf. The problem is that while I will gladly work my way through SICP or CLRS, stuff like math books are different.

I often intend to work through math books (meaning: solving the exercises and working through the proofs), but this is a lot more motivational when you know you need to pass an exam in the end.

-----


No mention of CLRS? For shame.

http://www.amazon.com/gp/product/0262033844/ref=pd_lpo_k2_dp...

-----


No list of books is going to substitute for years of interactive study, but if there is going to be a list, CLRS should be (high) on it. You might not need it to write a Rails app in 21 days, but you'll be a more enlightened programmer if you do.

-----


Agreed. CLRS > TAOCP.

-----


yeah for a cs degree equivalent CLRS >> TAOCP as TAOCP is more of a reference manual on algorithms whereas CLRS is a new way to think about writing programs. Both have their place in your bookshelf though.

-----


Yes, and apparently CLRS's place on your bookshelf is shifted to the right of TAOCP. :)

Don't forget Okasaki's _Purely Functional Data Structures_, though. CLRS's coverage of persistent data structures is pretty weak.

-----


Interesting. I hadn't heard of that one. Is the book much better than the thesis that he did?

-----


The book expands on his thesis. I'd highly recommend it, especially if you found his thesis interesting.

-----


By the time I hit the second entry, TAOCP, i realized this list is a joke and save for some really smart people, no one else will gain much from pursing that book in it's entirety. Much better off with CLRS or even the first part of Algorithm Design Manual. The list is a classic list of books-i-wish-i-read-but-never-had-time-to.

-----


G.E.B.? Fun book, yes, but to make a list of 10 books to substitute a Bachelor's degree in CS? nonsense.

-----


I'm only about halfway through it, but it does seem like a decent intro to the math and CS concepts that will be needed for more advanced material. A CS degree program isn't all senior-level coursework.

-----


The biggest problem with such lists is that unlike novels, academic Books are rarely read cover to cover.

If you try to read the book cover to cover you will most likely start forgetting it after few weeks. However when you learn things slowly over few years and interact with material in multiple ways, such as lectures, reading, test, internships, labs, group/individual project you are more likely to have some hint about the material, may be you will remember a lecture or some project or some lab experience, however in case of just reading a book its harder to recall.

A good process of learning involves not just you alone but also people around you who motivate you to stay on the course and offer assessment of your capabilities. Thus formal classroom education tends to be more useful than an online one. Though it depends a lot on your school and quality of your peers/ friend circle.

-----


what a linkbait article title ... sadly, if a company has a degree requirement for hiring, then no amount of self-learning can substitute for a lack of an accredited diploma.

i doubt that a hospital will hire you just because you read all the "books that will substitute for an M.D."

yes, i know that programming skills can be more easily self-taught than, say, brain surgery, but as long as companies hire based on degrees, there isn't really a 'substitute'

-----


There are many examples of fantastic hackers with no paper to back it up. There are also many examples of awful hackers with good marks to back it up. The truth is in the code.

-----


Absolutely! I once hired a MSc CS grad on a project and he produced some of the worst code I've ever seen, not even just a code perspective, which to some degree is understandable, but from a conceptual point of view as well. Some seriously bad stuff.

That said I still greatly value a CS degree (even a self-study one) simply because of the fundamentals it teaches. It's not an automatic indicator of ability, but having that level of understanding makes the difference between someone that can think conceptually about and around a problem and someone that has a set number of tools to solve problems with.

I don't think that getting a CS degree is the only way to get that kind of understanding, but I do think it's one of the easier ways. If you're a hacker on your own and you've got to trawl through the glut of bad coding books out there, it's tough to get a good education.

Though I firmly believe that if you're the kind of guy that has gotten that education without any help then you're probably better than the guy that got it with help.

I'm firmly in the camp that holds that an education is to educate you and provide you with skills and tools to operate effectively, not to obtain a certificate. Holding the certificate is not an indication that you have actually received an education, the only indication is your ability, ambition and results.

For what it's worth, I think the majority of the books on the list are must-reads for anyone in programming, there may be a few better ones (I'm a Tannenbaum fan when it comes to OS's as an example) and there may be areas that aren't covered, e.g. usability and CHI (Design of everyday things would be my suggestion there) and there is suspicious lack of anything web, mobile or distributed, but if someone internalises these, they'll definitely be better for it.

-----


> sadly, if a company has a degree requirement for hiring, then no amount of self-learning can substitute for a lack of an accredited diploma.

Sure, but do you really want to work at a place like that?

-----


if a company has a degree requirement for hiring, then no amount of self-learning can substitute for a lack of an accredited diploma

Yeah, but what company that's still in business has this requirement? Not Google. Not Microsoft. Not any banks (that I know of).

-----


Um, Google might hire the occasional star w/o a degree, but you know that you're talking about a company who wants to see your transcripts in the interview process, right? So, Google's clearly not an example of the kind of company that doesn't treat degrees as a requirement (in the overwhelming majority of cases).

BTW, I agree that it's not a good hiring filter (I know a lot of folks who can't be bothered to apply to FB or Google because of the insanely long/tedious recruiting process), but it's pretty common practise, even in pretty high-performance tech companies.

-----


a company who wants to see your transcripts in the interview process

Sure, if you have no work experience. That's the case everywhere.

(Google is highly hype-oriented; not everyone there is Guido van Rossum. I worked at a company that Google bought. I had a coworker who started crying when my boss and I taught him what database transactions were and asked him to apply it to fix a race condition in our application. He still works at Google.)

-----


There's a big difference between "requirement" and "taken into consideration". Some companies will refuse to hire people without degrees (so I hear at least), but Google has no such strict rule. They do consider your transcript as part of the hiring process because it does have some non-zero amount of signal in it.

-----


I'd add a few that might be a bit dated, but I still think they're still great today:

Introduction to Algorithms - CLR(S) - other people already suggested this.

The Soul of a New Machine - feels old now, but it's still a fairly well-written glimpse into real-world (hardware) projects, or at least where we came from. Ahh, maybe it really is too old now to be that educational, but it's a good read.

Programming Pearls - I think this book still teaches as much practical knowledge about the field than you could get in 5-10 years. If you really "get" everything in here, you should be well on your way to being a super-star code hacker, if that's what you want to be.

-----


I'd add "Code" by Charles Petzold. It's a sublime step by step guide to building a computer.

-----


In my opinion, this book is practically a must-read for anyone living in our increasingly computing intensive world, not just for aspiring computer scientists. It has both depth and accessibility, starting with something familiar in concept to many people (Morse code), and slowly building more and more ideas toward the final realization of a workable computing machine. Great book.

-----


I suspect that up voting recommendations for Petzold's book became a Pavlovian reflex on me. That is a very well written book.

-----


Most of these books are from the ACM Classic Book Series: http://portal.acm.org/toc.cfm?id=SERIES11430&type=series...

-----


seems to be lacking a number of cs topics, notably: databases, data structures, algorithms, machine learning, data mining, and security

-----


No Discrete math book either. I wouldn't call anybody a "computer scientist" that didn't have a good grasp of discrete math. Though I suppose you can't make it through TAOCP without picking up some discrete math.

Also, does anyone else think listing TAOCP as one book is a cop-out?

-----


It's not even a cop-out, it's just ridiculous. TAOCP is basically a reference book -- no one actually reads through the entire thing like a textbook. TAOCP can be a good companion to other things but I wouldn't attempt to read it 1) in exclusion and 2) as a substitute for a CS degree.

Also, no K&R?? How will you make it through OS design without K&R?

-----


On the bright side, at least they're computer science books. I was half-expecting to see "Teach Yourself C in 20 minutes" or "Visual Basic .NET For Dummies"

-----


> data structures, algorithms

#2 on the list, The Art of Computer Programming by Donald Knuth, covers those.

-----


And nothing on software engineering, testing, image & signal processing, numerical methods, ...

-----


Databases have been the most important topic in every interview I've had: can you "select col, count (col) as count from tbl group by col?" Their omission on this list surprises me.

-----


It seems that this 'article' is lots of copy-pasting of most of the reviews from this Amazon user: http://www.amazon.com/gp/cdp/member-reviews/A3CC0TO2YD3P5A/

-----


hmm, nothing on networking or computer architecture, so sad. or would they be considered a part of a "computer engineering" degree ?

-----


The latter. In my experience, the fundamentals that this list covers are 'the hard parts' in terms of a certain kind of understanding and sort of intellectual challenge: most things more 'applied' beyond this point are taught poorly if at all in CS, and learned more readily in the 'real world.'

-----


I don't know, at Northwestern you can't pass the Intro to Networking class without writing TCP, software implementations of link state and vector routing, and sockets implementation.

Those are just the project sections, there are of course formal exams for the other fundamentals of networking.

-----


Why? That sounds like a complete waste of time to me.

PS: I have a CS degree and I have written a fair amount of low level networking code, but I have no idea how that helps someone understand networking on either a practical or theoretical level. But, if you feel it was in anyway useful I am all ears.

-----


If you can implement it yourself, you understand it at a much deeper level than if you just read about it. This is why CS students still implement their own basic data structures (linked lists, hash tables, trees) in the freshmen and sophomore level classes.

-----


In CS how something behaves is far more important than how it's built.

For example one of the most surprising things to me was the fact that all programs built on top of TCP/IP still need their own messaging format because a packet can be split in transport. The header information says almost nothing about the original message sent, just enough information to send a reply up the chain and rebuild the message.

As to linked lists, the speed that fragment virtual/physical memory is in no way obvious from their source code. Build one in C vs Java and they behave vary differently even if the code looks similar.

PS: I really prefer CS projects that require some thought. Quickly sort this 50GB file requires a different mindset than simply, build a linked list library. IMO, build a linked list library is really a lesson in using pointers and tells you vary little about data structures.

-----


I don't disagree with anything you said, but most people need the "implement this data structure" project first so they can understand what they're doing. Then you can give them a more open-ended project.

-----


Well, I did, but I helped to write a kernel networking stack. Not really common development. Still, I think it's a fundamental thing everyone should understand. Most people never really have a use for writing a kernel memory allocator but it's still important knowledge to have (especially in systems development).

-----


My choices would have been different, with general topics: data structures, automata theory, programming languages survey, systems programming, algorithms, network programming, database/datastores, and AI ("Artificial Intelligence, a Modern Approach").

I have mixed feeling about compiler theory, and left it off of my list. Some may question including systems programming.

-----


As others have mentioned the affects of a coach cannot be overlooked.

Add in also the benefit of exploring with one's peers in a free environment.

The idea that reading a selection of books is an effective substitute for an undergraduate education is a damning comment about the state of CS programs. As an actual effective substitute, no.

-----


This compelled me to take my copy of "Programming Pearls" (by Jon Bentley, 2000, 2nd ed.) from the bookshelf.

Another one that has spent time on my night table is "The Turing Omnibus: 61 excursions in computer science" by A.K. Dewdney. Varied, clever problems in dazzlingly plain language.

-----


The Turing Omnibus leisurely covers a broad range of important and often forgotten topics. It's a great book. It will give you a good overview of CS, and then you can go deep at your choosing with other books.

I loved the first chapters in Bentley, but then I thought the novelty wore down. Maybe I'll take a new look at it too.

-----


The list is at the same time too little and too much. Too little, because it misses on fundamental subjects like computer architecture and algorithms (modern algorithms, which are heavily graph-based). Too much because those books contain lots of in-depth information that is not required, unless you're really, really passionate about the field. And some parts are simply not very relevant - e.g., Knuth tells you at length how to implement (in assembly!) algorithms that are very specialized and you normally draw from a library (plus the fundamentals of assembly are not exactly the same on today's multi-core, speculative execution machines).

-----


I wholeheartedly disagree with the recommendation of "Artificial Intelligence, by Elaine Rich". The book was unreadable in a way that made me want to detest the subject.

I found the Patrick Winston text a lot nicer.

-----


A typical CS-undergrad set of topics: -How to Program

-Algorithms & Data Structures

-Functional Programming

-State Machines & Computation Classes (NP-Complete, Turing Machines, Regular Languages, etc)

-Complier Construction

-Physical Computer Architecture / ASM

-Operating Systems

-Computer Networking

-Parallel Programming

And then some other recommened topics:

-Database Systems

-2D & 3D graphics

-AI

-Crypto

-----


I've always wondered how do you choose the right books to read when you want to pursue a career on your own. Tough job I guess.

-----


You might like this thread on ask.metafilter: http://ask.metafilter.com/71101/What-single-book-is-the-best...

-----


There are so many courses online now that you can get syllabi from.

-----


Try many, keep few?

-----


Extending the premise to the ultimate, if you have time to study just one book and one in which not a single word is wasted it's got to be :

The Elements of Computing Systems: Building a Modern Computer from First Principles by Nisan and Schocken

-----


Substitute in what way? Can I list all the computer books I have read on my resume?

-----


Yeah, just do all the exercises in TAOCP and you'll be fine!

-----


The article confuses "degree" with "education".

-----


http://en.wikipedia.org/wiki/Autodidacticism

Higher education is over-rated. If you can read and write, there is no reason why you can't pick up a book and learn something new yourself. Yes, your mileage may vary in performance, but how is it any different from IRL education?

-----


The problem is that a lot of people don't learn how to learn until fairly late in their education. Whatever clarity of thought and healthy skepticism I have developed, I give most of the credit to the great teachers who challenged me. It is misguided to tell most high school students to go and learn completely by themselves. Disregarding the motivation that school brings, someone that opts instead to study alone in their room runs the risk of fooling themselves -- the risk of not really getting the point, or not asking the right questions, or being just plain wrong (for long periods of time) without even realizing it.

-----


I haven't read a single one of those books.

If you're going to substitute anything for a CS degree, just get out there and build something.

-----


Computer science and software development are not the same thing. This is part of the problem.

-----


Architecture is not carpentry/masonry/tradecraft. I don't know why so many people confuse it with computing...

-----


Even if it substitutes for a CS degree, it won't make you a remotely decent programmer. Without books like Code Complete, The Pragmatic Programmer, The Mythical Man Month, etc., your code will suck.

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: