quality.htm
Notes on Quality
Cal Newport on Obsessing Over Quality
To make quality work you need to build a taste for great work. To do that you need to imitate great people until you build your style.
You can also watch people doing the work you normally do; what makes it different. What tools they use, how do they think about the work.
You should also think critically about the work and why do some designs work better than others.
What makes for good writing, for good filmatography, or for good coding?
From Google's Developer Productivity Research
Developer productivity can be split into: speed, ease and quality.
Quality can be further split into:
- Process quality
- Code quality
- System quality
- Product quality
Process quality includes having comprehensive and deterministic testing, thorough code revies, organizational consistency and effective planning. Process based metrics can be more predictive of post-release defects than code quality measures.
Code quality includes maintainability, testability, comprehensibility, complexity and readibility. It can be described as how easy it is to understand a code base and add features. Code quality improves sytem quality and gives a higher velocity to developers.
System quality is characterized by reliability, performance and defect rates. It happens as a result of process quality and code quality. It can be seen as a lagging indicator of the former. To track system quality the process and code metrics can be more illuminating than the defect rates or the "relliability" of the system.
Product quality is defined by utility, usability, and reliability. Low code quality can slow engineering velocity and delay product improvements.