Writing High Quality Code
This ninety-minute free webinar (with an optional thirty minutes at the end for Q&A) will help you quantify software qualities. Quality in delivered software is intangible and very different from quality in physical goods. Some external attributes of quality software—free from defects and easy to maintain—are reflections of the code’s internal qualities. When classes and methods are cohesive, non-redundant, well-encapsulated, assertive, and explicitly coupled, they are less prone to mistakes and far easier to debug, test, and maintain. David Bernstein asserts that paying attention to code quality helps us focus on the key principles, patterns, and practices used by expert developers. If you don’t pay attention to critical code quality attributes, iterative development practices can quickly degrade code into a maintenance nightmare. Join me and take a deep dive into the code qualities that make software more maintainable and less bug friendly. Create software that not only provides value now but also is easy to change and extend so it can continue to deliver value far into the future.
Attending this webinar will show you how to create higher quality software that will enable you to:
- Employ techniques that reduce defects.
- Quickly implement effective design alternatives.
- Collaborate more smoothly with other team members.
- See how testability directly reflects software quality.
- Establish standards and practices for building software.
- Avoid upfront overdesign and build just-in-time.
- Support an iterative process without excessive rework.
- Support collaborative code ownership and embrace a common aesthetic.
Who Should Attend
This training is for all team members, and will benefit architects; designers and developers; development and product managers; software engineers/programmers; testers and QA engineers; and technical analysts, leads, and writers. Familiarity with basic Object-Oriented (OO) concepts and terminology is recommended.
- What is Quality?—Quality in Goods and Services; Software Quality is Different; Correctness Isn’t Enough; Maintainability; Change Happens; Dealing with Change; Changeable Code; Code Pathologies; Larger Projects are Harder; Quality in Software; Six Specific Code Qualities.
- Cohesive—What is Cohesion? Language and Software; Class Cohesion; Method Cohesion; Pathologies of Poor Cohesion.
- Non-Redundant—Finding Redundancy; Type is Redundancies; Can Non-Identical Code be Redundant? Can Identical Code be Non-Redundant? Redundant Intent; Code Investment or Code Debt; Pathologies of Redundancy.
- Encapsulated—What Can Be Encapsulated? What You don’t Know Can’t Hurt You; Encapsulate by Policy; Optimizing for Performance; Can You Encapsulate it? Many Ways to Encapsulate; Pathologies of Poor Encapsulation.
- Assertive—Being Assertive; Assertive or Inquisitive; Prefer Assertiveness; Pathologies of Inquisitiveness.
- Testable—Code Must Be Testable; Testability Guiding Design; Pathologies of Poor Testability.
- Explicit—What are Explicit Relationships? Good Coupling and Bad Coupling; Kinds of Coupling; Coupling Example; Pathologies of Bad Coupling.
- Conclusion—The Six Code Qualities; CREATE Quality Software; Code Qualities Guide Us; Thank You!
Your Instructor, David Bernstein
My continuing passion for software design and construction has led me to train more than 8,000 developers since 1990 for clients that have included Microsoft, IBM, Yahoo, Boeing, AT&T, Sprint, Medtronic, SunGard, State Farm, MetLife and Weyerhaeuser. As a longtime IBM consultant, I trained software engineers around the globe, giving them the skills to write the next generation of applications and operating system software while earning one of the highest satisfaction ratings in the history of IBM education. Since 2006, I’ve devoted my consulting practice to providing organizations with training and coaching for software developers and teams transitioning to Agile and Scrum.
View a pdf version of this webinar description.