Hacker News new | ask | show | jobs
by owebmaster 3285 days ago
> Let's just say we guessed wrong. ;-)

Not that wrong, imho.

> my mom discouraged me from majoring in CS because she literally thought programming was too easy to justify 4 years of classroom training, and she thought that the job market for programmers would quickly saturate.

This part is real wisdom. The best developers I know (and I myself, which I consider an above average programmer) learned how to program by themselves (before, during or after high school time). And it is not uncommon to find people with CS degree unemployed or with difficult to reallocate with the current state of tech, at least here in Brazil.

3 comments

That's the distinction of coding vs CS.

Building CRUD apps using existing frameworks is coding.

Building said frameworks and the rest of the software that powers those CRUD apps takes more.

I don't mean to rag on simple projects or coding either. It's just as noble as any other profession. But to say that a random Rails or Node developer could write something like Postgres is laughable.

It's not the degree that makes that possible either. There's plenty of idiots who've graduated. It's the difference between studying how to do something and studying abstract concepts. People who have done CS degrees are more likely to have been exposed to the latter.

I don't mean to belittle you either, but this is hogwash. Of course a Rails or Node developer wouldn't be able to write Postgres without ramp-up time...

Maybe what you're saying is that the ramp-up time would be LONGER for someone starting from Rails or Node only knowledge to being an infrastructure developer?

Any highly sophisticated application ( Postgres, LLVM, etc ) requires some advanced levels of domain knowledge but they aren't impenetrable fortresses of skill that no mere mortals can access.

I think, somewhere along the way, a lot of developers started believing this fantasy that they were the keepers of secret knowledge that only a few select individuals knew... GOOG and MSFT perpetuated that with esoteric interviewing processes and cult-of-personality style branding. The truth is... the fundamentals of CS aren't terribly difficult nor are they even terribly exciting. You can absolutely learn them on your own or even as you go.

> Any highly sophisticated application ( Postgres, LLVM, etc ) requires some advanced levels of domain knowledge but they aren't impenetrable fortresses of skill that no mere mortals can access.

Indeed. I think too many problems in our industry are seen as unapproachable. There's a lot of people working on postgres, me included, who did not have any sort of deep background in databases before. You start working on smaller things (I started making int -> text conversion faster), review other people's patches, start to develop new features, ... Gradually that gives you a more and more knowledge in database architecture. And you read a few good papers here and there.

Obviously that approach doesn't really lend itself to writing something like postgres from scratch - but realistically that's not something you're going to do on your own anyway. And if you do start a new project you don't set out to do something absolutely complete, but build it iteratively. With more domain knowledge, you're more likely to get the architecture halfway right initially, but in either case you're going to have to redesign and redesign and redesign.

And who do you think will build a better web framework (like Rails), someone with 10 years of experience and hundreds of systems deployed with frameworks of the time at age of 22 or a fresh graduate? I'd bet on the former.
I find CS knowledge useful only when you tackle hard problems. Only then, CS and mathematics knowledge will come to play.

You don't need a CS degree to make a website.

I think you mean specific problems. Hard math problems are extreme outliers in fhe realm of computer science and there are plenty of suitably qualified people in the maths side. That said, less hard problems, more suitable programmers with undergraduate maths, are quite common and a growing area. This may preclude those that are self taught and lacking more advanced, but not highly advanced math.
I don't even think it's that necessary to solve hard problems, at least in most fields.

You can do a lot with general coding knowledge, however, I've found the CS fundamentals to be most useful for optimization.

it depends on what do we define as "hard problems"
Some of the best developers I have worked with had CS degrees and some of them didn't. The ones that didn't were programming from when they were kids (like you say). Based on my experience of working with developers from both backgrounds, I personally wouldn't discriminate based on whether someone had a degree or not when interviewing.