Quality Aspect

Read More About Optimizing Software Development

Want to know more about software quality? Try these quality resources:

Foundations of Quality
The pillars of achieving quality in your organization.

Why Quality?
See why quality is essential to your success.

Lucid Quality
An innovative method for creating a culture of quality and nurturing software professionals.

Introspection
Lidor Wyssocky's articles on optimizing software development.

Join our mailing list to be always updated.

My Latest Writings

The Mindset: Lidor Wyssocky's blog on Optimizing Software Development.



Introspection: Lidor Wyssocky's articles on Optimizing Software Development.


Upcoming Book:
The Quality Within

We want our software products to be better. But, we want developers to progress and improve themselves as well. Quality must be reflected in the way developers think, solve problems, design, and write code. These skills require both awareness of internal quality and the extensive knowledge and experience needed to achieve it.

We need a method that helps identify and fix code quality problems as soon as possible, but also teaches developers how to work better and achieve quality to begin with. We need a method that will help us nurture professional software developers.

Read more...

Foundations of Quality



Commitment

Quality requires commitment. Commitment which always pays off. Every development effort, at any stage of the development process, should be Quality Oriented. It is the responsibility of every participant in the development process to implement quality in the scope of her task without relying on someone else to verify it (although such an independent verification is encouraged). Every person taking part in the development process should be committed to creating high-quality software product.

Multi-Level Quality

Quality is multi-leveled. Quality should not be verified only by functional tests. There are other aspects of quality in the software development process such as the quality of the design, and the quality of the source code which affects the overall quality of the product. A product can pass 100% of the functional tests while being written in such a manner that will make it impossible to maintain or extend in the future. You should consider various aspects of quality and promote all of them.

Built-In Quality

Quality cannot be implemented after a development effort is done. Quality should be thought of upfront and during any development activity. Verifying quality all the time will help you catch more defects (functional and non-functional) earlier in the development process. This reduces the cost of fixing them.

Preventing such issues altogether is even more cost effective. You should constantly improve your practices in order to prevent quality issues instead of merely fixing them.

Ongoing Mentoring

Quality cannot be achieved without investing in mentoring your technical staff. Each and every participant in the Development Process must be a professional. It is the responsibility of the organization to provide people with the facilities to achieve this: to constantly improve skills and become a better Developer, Architect, Tester or Manager.

Mentoring is a process - not a one time activity. It should be provided constantly across the organization. It is not exclusively for new employees.

Honest Communication

Without communication between different participants in the development process – quality cannot be achieved. Communication should be also enabled over the time axis. This means that merely oral communication (although necessary) is not sufficient. Every important idea or insight that comes up during development might be also crucial in the future when the original development team (or part of it) is not available.

Communication is meaningless if it is not honest. Communication which is not honest is worthless, and can even cause significant damage.

Honesty is also important when communicating with oneself. If you are not 100% comfortable with the way you designed a piece of the system, or implemented a piece of functionality – do not deceive yourself into accepting it under the plea that it will do just fine.

Ongoing Professional Reviews

Many decisions made during the development process would benefit from an independent review. Analysis, design, project planning, risk management and of course the actual implementation are all tasks based on constant decision making. Hearing a formal second opinion from an independent reviewer could shed a new light on decisions made or the way they were implemented. Therefore, formal independent reviews should be an integral part of any development task.