Quality Douglas Crockford Yahoo! http://www.crockford.com/codecamp/quality.ppt
The Software Crisis The topic dominated the computer industry trade press for about a decade.
The Software Crisis Over budget Over time Unreliable Requirements not fully met Unmaintainable Failure Insecure (New!)
Software Crisis Year 45 It is old news, so no one talks about it In other news, the Sun will exhaust its supply of Hydrogen
Craft v Engineering
Computer Science has not taught us how to manage software projects
Software Construction In some ways like any other sort of construction. In some ways radically different.
The Nature of Software Software is powerful and malleable That is its blessing That is its curse
Programming is Difficult Software is the most complicated stuff that humans make
Lack of metrics Measure of quality or completeness
Lines of Code Not an indicator of quality Not an effective measure of completeness Estimation is difficult
Programmers are optimists They wouldn't be able to do this work if they were not
Programmers do not understand how they  spend their time They think they mostly are typing programs Mostly they are in meetings or technical conversations Or staring at the screen saying "My God. What have I done?"
Programmers do not understand how they  spend their time Programmers tend to be skeptical of process improvements that might require more keystrokes. First Rule of Optimization: Optimize the process that is taking the most time.
Programming is  a social activity Solo projects are  the exception
Cost of Innovation Doing what has been done before v Doing what has not been done before
Legacy In other industries, the wealth of practice and tradition In software, past accomplishments are considered a liability The age at which programs become legacy is getting younger and younger Some programs become legacy before they are finished
Leaps Software is not governed by Moore's Law Software is governed by Murphy's Law Software leaps tend to come at 20 year intervals, not 2 year intervals Cycle of software generation closely related to cycle of human generation.
Leaps Leaps make it possible to implement projects of greater complexity. Adoption of leaping software technologies tends to be very slow. Controversy. Reluctance.
Leaps Plugboards
Leaps
Leaps Plugboards Symbolic Assembly Language
Leaps Plugboards Symbolic Assembly Language High Level Languages
Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming
Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming Object Oriented Programming
Object Oriented Programming 1967 Simula 1972 Kay begins Smalltalk 1980 Smalltalk released 1985 C++ Programming Language 1995 The Java Programming Language 2004 PHP 5
Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming Object Oriented Programming Distributed Programming
Failed Leaps Artificial Intelligence Fifth Generation Languages Computer Aided Software Engineering Subjective-oriented, etc.
Software does not have enough self awareness  to be afraid of bugs. That's why it works  as well as it does.
Bugs Mr Edison, I was informed, had been up the two previous nights discovering  a bug  in his phonograph. Pall Mall Gazette , 1889-03-11
Grace Hopper's Bug
Snake Oil Silver Bullets
Mythical Man Month (1975) Fredrick Brooks "Adding manpower to a late software project makes it later." Second System Effect Prototyping (software is like waffles) "A project becomes a year late one day at a time."
Literate Programming Donald Knuth Programs are designed to be read. The program  is  the specification and documentation.
Incrementalism
Beta Perpetually unfinished
Winchester House
Winchester House
Winchester House
Application Triad Skill Training and experience Technology Work with technology providers and standards bodies Requirements Better understanding of the impact of requirements determination and crisis
 
Mr Blandings Builds His Dream House (1948) Best movie ever about project management Blandings's problems: Lack of knowledge of technology Poor control over requirements
Feature Cost Development Time Deployment Cost Maintenance Cost (bloat, cruft) Download Time User Confusion/Training Bug Delivery
Code Value A significant fraction of our valuation is the state of our codebase. A low quality codebase is a liability.
Code Quality Microview: Coding Conventions Macroview: Program Architecture
The simplest thing we can do to enhance the value of our codebase is to make our programs readable.
Distinguish Invocations return(value); if(blah) foo (wah) function(){} return value; if (blah) foo(wah) function () {}
Programs are a medium of intentional communication Communicating detailed instructions with the machine Communicating with your development community Communicating with yourself
Good architecture is necessary to give programs enough structure to be able to grow large without collapsing into a puddle of confusion
Changing a correct program into another correct program.
Cruft Software Scar Tissue
Causes of Cruft Premature optimization Inexperience Misread source Feature enhancement Death March
Bloat Software Obesity
Insecurity Marginal security
Good secure programming is good programming.
As cruft accumulates, complexity grows,  progess slows. Eventually, the codebase itself becomes a huge source of friction
Refactoring The process of code refinement. Correction of formatting. Insertion of documentation. Removal of cruft and bloat. Restructuring.
Plant and harvest your crops for six years, but let the land rest  and lie fallow  during the seventh year Exodus 23:10-11
Sometimes the best course is to start over
The Pain of the Crash Loss of a week's work, a day's work, an hour's work, is unbearable.
The illusion of completion "It's in the can."
An experienced team  can cross that ground again very quickly. Focus must be on simplicity to avoid the second system effect.
Have regular code readings. Don’t wait until release to do code reviews. Do team code reading regularly during development. Problems can be discovered early. Good techniques can be shared early. Experienced developers can lead by example. Novice developers learn from the group.
Have regular code readings. Frequent. Helpful. Respectful.
Conclusion Quality First. Quality Last. Readable Code. Code Reading. Invest in the quality of your code base. Invest in your programmers and managers. Quality is the most important feature.

