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?
November 3, 2009 at 2:15 am
Low paid / intern style positions are common in the videogame industry, borrowing I suppose from the greater “entertainment industry”; too many people competing for not enough jobs. Much more common in the non-engineering positions, though.
November 3, 2009 at 11:40 am
Internships are extremely common in almost all post-secondary programs that I’m aware of. I think most are paid these days (at least Canadian co-op positions are). I think that sort of real-world experience as part of the educational process is extremely valuable and serves this role.
I think that a week-long pair-programming session for a clearly defined task would be of value to new programmers. In most projects there tends to be some pretty standard rote component work that needs to be done that would be a good candidate for this sort of work. The challenge is finding tasks that are small enough in time.
Cooking a great meal is a complicated process, but over the course of a night in the kitchen you’re working on several dozen dishes. And in general for most restaurants, preparing a dish is a very specific processes to follow with a measurable outcome. Either meat is cooked medium rare or it isn’t. Programming isn’t any more complicated than cooking (and in many cases I’d say it’s far more simple) but it takes a lot longer so a short-term session like that may not have as much value as a standard 4-month style internship would.
November 3, 2009 at 12:13 pm
Personally I would love to spend a week or two in a different dev shop seeing how they run the ship. But, I’m not sure how much the average dev would be able to contribute in a short amount of time. And I’m not sure how much time the average dev shop would be willing to invest in showing an outside dev the ropes with no real return on that investment. I know that I would be hard pressed to spend enough time with someone, whether I wanted to or not.
November 3, 2009 at 2:49 pm
I wonder if a developer-appropriate analog might not be week-long programmer exchanges. If there’s a development company that yours is close to – be it an official partnership or maybe you play softball against each other or whatnot – maybe you could each send an emissary or two to the other for a week to trade that experience a bit.
November 3, 2009 at 4:08 pm
Perhaps things are changing, but it sure seems to me like a good up-and-coming programmer will either start their own company, or develop an open source package, rather than work for someone else for free.
The other side of this is that I’m not terribly sure how much industry has to teach right now. The state of “software engineering”, so far as I can tell, has moved backwards since I entered the field. Maybe I’m just cynical because I’m working with the deep bowels of Windows today, but in the past several years any time I’ve worked with someone who’s way enthusiastic and up on the latest software engineering fads, they’ve ended up being more of an impediment to shipping.
I also think that since prepared food is largely theater, and margins depend on selling a myth to the customer, that the traditions are more important than places where function has higher precedence.
November 3, 2009 at 5:01 pm
Dan, I think you are right. Open Source is probably the equivalent to what Rafe is talking about.
When I read Rafe’s idea I immediately thought of pair programming, which is nice the times I’ve done it…but it gets old kinda fast. Short doses are good 🙂
November 3, 2009 at 5:32 pm
Conferences of various sizes (I like the much smaller ones – but not as much as I like staying home…) are pretty much the same thing. You share something about how you do things, you hope for some feedback, the audience hopefully learns something too.
November 4, 2009 at 12:30 pm
Jeff, yeah, pair programming can work well for really conceptually difficult stuff, but for the day-in day-out code just seems to get in the way. I do wish I could have a little more code review than my current situation gives me, which can give much of what pair programming offers.
Although it took one incident nearly 20 years ago where the person looking at a memory manager said “I don’t quite understand that line, but I’ll trust you do” to convince me that we have to be brutal about making sure our audience understands it and not taking the easy way out: Sure enough, that was an edge case that was wrong. On the good side, we found a ton of other bugs because we were convinced that the memory manager was bug-free…
Jacob, I’d love more small conferences! And I don’t go to nearly enough of them, even though I’m in the Bay Area and should just do day trips.
November 6, 2009 at 6:18 pm
http://www.oraclenerd.com/2009/10/free-oracle-developerdba.html
Funny, I’m trying this now.
Complete with an ad on craigslist!
I’ve got nothing so far, but I’m still willing to try.