Hacker News new | ask | show | jobs
by austin-cheney 928 days ago
Next step: write an application. I mean a complete original application with documentation. It does not have to be big but it should be something complete that others can use.

That will teach basics of code organization and writing technique, which is so much more than just squeezing out a few code samples.

As for education don’t bother with a computer science bachelors degree unless you are dead set about getting a masters, which I highly recommend. Most of the developers I have worked with through my career who were educated through a CS bachelor program were savagely incompetent compared to developers who were either self taught or had a graduate degree.

3 comments

> don’t bother with a computer science bachelors degree unless you are dead set about getting a masters

I disagree.

At least in the United States (I'm not even from the United States, but I studied there), a master's in Computer Science (CS) does not add that much more value than a bachelor's. Infact, as far as coursework go in some schools there's quite a bit of overlap between senior undergrad and grad school classes for CS.

Go for masters only if you want to go for PhD immediately afterwards. And trust me, PhD is NOT the correct path for everyone. Infact, I know a lot who join the PhD program after bachelors, realize it's not for them after a couple of years, and then exit with a masters.

As for bachelors study whatever you find interesting. Maybe that's CS. You'll also probably be just fine taking math, EE etc.

You are completely missing the point. Ultimately, higher education is not about learning more about computers. It is only about natural language communication and research. Nothing more follows.

There are two great failures that occur from a bachelor level CS degree. There are actually many failures, but two reign supreme. First, most developers graduating with that degree cannot communicate in writing even at a child level. It is absolutely mind blowing how bad it is and completely sets the tone for the profession.

Second, the practical application of that degree is at best superficial. Many people who graduate with a bachelor's CS degree will tell you they learned so many things of such great diversity they never would have learned otherwise. In practice though, their skills appear to apply extremely narrowly, so what they claim as diverse appears to many other people as average or less and even then never applied. If you want a magnitude greater diversity of technical skills do equivalent work for the military. I can personally testify to this as I have worked in both environments, military and corporate software, for more than 15 years each.

Anybody smart enough to program, at least on real original products that ship, is smart enough to teach themselves to program. They can do that and simultaneously earn an education that teaches life skills like advanced written communication, finance, or whatever. If you want to be a beginner, or practical equivalent, with maximum career mobility then stop at that CS bachelor's. Most developers get burnt out on that after 12-15 years after learning to stop repeating the same mistakes over and over only to be burned by junior peers who cannot operate a higher capacity.

So I'm in the middle on this. And of course my opinion is colored by my person experience.

I learned to code at 12, and went to university at 19. I went in thinking "I know how to program" (and I did), but after the first few months (where they taught programming) I found so much more to learn.

I could point to specific modules (databases, algorithms, and some others) that I've used all career, but the real value came from elsewhere.

The depth of understanding in all the modules meant I felt equipped to do anything. I went to my first job and promptly used a language I'd never seen before. I wrote a function, used in production, on my first day. I soaked up the Language Reference manual in a couple weeks.

Basically uni taught me that new stuff can be learned -really quickly-. That when given a task in something new, I can approach it with confidence. Learning (especially today, with Internet resources) is very accessible.

The other thing I discovered at uni were smart people. Smarter than me. I found a group who wanted to suck the marrow dry. We pushed each other, sharing new accomplishments - competing if you like to push the boundaries. Most of our code was not "handed in" - it was tangential to the course work. It forced me to "be better".

It also showed me that helping others is it's own reward. Part of my job is training (and writing), and being good at that was a big part of my early career.

So, in my context, my bachelors degree has been my foundation. Everything that came after was built on it. But I didn't stay past my first degree - I couldn't wait to get into the world and apply it. I've never regretted that, but I've no idea how that path-not-taken may have panned out.

College is like most things, you get out what you put in. They don't "give" you anything, but they offer you the chance to "take" as much as you can.

As an aside, I wrote my first commercial program in 2nd year. It was a simple program for printing medical genetic diagrams on laser printers (this is pre Windows.) It was commissioned by our genetics department. He suggested I sell it to others. Again, this is pre-internet so I went to the med school library, found a research directory, and wrote a letter to everyone in the genetics section. Sold a handful (at $250 a pop) to universities all around the world. Now THAT was a serious rush!

Above all, the lesson I learned was that adding value is valuable. My career is built on adding value to others - which, it turns out, generated a decent living. Find the value you can add, and people are happy to pay.

This is absolutely wrong advice in this climate. Self-taught people have a massive survivor's bias. You _can_ make it without a degree, but having a degree greatly increases your chances especially at entry level.

College is also not just about the paper, but the connections. I worked closely with a nationally renown robotistist and she gave me a recommendation for grad school if I wanted it (I did not. So burnt out by the time I got here). Does any self-taught person get to really do work with actual robotics stuff?

I was exposed to so many more disciplines and ideas to get a sense of what I wanted to do along with make connections that help me in my career to this day over a decade later.

I've had recruiters and interviewers tell me straight out that I got first pass because of the college I walked out of. This still happens after a decade. People say it's a hard market to get a job right now? I haven't noticed. Me and all my college friends snagged a new job in a month. I've never had a hard time getting a job. Ever. That's the power of a degree. It gets you pass HR filters and when there's a tie, people pick you first to try and that's powerful and compounds as time goes on.

Being self taught is great when times are good, but it's very hard to get that next job when times are bad. I'd never recommend a 16 year old skip college. A piece of paper from a ho-hum state university still allows you into the stack of places with stupid degree filters.

> This is absolutely wrong advice in this climate. Self-taught people have a massive survivor's bias. You _can_ make it without a degree, but having a degree greatly increases your chances especially at entry level.

That is true. It's also true irrespective of job and industry, but that isn't the point. If you want the greatest possible career mobility then earn that CS bachelor's degree and be a beginner developer forever who only follows trends. I doubt though, that is the advise they were looking for. If you want to make more money and have a career with real growth then absolutely do not do this. I am speaking from experience.

Their best bet at a real career with any real decision input is to get a graduate degree in CS or be self-taught with a different unrelated bachelor's degree that teaches communication skills. The best way to differentiate from other beginner developers is some combination of ability to write original software and to write with natural language. Its astonishingly staggering how badly most CS bachelors perform at these even well into their careers.

Thanks for the advice! I've decided on a Ph.D. and a master's. I'll follow your suggestion to create a complete app with documentation for a deeper understanding of code organization.