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

The top comment is bullshit.

I could not get through those three books but I get paid to program. My code is repetitive and shitty but I can produce a working web app as long as it doesn't have to support too many users, and it's fine.

My husband never read any books about formal programming and taught himself from those random "learn Java" or "learn python" books. He's a mathematician and programs to write simulations/solve equations, and he gets paid for it too.

If you can't get through those three books maybe you can't hope to be a computer scientist, fine. But you can certainly program, in the same way you don't have to be an English major to read or write.



Most programmers write code that other people have to read, maintain, or extend at some point. If you write repetitive, shitty code, you may be qualified to write some useful programs for yourself, or write a web app that doesn't have to support too many users -- which are valuable skills -- but it is not fine for the majority of programming jobs. Incidentally, given that you can do what you described, I'm also pretty sure you could get through those three books if you tried; they are not rocket surgery.


My point is that programming is useful in a variety of contexts and you don't have to be that great at it to accomplish something.

You're right, I probably wouldn't work out at most programming jobs. I do contract work; the web app I'm writing now I had about 3 weeks to knock out, will be used by 2,000 people, and will only be used for about a month. But I'm still a "programmer," because I program.

We're not all writing mongodb or working at Google or whatnot.


Well, I agree with that, so I suppose I won't argue any further about it.


Cool!


I couldn't agree with you more araneae, personally I am tired of seeing the statements where it is hinted that you need to have done xyz otherwise you have no business calling yourself a (good) programmer. I know people who haven't touched those books and they may be considered the so-called "bad" java programmers, yet that is not the case...these people know the intricacies of J2EE, have read & understood the many JSRs and have in-depth knowledge of the many java libraries and frameworks..yet they are not traditional computer scientists with CS backgrounds


There's programming, and then there's programming.

I'm sorry, but what you're talking about sounds like it doesn't qualify as "programming" as much as web design and code plumbing. Note that in large part I'm talking semantics, here, in that my definition (and I suspect Joel's as well) differs from the way you're using the word).

I understand that you're likely paid well to do it -- as are plumbers. And it's a respectable job. I'm not trying to knock what you're doing.

But by your own admission your own code less than ideal. And Joel is talking about what a good programmer would need to be able to do, and if you want to start someone off on the path to becoming a good programmer, it's not a bad suggestion.

If you just want someone who can copy and paste code off of Github and doesn't really understand it, well, then you don't want a "good programmer" -- and frankly anyone worth their paycheck in IT probably already knows how to do that.


Everyone here seems to be a big fan of the "no true Scotsman."

If you write code you're a programmer. End of story.

"Programming, and then there's programming" and "code plumbing" are, in fact, semantics.


  If you write code you're a programmer. End of story.
The 'no true Scotsman' fallacy does not apply when you are actually debating whether someone living in a border region with mixed parents can be considered 'a true Scotsman'.

We don't call everyone that uses Excel a programmer, even though the simplest expression of the form sum(A11:A22) is, for every reasonable definition, 'code'. That would dilute the term far beyond what people generally mean when they talk about 'programmers'.

You cannot call yourself a writer, just because you passed English with a C for your essays and now write blog posts for a limited audience. You are not a programmer just because you can whip out webapps that strictly do the limited things you require of them.


> If you write code you're a programmer. End of story.

If you do arithmetic, does that make you a mathematician? Some things are a matter of degree.


Your analogy doesn't work because "mathematician" is a research position. You should compare mathematicians to computer scientists, not programmers.

You could make the same analogy and prove any side of the debate depending on the job you choose:

If you do plumbing, does that make you a plumber?

If you do painting, does that make you a painter?

If you do physics, does that make you a physicist?

If you drive vehicles, does that make you a driver?

Really, the debate here is that some people consider the word programmer to mean "computer scientist" or "computer expert", while others consider it to mean "person who programs". It's a debate on the meaning of a word and this kind of debate cannot be settled, because the word has multiple meanings. Everyone's right in their own way.


> Everyone here seems to be a big fan of the "no true Scotsman."

This isn't an example of that, because nobody changed definitions partway through.


On the other hand, a lot of people here love claiming that an argument is "no true Scotsman." ;)


I don't think you need to get through those three books as your first order of business learning to program. "Give up you're never going to get it" is a ridiculous attitude to have when trying to learn anything.

Try something simple. Work your way up to more and more complicated things just like any other learning endeavour.

If you want to stick to plumbing type programming then go for it. If you want to branch out into a more formal computer science type understanding, by all means grab some text books and learn some data structures, algorithms, abstractions, oop patterns, etc.


So true: If you can program, you are a programmer. How you came about this knowledge is insignificant.

However, the post was about the fastest way to learn programming and books are a terrific way to do that. Not the only one. Maybe not the best one for you. But for many people, books work great!


How you came about this knowledge is insignificant.

Yes, but these books teach you more than writing something that compiles. Just read the ToC of SICP: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#...


So what? That's not what the original question was about. It was about how to get someone to be able to program in C#, and giving that person some theoretical books on computer science is probably a very bad idea.

Some people learn very well just by reading a book, most people don't. It's impossible to answer the original question in a good way without knowing how that person learns best, what he knows beforehand, what he's done so far, and what he wants to use programming for.


Are you implying that self-taught programmers can only ever write 'something that compiles'? Because frankly, the best programmers I have met thus far have largely not studied computer sciences.


It is bullshit because you are borderline incompetent and still get paid?


This conversation seems to be entirely missing the point of the original article. The programmer to be in question is working at a .Net shop and needs to be able to get up to speed in a timely manner. It addresses a particular person in a specific instance.

Really he needs to understand what object oriented is, variables, arrays, loops, conditionals, debugging and the actual .NET syntax. Understanding these thing the person will be able to do their job. That seems to be the most important thing. Certainly you may not consider the person a "real" programmer but, it is up to him to fill out the rest of his knowledge and grow as a programmer.

The "top" answer sounds suspiciously like today's XKCD




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

Search: