Crafting quality is as much about culture as it is about process. No amount of process or testing can create a quality product after the fact. In the end, quality has to be designed and built in, from the start, by individual workers. The Japanese automobile manufacturers figured this out decades ago. The S/W development industry learned this about 20 years ago. The software practices and tools to support this notion have been readily available “for free” for a decade. Yet we persist in not take advantage of the tools and practices at our disposal.
There are many books on this subject, but two in particular come to mind.
“How Google Tests Software”, James A. Whittaker; Jason Arbon; Jeff Carollo, Addison-Wesley Professional, 2012. (Other links to information include this InfoQ review and James Whittaker’s blog posts which summarize the main points of the book.
You may not agree with every specific technique and tool in this book, but the culture for creating high quality code at Google is very compelling. The first page of the book states:
Quality is not equal to test. Quality is achieved by putting development and testing into a blender and mixing them until one is indistinguishable from the other“.
Google does not have a Q/A or testing department. They have an organization with the title of “Engineering Productivity”. I like this a lot, because high quality software development shops have been shown to develop products faster and a lower cost than low quality shops. High quality software quality means higher productivity.
“The Clean Coder: A Code of Conduct for Professional Programmers”, Robert Martin, Prentice Hall, 2011. Its also on Google Books
I love this look. In fact, I think it should be required reading for all Software Developers. “Uncle Bob”, as Robert Martin is referred to in the industry, tells you, through stories, how you have to behave and act if you really want to consider yourself a professional software developer.
“Programmers who endure and succeed amidst swirling uncertainty have one thing in common: they all care deeply about the practice of creating software. They treat it as a craft. In this much-anticipated new book, software legend Robert C. Martin explains why programmers should care about their jobs, how organizations can foster the type of environment that allows programmers to succeed, and what it means for individual software developers to truly work as craftsmen. The Clean Coder goes beyond”values and attitudes" to fully document the specific disciplines, techniques, tools, and practices that successful software craftsmen share in common. Throughout his 40-year career at the forefront of movements ranging from agile and extreme programming to object-oriented development, “Uncle Bob” has consistently been a voice of practical common sense and enduring wisdom. He has now written a book that every aspiring and ascending software craftsman can use: to write better software, and to gain greater personal fulfillment in doing so."
Yup that describes it pretty well.
While both these books cover organization structure, communications, teamwork & relationships, process, practices, tools, and techniques… what they have in common is a focus on the culture of code quality. How Google Tests Software comes at the topic from the culture of the organization. The Clean Coder is about the culture of the individual.