This post started out as a comment to How do you stay AND grow?, but it got a little lengthy for a comment so I decided to write a post instead.
The original post, was in response to Uncle Bob's Multi-dimensional Seniority. The following is my response to Daniel:
I think the metaphor of apprentice -> journeyman -> craftsman breaks down a bit when we get to talking about the fact that each is "mentored" under only one. While that is true in the skilled trades world (and mostly holds true in the software world as well, as far as technical mentoring), the software world is so much more than technical talent and ability. I'm sure you've read Peopleware, and are familiar with this idea. That being said, getting exposed to lots of different people over various organizations will up your game in the arena of interpersonal relations (I know it has for me). Now, I'm not saying you can't also grow these skills from within a company (I know I certainly did at my previous employer/Daniel's employer, more than I ever knew myself to be capable), but now that I'm with a totally different set of folks, I'm learning totally different skills, which I don't think would've ever happened had I not changed companies. However, I'd be willing to bet with a sufficiently heterogeneous set of technical teams in a given company, you would be able to achieve the same result. Technical teams will not only differ based on their preferred technology stacks, but each stack usually draws a unique set of interpersonal skills as well (e.g. "The Ruby Community is so helpful and nice to noobs like me!" or "The Java Group are a bunch of haters, and are too good to answer silly beginner questions").
To answer the question of
Can a company foster an environment where its developers get exposed to different technologies, development environments, languages, etc. so they don’t have to leave the company to do that?
I like what Google has done to infuse this learning and growing with their 20% time. 20% time is ALOT of time dedicated solely to learning/growing, but I'll bet you spend about that much time now, or at least somewhere between 10 and 20. We also have a program to take classes at work (real homework, real projects - just like school), taught by your colleagues. Almost invariably, the classes are on technologies/languages that we don't currently use in production.
The last question Daniel poses is interesting.
If a company desperately wanted to do whatever it needed to to keep their developers growing without having to leave the company, what would that company need to do?
I doubt you'll find many, if any even, companies whose goal is to do whatever it takes to keep their developers growing and not leaving. As much as I love the idea of software craftsmanship, I can't imagine myself being the owner of a software shop, and having that be my primary goal. Possibly, I suppose, because I have no problem with packing up and leaving when something better comes along. Don't get me wrong, I have company loyalty, but a number of things usurp that (in my book)... have you read Who Moved My Cheese?
Maybe my real question is why do you (read: y'all) need to stay?