Great question! But is quality even important? Is it possible? How do you know if you’ve achieved quality?
I was recently asked a series of questions and decided to create blog posts from the answers.
Everything herein came straight from this horse’s mouth. I didn’t once flex my Google-fu or Bing-kwondo except to determine the best way to spell Bing-kwondo. My goal was to respond to the proposed questions solely with the knowledge I’ve gained from experience over the years. When reading my response, please remember – with passion comes opinion. I value your opinion, even if it is different from mine, as difference breeds understanding and growth.
There is no silver bullet. Quality is often subjective, unnecessary, or even impossible when faced with constraints.
In general, the following bullets, in no particular order, seem to produce the highest quality software regardless of constraints.
- Unit tests, integration tests, and functional tests (all where applicable only)
- Continuous, and strict, integration builds
- Code reviews
- Pair programming
- Continuous personal and professional self-improvement
- Fantastic leadership
- Appropriate communication across all levels of the organization
- Reasonable expectations of developers by management
- A clean, developer-friendly work environment
- Providing developers with the tools they need
- Documented and agreed upon standards and procedures
- A shared vision, values, and goals
- Having the right people on the team
- Flexible, modern infrastructure
- Powerful developer hardware
- Software architecture that encourages quality
- A software development lifecycle that doesn’t get in the way or cause bottlenecks
But, really, even if you checked off all those boxes, how would you know if you created a quality product? I guess that’s the first question to ask — What is quality? If “quality” simply means “running” in your organization, then I suppose even most newbie of developers can succeed.