"Each new employee goes through a rigorous month-long training that focuses on nothing but customer service. They spend 40 hours on the phones helping our customers because regardless of the specific department they were hired for, customer service is the priority. Each holiday season when call volume goes up, everyone in the company pitches in and jumps on the phones because we want to maintain the same level of service no matter how busy it gets."
http://www.zapposinsights.com/blog/item/zappos-insights-anno...
I don't know if it's more important, but I agree with the sentiment that customer service rotations are extremely important. Nothing brings your brilliant head-in-the-clouds engineering ego crashing down to earth like reading an email from a frustrated user who can't figure out how to get (what you thought was) your brilliant product working right.
Obviously the direct output isn't great but the experience is always beneficial.
It's a key part of our 1st day push program: https://codeascraft.com/2012/03/13/making-it-virtually-easy-...
Also it would violate my first rule of engineering which is: "Never build a CMS"
A second answer is building a database-backed CMS to replace editing html for every dumb page on the site would be a boondoggle and not an improvement.
"This is what we do and how we do it" with a non-critical system that's approachable seems to be a great way to set up rotations.
You don't see this in other professions, e.g. I doubt doctors are performing surgery or lawyers are going to court on their first day at a new hospital or firm. I'm just not seeing the value in having someone commit code before they're possibly familiar with the codebase and [unless it's a product they used before getting hired] may be equally unfamiliar with what the product even does.
Having people deploy on their first day is a check on the complexity of the process as much as it is intended to educate new employees.
(n.b. I don't work for Etsy anymore, but I still feel compelled to go to the mat on this thing.)
We do have people push on their first day here at Gridium and I think it's really beneficial. The new engineer sees how we work, and the rest of the team sees that new name in the git logs, on chat, and everywhere else. It sends a strong message that there is a new member of the team who is going to be contributing from now on. It helps to establish cultural norms (everyone makes a big deal out of that first commit which is fun).
I really like the effect it has on our team. Even changing two characters in a string feels like a big deal and that's awesome.
At the places/projects that have these policies, (and whenever possible) software won't (or shouldn't) be rocket surgery.
Rotations are a wonderful idea and, IMO, should be done more regularly.
"Human resources" has come to mean paperwork and discipline, but the real value of the term is much closer to its literal meaning. Developing peoples' innate capability is very important. Any company can compete to hire the "best people", but the really smart companies put that effort into increasing the value of the people that they have. The capacity of the human mind is one of the broadest and most versatile things in the universe, but most of us quickly settle into limiting patterns of thought. Just a few days of seeing things from a new perspective can make all the difference in the world. Etsy's engineering rotations seem like fun, but I think they will pay off in a big way. It's hard to put a number on increasing teamwork and understanding. Programs like this are a great way to maximize that value.
Sure, a non engineer could learn a thing or two about how code works, and an engineer as well on handling support, but I'd be cautious about these sessions leading to a false sense of understanding how things actually work, which might eventually lead to, for example, a support person making wrong assumptions about an issue a customer is having just because he/she paired on the relevant code base.
IMO cross disciplinary 'rotations' should happen naturally, instead of making it explicit on a certain day in the quarter. Engineers should have exposure on a day to day basis on what customers want as well as have exposure to the product and business side of things in the planning stage of a sprint, understanding why a story or task is prioritized the way they are, etc. Same goes for non engineers like product managers or support personnel who often deal with engineers on an ongoing basis, and the sharing of technical knowledge should come naturally with each discussion.