More Related Content

PDF
Professional Software Development, Practices and Ethics
PDF
Codemotion Berlin 2015 recap
PPTX
Common Objections to TDD (and their refutations)
PPTX
Pair Programming - a pratical guide
PPTX
SAD15 - Maintenance
PDF
Software Craftsmanship vs Software Engineering (Lightning Talk)
PDF
Career in Software Development
PPTX
Managing Technical Debt
Professional Software Development, Practices and Ethics
Codemotion Berlin 2015 recap
Common Objections to TDD (and their refutations)
Pair Programming - a pratical guide
SAD15 - Maintenance
Software Craftsmanship vs Software Engineering (Lightning Talk)
Career in Software Development
Managing Technical Debt

What's hot (17)

KEY
The Technical Debt Trap
KEY
Agile and Beyond :: The Technical Debt Trap
PPTX
DDD In Agile
PPT
564 Class Notes July 27, 2010
PDF
Agile Relevance in the age of Continuous Everything ....
PDF
Distributed cat herding
PDF
Continuous Integration for Citizens
PPT
20070921 Uni Softwareengineering
PDF
Continuous Integration for Citizens
PPTX
How to become a software developer
PPTX
Introducing CS students to open source
PPTX
No silver-bullllet-1
PDF
An Ode To Boring Technology
PPS
Smart+Shanghai+2008 09 05
PPS
Smart+Shanghai+2008 09 05
PPTX
No silver bullet essence and accidents of software engineering
PPTX
No silver bullet
The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
DDD In Agile
564 Class Notes July 27, 2010
Agile Relevance in the age of Continuous Everything ....
Distributed cat herding
Continuous Integration for Citizens
20070921 Uni Softwareengineering
Continuous Integration for Citizens
How to become a software developer
Introducing CS students to open source
No silver-bullllet-1
An Ode To Boring Technology
Smart+Shanghai+2008 09 05
Smart+Shanghai+2008 09 05
No silver bullet essence and accidents of software engineering
No silver bullet
Ad

Similar to Quality - Douglas Crockford (20)

PPTX
"Introduction to Software Engineering: concepts, processes, and methodologies."
PPT
Software Development in 21st Century
PDF
Btech chapter jotesjxisnfis sizbsifnssjzbsoxn
PPT
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
PPT
overview introduction to Software Engineering
DOCX
Software engineering unit 1
PDF
No Silver Bullet - Essence and Accident in Software Engineering
PDF
Technical Debt: Do Not Underestimate The Danger
PPT
PDF
Using Technology to Make People More Powerful
PDF
Why Every Developer Should Learn C at Least Once
PDF
How C Language Powers the Core of Operating Systems
PPTX
Defect Tracking Software Project Presentation
PPT
Java And Community Support
PPT
Effective Collaborative Programming3
PPT
01 the big_idea
PDF
Product Vs Craft
DOCX
software engineering.docx
PPTX
SCA in an Agile World | June 2010
PDF
What scrum masters and product owners should know about software quality and ...
"Introduction to Software Engineering: concepts, processes, and methodologies."
Software Development in 21st Century
Btech chapter jotesjxisnfis sizbsifnssjzbsoxn
Sandro Mancuso and David Green: London Software Craftsmanship Community: What...
overview introduction to Software Engineering
Software engineering unit 1
No Silver Bullet - Essence and Accident in Software Engineering
Technical Debt: Do Not Underestimate The Danger
Using Technology to Make People More Powerful
Why Every Developer Should Learn C at Least Once
How C Language Powers the Core of Operating Systems
Defect Tracking Software Project Presentation
Java And Community Support
Effective Collaborative Programming3
01 the big_idea
Product Vs Craft
software engineering.docx
SCA in an Agile World | June 2010
What scrum masters and product owners should know about software quality and ...
Ad

