Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I've a secret for you: in programming there are only people that taught programming to themselves, because there is no other way to do it. I guess that this is true for many other things as well.

p.s. for the same reason many people have a CS degree and can't code.



Disagree. There are plenty of people with CS degrees who can code, what's more dangerous is a programmer with gaping holes in their theoretical knowledge.

A friend of mine who both has years of real world experience and a PhD in CS is fond of saying: "A 'Web Developer' is a person militantly ignorant of computer science who spends most of their career re-implementing elementary computer science."

It's sheer hubris to think that one can disregard decades of CS theory and be a good developer. You might know the syntax of a language or have a great memory for APIs, but if you don't know how to efficiently apply that knowledge, what's the point?


As the old saying goes, theory is nice, in theory, but has problems in practice :)

Leaving aside the scornful sneers at those "web developers" (which read more as envy that "this chump makes more money than me and didn't spend as much as I did on a degree"), there is a strong tendency for people to assume that what they know and can do is special, while what someone else knows and can do will never be up to snuff. And there's a tendency to extend this to group membership. Witness the hate of people with theoretical CS education for people without.

In reality, there are large fields of programming which are well-trod enough at this point, or possess layman-oriented tools of sufficient caliber, that years of systematic formal theoretical CS education simply is not a necessity. Which, to be honest, is a good thing; programming is a useful skill to have in the toolbox, and restricting access to or participation in it by denigrating dabblers or self-taught amateurs is a net harm.

Consider, for example, how many people doing quite successful and worthwhile things today got their start writing BASIC on their home computers a decade or two ago, and then consider how many of them and how many of those successful and worthwhile things we'd have if they'd all listened faithfully to Dijkstra's bile.


It's a glib statement, but it's not coming from a place of envy - more likely cynicism than anything else :) As I said, he has real world experience, he's made his money and continues to do so...

I am both self-taught, and have a CS-type degree. I've walked both sides of the street on this issue, at times I've thought I wasted 4 years at uni, and at others I've been glad I sat through at times dry and disinteresting lectures, when I get to apply that theory in the "real world."


Don't confuse a formal CS education with a formal theoretical CS education. That is, CS theory is only part of a formal CS curriculum.


Typical CS arrogance. I was a "web developer" for years before I was a CS-studying "programmer" and I spent most of my time fixing the assumptions of CS graduates in order to produce something that actually fit the use case, satisfied the customer's desires, and worked in a browser.

"Web Developers" often have a much more practical sense of how computers and the web actually work whereas many CS graduate "programmers" tend to assume that the computer and browser will behave according to theoretical principles.

Both "web developers" and "programmers" are a crucial part of the web app development process. Just because someone can't write a sorting algorithm does not mean that they can't be of value. Similarly, just because someone can write a sorting algorithm does not mean that said algorithm will actually perform in IE7.


CS grads are a source of as much over-engineering as plebian programmers are for under-engineering.


There is the CS theory aspect to it, of course. I don't encounter that all-to-often in my daily development. Things I encounter that definitely took me as long to learn, if not even more (in the context of web development):

- decomposing my code into patterns, abstractions, without going overboard,

- documenting stuff so that I will understand or other people will understand things in 6 months time,

- writing code on a team,

- having a good project workflow to handle source code versioning, releases, packaging

- knowing how to deploy things to a multitude of servers

- debugging caching problems, optimizing a DB for performance, understanding runtime performance of javascript,

- dealing with customer expectations,

- dealing with deadlines, unexpected events, etc...

- dealing with legacy sourcecode of hundreds of thousands of crappy bullshit.

Even in the aspects that "could" involve more theory, like optimizing a DB for performance, I find that theoretical aspects have pretty much nothing to say. There may be some CS involved on the patterns / abstractions level, like which data structure to choose or how to structure a communication protocol. But to be honest, I don't really have the time and the need and I just resort to whatever library people think is cool and stable. And that works pretty well.

None of the things above is simple, and pretty much none of it is taught in CS. And that's what makes a good developer I think, not whether I'm able to bang out a petri net or a neural network.




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

Search: