As I fly to IT Forum in Las Vegas, I am reading with interest the latest copy of Wired Magazine. Within the normal collection of interesting geek-fest, I stumbled upon a story about Pixar.
It appears that making films is a bit like software projects. They tend to be late, cost too much money, and the value of the project is hard to determine. There is one picture company that does not follow this trend. Since their inception, Pixar has gone against the Hollywood Norm, delivering nine films and nine massive hits. Wouldn’t it be great for application development professionals to be as successful, delivering fantastic projects that are both successful and of high value? So what can application development professionals learn from Pixar?
Pixar have built a fantastic company with great people working on very creative and imaginative projects. But four things stand out as things app dev pros can learn from:
- Using teams instead of assembling a cast of freelancers. The normal studio model is a project-based one, with teams of freelancers being assembled to create a film and who are then cut loose after the project. Pixar creates teams of people and then moves them from project to project. This approach has many benefits, but Pixar highlights trust as the most important one, with teams of writers, directors, animators, and technicians knowing each other’s strengths and weaknesses and working effectively in a trust-oriented environment.
- From trust comes critique. Each day teams review the work, ensuring that mistakes are highlighted and that “perfection” is pursued. This would be impossible if the team did not trust each other and is very different from traditional projects where teams spend a great deal of time ensuring that any criticism is not placed on them. This aspect of review and change is highlighted by Lee Unkrich, director of Toy Story 3, “We know screwups are an essential part of making something good. That’s why our goal is to screw up as fast as possible.”
- Great people are given the environment to create. Freedom to create is a fundamental maxim for Pixar. They allow animators to create their own workspaces that demonstrate their creativity and individuality. They place everyone in the same location and build an environment that encourages people to interact. Steve Jobs can be in part credited with that, insisting that the building’s essential facilities be centrally located.
- Release management is a separate function. Teams left to their own devices would continue to develop, extend, and improve the finished product forever. That is part of their DNA and their pursuit for perfection. But effectively managing the balance between development and release is managed by providing a release team who, working with the development team, defines the production time line. That makes sure that development teams are very careful about the prioritization of work, ensuring they keep focused on the things that are important.
Taking these ideas and applying to development:
- Building teams. The reality of most delivery organizations does not enable teams to only focus on one project, but these cross-project responsibilities should be kept to a minimum, allowing teams to work together for a long period of time – building trust and working practices.
- Frequent delivery and inspection. Not just in the case of Agile approaches, where code is delivered frequently, but also with traditional approaches, work products should be delivered frequently and reviewed. Change should be encouraged rather than considered to be an insult to the person who created the deliverable.
- Consider the working environment. Co-location is an ideal environment but often is not practical or possible. But the virtual or physical environment should be considered, allowing team members to have both space and collaborative areas. Wikis and team notice boards should be used to enable collaboration.
- Keep release processes separate. It is easy to mix development with release, but the cycles and practices are very different. Thus it is important to build a “two-in-a-box model,” allowing development teams to focus on delivering value and the release manager to focus on the delivery schedule and date. By having the teams frequently collaborate and manage the balance, it is possible to optimize the final deliverable.
Jeffrey Hammond and I are working what it means to build a world-class development team. We would love to hear your views…
Please contribute to the “building world-class development teams” thread…
Dave “the Woody” of software development…