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

If you're not happy with the education then do something about it.

One great option that isn't presented often enough is to transfer to a different institution. Don't think that just because the school you're at sucks for you that all of them will. In some cases you can actually get into a better school than you got into out of high school as a transfer student (although some schools are weird about accepting transfers, Google can help).

Also, note that I said "for you", very few, if any, colleges or universities in the US suck in general. Some are stronger or weaker in certain areas, some emphasize certain aspects of education over others, and some will better prepare you for various jobs than others, but it is an individual evaluation.

Another thing to keep in mind is whether what you're hoping to get out of school is really what colleges and universities offer. Maybe college isn't right for you. Colleges and universities do not prepare you for a job (with a few notable exceptions like professional programs such as law and medical school, and certain business programs). Instead, they prepare you to prepare yourself for a job.

A lot of people like to trash the emphasis on theory in academic CS programs, but if you pay attention, and work hard (which it sounds like you are, with your side projects) the theory becomes pretty damn useful later when you get a job and you're shown a couple hundred (or thousand if you're really "lucky") lines of spaghetti code and asked to figure out why it is "slow", etc. A lot of people don't take the time to digest the theory they learn and therefore they aren't able to apply it to real problems when they go out into the world. Don't make that mistake.

However, does everyone need those exact skills? Nope, we need tons of people who can pump out relatively simple, relatively repetitive (though not enough to automate) code for relatively standard applications. We also need people who can maintain that (and other) code, write tests, automate processes, and a hundred other things each requiring a slightly different mixture of skills, not all of which are (or should be) taught in college. Additionally, and this is important for startups, we need people who have strong social and organizational skills, who don't necessarily spend all day writing code (not to mention the hardware people, everyone always forgets about them :)

So instead of plowing $30k/year into an education you aren't sure you want, you might want to think about a different path. Do some research. If other schools are stronger in what you want to learn, maybe you should transfer. It could also be that college just isn't what you should be doing right now, perhaps a program as described in TFA, or one of the other "code schools" would be more your style and better fits your interests. You can usually go back to college and pick up where you left off if you change your mind (although depending on the school your tuition might go up in that case).




Does a CS education at all prepare one to deal with spaghetti code? My impression from working with CS degreeholders is that maintainability and craftsmanship is completely orthogonal to algorithms and theory.


It depends on the programming. There are actual degrees (not a ton of them, but they exist) in "software engineering". Different programs also have more or less emphasis on such things. That was part of my advice, to think about whether the program was a good fit for the goals the student had in mind.

As for the spaghetti code example, there's definitely more going on there than I implied, but my point was that having an extremely solid grounding in algorithms and theory can be a huge asset, assuming the student has actually taken the lessons to heart. For example, I have spotted bugs and inefficient algorithms before just by looking at code or even hearing a description of what it is supposed to do that colleagues with less "theory" knowledge have missed.

Of course YMMV, there is no silver bullet. My point was just that a broad knowledge of theory isn't useless, but it also isn't necessary for everyone to have. We end up in the best place when every person gets the education that best suits what s/he wants to do, and having enough information up-front to make that happen is critical.




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

Search: