Scott Meyers: Better Software — No Matter What

Spread the love

Some development practices improve software quality, regardless of the domain of the application, the language in which it’s written, the platform on which it runs, or the users it is intended to serve. This seminar explores fundamental principles, practices, and standards that improve software quality, no matter what the software does, how it does it, or whom it does it for.

Unlike most treatments of software quality, this seminar focuses on the critical role that programmers play, and it discusses specific strategies applicable to their activities.

Course Highlights

Participants will gain:

An understanding of why programmer discretion plays a key role in determining software quality.
Knowledge of specific practices that help improve the quality of any software effort.
Insights into the quality-related interactions of specifications, programming, and testing.
Who Should Attend

The primary audience for this seminar is the people responsible for the code: programmers, team leads, and development managers. The information is also well-suited for professionals who work with such people (e.g., QA personnel) or who are interested in improving their organization’s software development process.


Lecture and question/answer. There are no hands-on exercises.


One full day (six to seven lecture hours).

Detailed Topic Outline

The crucial role of programmers in software quality.
How quality improvement practices reduce development costs.
Requiring and enforcing useful specifications:
What is a useful specification?
Design by contract
Designing Interfaces that are easy to use correctly, hard to use incorrectly:
Applies to both APIs and UIs
The principle of least astonishment
Choosing good names
Designing “nice” classes
The importance of consistency
Employing progressive disclosure
Preventing resource leaks
Documenting interfaces before implementing them
Introducing new types
Constraining available values
Embracing static analysis:
Compiler warnings
Lint and similar utilities
Custom parsers and analyses
Code reviews and inspections
The keyhole problem:
What it is, how it manifests itself
Why it matters
How it can be avoided
Minimizing duplication:
Why duplication is bad
Source code duplication vs. object code duplication
Preventing source code duplication
Preventing object code duplication
Beyond code duplication
Embracing Automated Unit Testing:
Unit tests
What to test
Encapsulation issues
Concurrency issues
Test-Driven Development:
What it is
How to do it
Why it’s useful
How it relates to conventional post-development testing
What they are
Their beneifts, both technical and social
When to hold them; who should participate
The importance of safety
Kick-off retrospectives
Why the material in this seminar applies to you, no matter how special your circumstances.
Sources for Additional Information

Likes: 5

Viewed: 1176