Business Week has an interesting article about Apple’s design process. Apple is one of the companies that inspire us, so it was interesting to learn that our processes are not that different from what Apple’s. That’s why I decided to write about how we develop software at Zenfolio.
We believe in agile development. We are strong supporters of the principles described in the “Getting real” book by 37Signals. Some of these principles are: build less, stay lean, hire the right customers, interface first, and more. (By the way, the book can be read online for free, and I strongly recommend it to anyone as it has applications outside of software development.)
By now, we’ve settled into a predictable 2-month release rhythm – every 2 months we have something new to show to our customers. Why 2 months? It just works. Two months is short enough to keep the service exciting, react quickly to feedback from customers, and adapt to changes in the marketplace or technology. At the same time it is long enough to deliver meaningful “chunky” features and enhancements, while keeping the service stable by spending enough time testing new functionality.
For the benefit of the readers who may not be familiar with the software development process, I ‘d like to explain the concept of “regression” testing. Every change, no matter how small, introduces a risk of breaking something in the existing functionality, also called regression. Please re-read the previous sentence again. This is one of the most crucial axioms of software development. The consequence of this fact is that as the service becomes more complex, we have to go back and re-test everything after making changes to the existing features or adding new functionality, no matter how small the change. That’s why 2 months is not such a long time. It includes time to develop new features, fix bugs and address design issues, then test, test, and test again. So far, we have been lucky enough not to let any major bugs out. We hope to keep it that way.
In reality, the life of a feature starts long before the official clock starts the 2-month countdown. Prior to coding every feature goes through the design and planning stages. While the topic of feature selection and design deserves a separate post, I will refer back to the article about Apple’s approach. Same as Apple’s fellows, we allow ourselves to dream. We imagine how a feature would work if there are no technical restrictions, we ask ourselves “what is the ultimate customer experience”? Then, for each feature we produce numerous mockups, diagrams, flows, which go through multiple product and development team review cycles. It is not uncommon for us to go through 7-10 iterations before we settle on a concept, which is then refined to a “pixel-perfect” mockup. Most discussions happen around visual representation of features in a form of “cognitive walkthroughs” where we play with paper mockups while trying to envision how a feature will behave when implemented.
The Requests for New Features forum is a good indication of how long our pending feature list is. Not only is it long, but it is also a living, breathing organism, which is feeding and thriving on customer feedback. It will never get shorter. Even if Zenfolio grows to the size of Adobe or Microsoft the feature list monster will still outgrow it by large, thanks to the creative genius of our customers. The list will wiggle its long tail and scream at us to continue adding more and more features. That’s why we have to constantly prioritize and maintain a very strict discipline about what goes into each release. Stepping back and looking at the big picture is our way of achieving clarity when deciding on priorities. For example, from day one, Zenfolio’s goal has been to be a stable, fast, and secure service, so any work needed to make this happen will automatically take over other features.
To sum it up: we try to move fast, we adjust based on customer feedback and changing environment, we put design first, and we are staying focused. In my future posts I hope to dive deeper on some of the aspects of software development at Zenfolio.