More from Raghavan Mohan (17)

PPTX
Accelerate with BIRT and Actuate11
PPTX
Who is BIRT
PDF
Introduction to BIRT
PDF
Sachin Tendulkar Resume
PDF
Manmohan Singh Resume
PDF
Senator Barrack Obama Resume
PDF
Java, Eclipse, Maven & JSF tutorial
PDF
Java/J2EE CV Guide
PDF
Java/J2EE Companion
PDF
Hibernate, Spring, Eclipse, HSQL Database & Maven tutorial
PDF
Ajax, JSF, Facelets, Eclipse & Maven tutorials
PDF
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
PDF
JSF, Facelets, Spring-JSF & Maven
PDF
Jsf, facelets, spring, hibernate, maven2
PDF
Fast Track to Ajax.
PDF
23617968 digit-fast-track-jan-2009-php
PPT
The JavaScript Programming Language
Accelerate with BIRT and Actuate11
Who is BIRT
Introduction to BIRT
Sachin Tendulkar Resume
Manmohan Singh Resume
Senator Barrack Obama Resume
Java, Eclipse, Maven & JSF tutorial
Java/J2EE CV Guide
Java/J2EE Companion
Hibernate, Spring, Eclipse, HSQL Database & Maven tutorial
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Spring Web Service, Spring JMS, Eclipse & Maven tutorials
JSF, Facelets, Spring-JSF & Maven
Jsf, facelets, spring, hibernate, maven2
Fast Track to Ajax.
23617968 digit-fast-track-jan-2009-php
The JavaScript Programming Language

Recently uploaded (20)

PDF
Ensemble model-based arrhythmia classification with local interpretable model...
PDF
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
Early detection and classification of bone marrow changes in lumbar vertebrae...
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PPTX
Internet of Everything -Basic concepts details
PDF
Auditboard EB SOX Playbook 2023 edition.
PDF
4 layer Arch & Reference Arch of IoT.pdf
PPTX
Build automations faster and more reliably with UiPath ScreenPlay
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PDF
SaaS reusability assessment using machine learning techniques
PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PDF
Human Computer Interaction Miterm Lesson
PDF
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
CEH Module 2 Footprinting CEH V13, concepts
PDF
Introduction to MCP and A2A Protocols: Enabling Agent Communication
PDF
The AI Revolution in Customer Service - 2025
Ensemble model-based arrhythmia classification with local interpretable model...
Aug23rd - Mulesoft Community Workshop - Hyd, India.pdf
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
Early detection and classification of bone marrow changes in lumbar vertebrae...
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
Internet of Everything -Basic concepts details
Auditboard EB SOX Playbook 2023 edition.
4 layer Arch & Reference Arch of IoT.pdf
Build automations faster and more reliably with UiPath ScreenPlay
Basics of Cloud Computing - Cloud Ecosystem
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
SaaS reusability assessment using machine learning techniques
EIS-Webinar-Regulated-Industries-2025-08.pdf
Human Computer Interaction Miterm Lesson
ment.tech-Siri Delay Opens AI Startup Opportunity in 2025.pdf
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
CEH Module 2 Footprinting CEH V13, concepts
Introduction to MCP and A2A Protocols: Enabling Agent Communication
The AI Revolution in Customer Service - 2025

