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?