Food. Everyone can relate to food. What is the recipe that you know the best? Is it the key lime pie you bring to the 4th of July party every year? Is it the chicken and “special sauce” you make when you invite someone close to dinner?
The recipe I know best is my grandma’s turkey stew. The recipe goes something like this: my cousins and I clear Thanksgiving dinner from the table, any leftover turkey meat is shredded and added to an already stewing pot of buttery, brothy goodness. The heating of the broth blends and balances the strong flavor of caramelized onions, the sharpness of chopped celery and the tenderness of the cubed potatoes. After a couple of hours on the stove, the stew is cooled and Grandma excitedly serves her grandchildren.
Building great software is, in many ways, like executing a great recipe. It takes the right ingredients, preparation, and time to make something worth sharing. Without any one of these components, the results are not the same. The recipe is not complete.
The right ingredients
At Centro, we’ve found the first step to making great software is sourcing the right ingredients. On our software development team, the ingredients are the people. We begin by putting together strong cross-functional leadership teams comprised of members from our Engineering, Product, Design, QA and Program Management disciplines.
Once these teams have been established, the development process starts with a Product Manager (PM). She should be passionate and possess excellent communication skills as she is the one to take responsibility for communicating product vision. Then, we mix in a Business Analyst (BA) whose agility and attention to detail allows him to quickly and accurately work through user sessions and document requirements.
Next, we stir in some UX and UI partners as their terrific eye for design, domain expertise and empathy for end-users ensures that our customers can easily perform tasks in the application.
Simultaneously, we work with our Engineering leads to determine the feasibility of what we want to build and, most importantly, how we’re going to make it happen. With their zest for understanding the absolutely critical details of our system, our engineers architect the solutions that help us realize our product vision. Simply put, their work lies at the heart of our software development process.
We then bind the mixture with QA engineers who are responsible for the integrity and robustness of our system. They are the final checkpoint before we ship to production.
Last, but not least, we sprinkle in a resilient Project Manager. Her ability to block and tackle keeps us on track and focused on delivery. She unites the team while also setting realistic expectations with stakeholders, making her the perfect person to inspire the team.
Each ingredient is quite good on its own, but when baked together…magic happens.
The second component of building great software is preparation. Any good cook knows that when ingredients have been prepped ahead of time, everything coming next becomes infinitely easier. Here’s how I would recommend prepping your team for feature-work:
In order to establish a thorough understanding of the problem that the software needs to solve, consider setting up cross-functional team meetings led by the PM. These regular meetings will keep all team members communicating throughout the software development process.
To add color to the development and design process, the BA should continue analysis with users and begin documentation of user stories. While the BA continually betters his understanding of the problem and iterates on the requirements, he should pair with design and development, helping to strategize as the implementation plan manifests.
To prevent any wreckage from occurring in the application, as the implementation strategy becomes finalized, Test Engineers who have been simmering in the background should come into full focus as they layer in Acceptance Tests as well as other testing strategies to allow for a seamless integration of the new feature with the rest of the application.
Once the team has been fully prepped and the story is ready, the Project Manager should consider a timeline to plan the work and get it on the iteration schedule!
With all the advanced preparation mentioned above, the implementation phase will be vastly simplified and new discoveries shouldn’t completely throw off original estimations from development.
Let it simmer
Finally, there is no replacement for time. Time allows ideas to simmer, learning to take place, and iterative improvement to be demonstrated. At Centro, we understand that time is limited and so we spend it wisely, as if it were money.
We also understand that software development, like cooking, is an art as much as it is a science. Sometimes the only way to arrive at the right solution is just let things simmer for a minute longer. While I am a huge proponent of delivering work on time, I am an even bigger proponent of delivering the right work on time.
When time is the component that makes the difference between something good and something great, I always choose something great.