Could we have “stages” for programmers?
9

Could we have “stages” for programmers?

There is a very interesting practice in the restaurant industry, where chefs do unpaid work at a restaurant in hopes of learning (and perhaps in hopes of getting a job there). The term for these placements is stage — pronounced as the French would — “stahge”. Here’s one chef’s account of a stage he’s doing. You can learn a lot more about how a stage works in this three part series by Dean McCord.

It seems stages come in two forms — part time work over a long period of time or a short, full-time unpaid stint in a kitchen. Ultimately the fact that these programs work is a testament to how chefs see each other. Clearly chefs put a very low premium on secrecy — they’re not worried about competitors finding out about next week’s specials. And I think it also depends on the fact that chef skills translate well from one kitchen to another. A chef who has mastered the fundamentals can begin contributing in a new kitchen relatively quickly.

What I’m wondering is whether this kind of approach could work in software development at all. Would you be willing to take on a part time programmer who wanted to learn from how your company develops software? If you were between jobs, would you spend a week or a month working on someone else’s project free of charge in order to learn and potentially get a job? Would you take a week of vacation to work with developers you really admire? Would your boss let you? And finally, do you think you could offer a developer who came in cold to work on your project for a week meaningful work that left them feeling like they gained something from the experience?

Links from July 9th
0

Links from July 9th

Positive deviation
0

Positive deviation

Yesterday I posted a link to Atul Gawande’s commencement address at the University of Chicago Medical School. It’s a must-read on the subject of health insurance, but he makes a point in the middle that I think is worth calling out and discussing on its own.

He discusses a charitable organization that worked to improve childhood nutrition in Vietnam:

They went to villages in trouble and got the villagers to help them identify who among them had the best-nourished children—who among them had demonstrated what Jerry Sternin termed a “positive deviance” from the norm. The villagers then visited those mothers at home to see exactly what they were doing.

Just that was revolutionary. The villagers discovered that there were well-nourished children among them, despite the poverty, and that those children’s mothers were breaking with the locally accepted wisdom in all sorts of ways—feeding their children even when they had diarrhea; giving them several small feedings each day rather than one or two big ones; adding sweet-potato greens to the children’s rice despite its being considered a low-class food. The ideas spread and took hold. The program measured the results and posted them in the villages for all to see. In two years, malnutrition dropped sixty-five to eighty-five per cent in every village the Sternins had been to. Their program proved in fact more effective than outside experts were.

This is an incredibly powerful message for everyone. Observe your peers who are achieving better results than you are and imitate them. If you don’t understand what they’re doing, ask them. It’s a big reason why pair programming can be a good thing. It’s why screencasts are a good way to learn.

The trick is making sure that the people you’re imitating really are positive deviants. In college I had a roommate who was so smart that he could make perfect scores without any studying beyond cramming. Imitating his study habits didn’t serve me well at all.

On practice
0

On practice

Tim O’Reilly posted a transcript of a long email thread among O’Reilly personnel on the subject of practice. It’s a wide ranging discussion on the value of practice and how people learn among people whose job it is to teach (usually through books).

One thing I’ll add is that practice by itself is almost never as effective as it is with a good coach or teammates who can offer useful feedback. I’ve seen programmers who have written huge amounts of code over the years in isolation who progress very little in their overall skills. That’s why even someone like Tiger Woods, who knows as much as anyone in the world about how to play golf, still has a coach. He needs someone who can help him catch problems that would take him a lot longer to notice on his own.

For more on this, I’d recommend Jason Kottke’s posts on deliberate practice. I’ve considered trying to apply the concept of deliberate practice to being a better arena player in World of Warcraft, but frankly I just haven’t been interested enough to put in the effort.

I also found one bit interesting, this point by Kurt Kagle:

Practice is necessary to learn a skill (it takes about a million repetitions, typically around ten years to master any given skill), but I think that we have become so fixated upon this necessity that we have to question if the skills that we are spending so much of our time and resource educating them are ones that they truly need.

If our children are going to live in a world heavily dominated by computer technology, is it worthwhile for us to be practicing skills that we’ll only use a handful of times in our life?

His specific example is mathematical calculations that are easily performed by a computer. I think I’d argue that we need to know them well enough to understand what’s going on behind the scenes in the computer. Why? Leaky abstractions.