After posting my last entry, I saw an article (via Jon Baer’s tumblr):
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.