Saying “You Suck, New Programmers” is not helpful.

After posting my last entry, I saw an article (via Jon Baer’s tumblr):

10 Reasons Why People Initially Suck at Programming

I kind of want to take it point by point, because the title and attitude of the article waver between helpful and douchey.

1. Programming isn’t right for everyone? Wrong. Everyone should know how to write code, at least a little. In this computer-driven society, it’s part of knowing how the world works.

2. It takes time. Duh. That’s not particularly helpful.

3. They have the wrong attitude. What? Learning to program is a profoundly humbling activity. The only enemy is the tempting option to quit in frustration at ourselves.

4. Start with the basics. Exactly. Ignoring advanced programming theory and sticking to basics is the only way through without bending your head into a pretzel.

5. Google. Google. Google. Google. 70% of my programming is done via Google. But that leads to its own set of frustrations, as I outlined in my last entry.

6. Plan ahead. Not at first. Advising to plan it out on paper first is solid, but not really for beginners. That’s like TDD: you have to know what you’re planning, and that comes through painful, blind fumbling at first.

7. Google your errors. Yes. Although this kind of an addendum to #4.

8. Study the language & syntax first. Wrong. My problem when starting out was “too many books”. I had all this abstract learning about Ruby, but little hands-on experience. When putting fingers to keyboard, I quickly learned I knew nothing. Everything I really, truly know came from failing, then looking up or asking, then doing it right the 2nd, 3rd, or 50th time.

9. What’s your algorithm? What? Asking a new programmer for an algorithm is just plain mean. But I think there are 2 gems in this bullet: “sleep on it” (works for me) and “you’re making it too complicated” (almost always true!).

10. Don’t wait for someone else to help. Eh… I think a big part of what’s wrong with programming is this “lone wolf” style that produces wanna-be rockstars and cowboy coders. No, you shouldn’t wait on someone to help, but there should absolutely be more resources and people to help new developers.

That’s my point-by-point analysis. I feel strongly about this, but if you disagree, feel free to comment or bitch me out on twitter.

  • Talk Binary

    Hi, I’m glad you enjoyed parts of my article. I’ll admit, it was my first time and I felt I could’ve written it a bit better since I feel I either misguided or wasn’t clear enough.

    Anyways, here is what I think.

    1. I meant programming in the long run, either as a career or a hobby. Not a one time skill. I’ve seen many people try and fail once it gets “difficult”. They either don’t have the patience to learn abstract topics involving algorithms, complex data types, etc.

    2. If you want to learn how to program well, it takes time.

    3. People sometimes have the wrong attitude when trying to learn a particular subject. I might’ve geared this article a bit too much in a Computer Science point of view, so I probably should’ve mentioned that.

    I noticed this when I saw students would have a negative attitude towards a specific subject since they felt it was irrelevant to what they wanted to do.

    6. Plan ahead is useful I’ll agree on tougher problems that a beginner might usually not encounter but you’ll be surprised.

    8. I mentioned learned the language as in the basics of syntax, control flow, objects, etc. I’ll agree, learning abstractly won’t get you very far in the beginning.

    9. Yeah, I’ll agree. Might’ve worked it too much.

    But yeah, thanks for this rebuttal. It makes me learn how to write clearer and better thought out articles.

    Best,

  • admin

    A trusted advisor (who is teaching me to program) said this came across as “a bit ranty”.

    Reading it back through, I realize what he means. I kind of wrote it off the cuff, and I took it a little personally, like I was being told as a new programmer all the reasons I wasn’t up to par.

    I want to make it clear that I appreciate that your article focuses on ways to help new programmers. Most coders aren’t aware that new programmers even exist.

    Thanks for bringing more context to the article, and I look forward to your future ones (and I’ll try not to be so knee-jerk about reacting next time).

  • Talk Binary

    Likewise. Thank you for the rebuttal. I like know people have something to say about my thoughts.