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.

Why it sucks to be a new programmer (and how you can fix it)

via UnconfessableIdeas.com

About 18 months ago, I had a life-altering conversation with someone who showed me the magic-wand-like powers of Object-Oriented-Programming, and it didn’t take very long for me to fall madly in love with writing code and making things. It was like writing, but then making the words literally dance.

Since then, it’s often been a bit of an uphill battle, requiring all my fortitude to stay on the learner’s path instead of retreating into places where I can feel competent again.

While I now feel like I’ve made it across the most difficult chasm, I think we leave a lot of people behind somewhere along the way, or intimidate them out of starting at all.

I believe this is a cultural problem that is going to start repairing itself as programming becomes more mainstream, but there are things you and I can do right now to help.

From a newbie’s perspective, here are 3 reasons why programming culture is frightening, and some ways to make the culture more welcoming:

1. No one seems to be able to remember the embarrassment of being a newcomer.

It’s not that experienced coders don’t care, it’s that most people either live and breathe code, or they have zero interest in it. I think most programmers and non-programmers assume that if someone has an interest in coding, they started in junior high, and were fully onboarded by a CS program in college.

That’s no longer true, and it shouldn’t be a surprise that many are now cross-training from backgrounds of all kinds, especially those that have a lot of contact with programmers like designers, writers, and entrepreneurs.

Sadly, it’s still somewhat rare for someone to start learning to code out of the blue. So those of us that are new are far enough between that it can be easy to feel like the dumb kid in class, and that it’s best to keep quiet lest we be found out.

When I have asked questions, I’ve often immediately regretted it, feeling like an idiot. I ask the wrong question or in the wrong way, and the experience is deeply embarrassing.

I believe if every experienced programmer dedicated one blog post a month to a “newbie question”, or one evening to seek out someone new and answer their questions, we’d have a profoundly different culture.

Most importantly, when stupid questions are asked, be patient and perhaps share that you were once where they are now. Help them undertand that there really isn’t anything to be embarrassed about, and if asking the wrong question exposes some underlying misunderstanding, take the time to correct it.

2. Newbies can’t understand a word you’re saying.

Programming, more so than almost any other profession, is almost completely opaque to outsiders, due to a high level of insider jargon, even for people who work with computers. A year and a half on, I often run across conversations that make my head spin.

Generally, programmers are looking for something interesting. And many, in looking for new tools, technologies, or boundaries to push, don’t realize how intimidating it is for new programmers to see or hear these conversations whizzing by six or seven levels above them.

I’m convinced that this fortress of jargon is one of the reasons there are few women in programming. It’s great for guys: you suffer the paddlings of stupidity for a while, and then make it into the fraternity of coders.

But this “red rover” mentality doesn’t jibe with the mental models of most women I know, and it requires a very special kind of adventurer to be willing to defy this tradition, like the girls on my high school wrestling team.

This is a tricky one, because speaking in programmer’s jargon is a huge timesaver. But every once in a while, remember that many people don’t know what you’re talking about, and take a moment to explain, include a footnote, or even link to a Wikipedia article about one of the arcane things you’re discussing.

3. The truth is out there (somewhere), but so are a lot of other things.

One of the most frustrating things as a newbie is that it takes an incredibly long time to find answers to simple questions. I wind up using a hodgepodge of various methods found via Google to solve almost every problem.

Often, I’ll get so stuck that I get profoundly discouraged, feeling as if I’ll never catch up and acquire the knowledge to be decent at this. If only there were someone to ask!

Nine times out of ten, I’ll eventually stumble on the correct answer and the victory is that much sweeter. But most of my struggles are small enough to an experienced developer that having someone to ask questions would have accelerated my learning dramatically.

Ultimately, “shut up and code” is a great (and sometimes the only) way to brute-force through problems. But for many, having someone (preferably multiple someones) around to ask can make the difference between giving up and seeing it through.

Be that someone. Be the one to welcome new programmers (and entice non-programmers) to the joys of coding. Join a local Users Group. Jump into online discussions. Put a note on your website that you’re happy to take questions, even if you can’t answer them all.

You’ll enrich the lives of others, because programming, as you know, is an incredibly rewarding creative pursuit, and having more people at the party is good for everyone.

Who knows… maybe that new developer will wander into Hollywood and help make a movie that doesn’t portray programming in a completely ridiculous fashion. And in the end, isn’t that all programmers are asking for?