Quality - Douglas Crockford

  • 1. Quality Douglas Crockford Yahoo! http://www.crockford.com/codecamp/quality.ppt
  • 2. The Software Crisis The topic dominated the computer industry trade press for about a decade.
  • 3. The Software Crisis Over budget Over time Unreliable Requirements not fully met Unmaintainable Failure Insecure (New!)
  • 4. Software Crisis Year 45 It is old news, so no one talks about it In other news, the Sun will exhaust its supply of Hydrogen
  • 6. Computer Science has not taught us how to manage software projects
  • 7. Software Construction In some ways like any other sort of construction. In some ways radically different.
  • 8. The Nature of Software Software is powerful and malleable That is its blessing That is its curse
  • 9. Programming is Difficult Software is the most complicated stuff that humans make
  • 10. Lack of metrics Measure of quality or completeness
  • 11. Lines of Code Not an indicator of quality Not an effective measure of completeness Estimation is difficult
  • 12. Programmers are optimists They wouldn't be able to do this work if they were not
  • 13. Programmers do not understand how they spend their time They think they mostly are typing programs Mostly they are in meetings or technical conversations Or staring at the screen saying "My God. What have I done?"
  • 14. Programmers do not understand how they spend their time Programmers tend to be skeptical of process improvements that might require more keystrokes. First Rule of Optimization: Optimize the process that is taking the most time.
  • 15. Programming is a social activity Solo projects are the exception
  • 16. Cost of Innovation Doing what has been done before v Doing what has not been done before
  • 17. Legacy In other industries, the wealth of practice and tradition In software, past accomplishments are considered a liability The age at which programs become legacy is getting younger and younger Some programs become legacy before they are finished
  • 18. Leaps Software is not governed by Moore's Law Software is governed by Murphy's Law Software leaps tend to come at 20 year intervals, not 2 year intervals Cycle of software generation closely related to cycle of human generation.
  • 19. Leaps Leaps make it possible to implement projects of greater complexity. Adoption of leaping software technologies tends to be very slow. Controversy. Reluctance.
  • 21. Leaps
  • 22. Leaps Plugboards Symbolic Assembly Language
  • 23. Leaps Plugboards Symbolic Assembly Language High Level Languages
  • 24. Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming
  • 25. Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming Object Oriented Programming
  • 26. Object Oriented Programming 1967 Simula 1972 Kay begins Smalltalk 1980 Smalltalk released 1985 C++ Programming Language 1995 The Java Programming Language 2004 PHP 5
  • 27. Leaps Plugboards Symbolic Assembly Language High Level Languages Structured Programming Object Oriented Programming Distributed Programming
  • 28. Failed Leaps Artificial Intelligence Fifth Generation Languages Computer Aided Software Engineering Subjective-oriented, etc.
  • 29. Software does not have enough self awareness to be afraid of bugs. That's why it works as well as it does.
  • 30. Bugs Mr Edison, I was informed, had been up the two previous nights discovering a bug in his phonograph. Pall Mall Gazette , 1889-03-11
  • 32. Snake Oil Silver Bullets
  • 33. Mythical Man Month (1975) Fredrick Brooks "Adding manpower to a late software project makes it later." Second System Effect Prototyping (software is like waffles) "A project becomes a year late one day at a time."
  • 34. Literate Programming Donald Knuth Programs are designed to be read. The program is the specification and documentation.
  • 40. Application Triad Skill Training and experience Technology Work with technology providers and standards bodies Requirements Better understanding of the impact of requirements determination and crisis
  • 41.  
  • 42. Mr Blandings Builds His Dream House (1948) Best movie ever about project management Blandings's problems: Lack of knowledge of technology Poor control over requirements
  • 43. Feature Cost Development Time Deployment Cost Maintenance Cost (bloat, cruft) Download Time User Confusion/Training Bug Delivery
  • 44. Code Value A significant fraction of our valuation is the state of our codebase. A low quality codebase is a liability.
  • 45. Code Quality Microview: Coding Conventions Macroview: Program Architecture
  • 46. The simplest thing we can do to enhance the value of our codebase is to make our programs readable.
  • 47. Distinguish Invocations return(value); if(blah) foo (wah) function(){} return value; if (blah) foo(wah) function () {}
  • 48. Programs are a medium of intentional communication Communicating detailed instructions with the machine Communicating with your development community Communicating with yourself
  • 49. Good architecture is necessary to give programs enough structure to be able to grow large without collapsing into a puddle of confusion
  • 50. Changing a correct program into another correct program.
  • 52. Causes of Cruft Premature optimization Inexperience Misread source Feature enhancement Death March
  • 55. Good secure programming is good programming.
  • 56. As cruft accumulates, complexity grows, progess slows. Eventually, the codebase itself becomes a huge source of friction
  • 57. Refactoring The process of code refinement. Correction of formatting. Insertion of documentation. Removal of cruft and bloat. Restructuring.
  • 58. Plant and harvest your crops for six years, but let the land rest and lie fallow during the seventh year Exodus 23:10-11
  • 59. Sometimes the best course is to start over
  • 60. The Pain of the Crash Loss of a week's work, a day's work, an hour's work, is unbearable.
  • 61. The illusion of completion "It's in the can."
  • 62. An experienced team can cross that ground again very quickly. Focus must be on simplicity to avoid the second system effect.
  • 63. Have regular code readings. Don’t wait until release to do code reviews. Do team code reading regularly during development. Problems can be discovered early. Good techniques can be shared early. Experienced developers can lead by example. Novice developers learn from the group.
  • 64. Have regular code readings. Frequent. Helpful. Respectful.
  • 65. Conclusion Quality First. Quality Last. Readable Code. Code Reading. Invest in the quality of your code base. Invest in your programmers and managers. Quality is the most important feature.