By Manish, Practice Leader – Quality Assurance
If you’ve been in business for any time at all, you’ve heard people talk about “exceeding customer expectations” as the benchmark for measuring whether or not a quality job has been done. And it’s a great feeling when you work for an organization like Coda that consistently hits that “beyond expectations” goal. In our case, we have developed a precise process that helps us regularly accelerate application delivery while continuing to meet very stringent quality assurance requirements.
Quality work – whether that’s in DevOps or any other endeavor – boils down to a matter of determination. One of the things that sets us apart is that every member of our team – from business analysis to development, operations and project management – is determined to do something great every day. The key word in that sentence isn’t “great” or “determined,” though they are important. The key word is actually “team” because quality is a shared responsibility.
Five Processes that Ensure Quality Work
We’ve learned over the years that there is an actual formula for success that ensures that a measurable standard of quality will be achieved in each project or every customer. It starts with teamwork and recognizing the value of having someone act as a gatekeeper, but it also includes knowing the customer well, placing a premium on user experience, testing and more testing, and never – ever – taking security for granted.
- Embrace the gatekeepers: Each team – and in fact, each individual member of each team – that is involved in developing and delivering an application is fully engaged and connected to the project, and we are all working toward the same goals in unison. That’s a lot harder than it sounds, and that’s where quality assurance (QA) becomes the critical component that differentiates what we do from what others like us do. Despite the different forms “quality” takes across various teams, it includes the implementation of processes, practices, and approaches, and it has to be recognizable, definable and measurable. Our QA team works hand-in-hand with each of the other teams involved in every project serving as the gatekeeper of the code from the beginning of a project all the way through production. People often think of QA people as gatekeepers, and that sometimes has a negative connotation. In our world, we recognize that gatekeepers have an important job and we embrace them knowing that our success as a company depends on their success in keeping everyone on the team focused on the goal.
- Actually put on the customer’s hat. Everyone says they “know their customers.” But simply knowing what the customer wants to build is not enough. To deliver real quality, you have to understand the client’s vision, align your design with their thoughts and how their business ticks. When doing our homework, we don’t just examine what the customer’s business does. We learn about their competitors and their market so we can place ourselves in their shoes as we help them develop the applications they need to effect real business change. If we can actually put on the customer’s hat, we can assess the ideas that the application teams come up with, question those ideas, and have a very frank discussion with the team taking into consideration the variables in technology, infrastructure and the outcome that will evolve. A great example is a dental-care application we built that included some very complex functions. What helped us transform the customer’s application dream into their dream application was the ability of our business analysis and quality assurance teams to act as the hard-to-convince critics on the customer’s behalf. Because we understood their business inside and out, we were able to put on their hat and push the application’s quality beyond the expected benchmark, and the result was a more-than-satisfied customer.
- Play hardball with UX. There’s a whole branch of science – some call it “human factors” – that has only recently been truly appreciated by universities and employers alike for its important role in developing the right interface between man and machines. We know that user experience (UX) absolutely must be a priority in anything we develop. No two applications and their end-user personas are the same, and that implies that no single design principle can suit the needs of all applications. In other words, tailored design strategies are required to drive application-specific user experiences. One factor which never fails to influence our designers’ perspective is the rapid evolution in the methodology behind the human-application interaction. And it is also important to understand that something that works is always valued by the customer more than something that is simply cutting edge. People love and are excited by new, innovative technologies, but we have to strike the right balance with a focus on user experience. At Coda, we’ve done that time and again in very unique ways. As just one example, we built the world’s first intelligent real estate personal assistant called “Ask DOSS” by tapping IBM Watson as its powerhouse. The application has a very simplistic design with easy access to the program’s intelligent features like voice-search while optimized page loading times keep users engaged. User experience, clearly, was the goal, while innovative technology was the program’s backbone. With the right balance, we created something unique, exciting and … useful.
- Test, test and test again. To adapt to a shortened development lifecycle and ship applications at what often feels like lightning speed, our development teams have embraced automation to enable continuous innovation and continuous delivery across the application delivery pipeline. With things moving so quickly, however, there is always the risk of defect slippage. To ensure the quality of our projects as well as the speed with which we deliver the, continuous testing – an ongoing series of activities designed to reveal defects in the delivery pipeline at the earliest possible stage of integration – becomes a critically important component. To keep the momentum going, we leverage automated tests to contribute to smoke, regression performance and security testing with every application build.
- Build a hacker-proof ecosystem. No discussion about quality assurance would be complete without addressing security issues – and it’s important not to underestimate what smart hackers can do. Cybercriminals continually find new ways to intrude their victims’ privacy and access their most sensitive data. We take security very seriously here. Our security team works closely with our solution architects to uncover any loopholes that might pose a security risk. As a quality assurance measure, we tap OWASP, SANS 25 and CAPEC to regularly update our security terms. Of course, we keep an eye on what is happening in the security space and learn from others, as well, and we take preventive measures that leverage automated vulnerability scans to identify issues that need expert attention.
Want to learn more? Just as you need a blueprint when designing a new building, you need a plan for how you want to expand your business using new technologies. Find out how to get your dream application off to the RightStart in thisblog, then read about the role of tech-focused brainstorming in shortening AppDev timelines. Learn why automation is the “secret sauce” in successful applications and why we’ve re-named managed cloud services “continuous innovation.”