SEEKING HOLISTIC SOFTWARE QUALITY
2020-02-27 254浏览
- 1.SEEKING HOLISTIC SOFTWARE QUALITY What Comes After SOLID?
- 2.
- 3.TRANSLATING “HAVE TO” TO “CHOOSE TO”
- 4.I CHOOSE TO __________ BECAUSE I WANT _________
- 5.I CHOOSE TO ✍👍💻 BECAUSE I WANT _________
- 6.I CHOOSE TO ✍👍💻 BECAUSE I WANT ???????????
- 7.WHY DO WE CARE ABOUT WRITING GOOD CODE?
- 8.IS GOOD CODE THE SAME AS QUALITY SOFTWARE?
- 9.(WE’LL GET BACK TO THAT…)
- 10.ACCORDING TO DAVE THOMAS, ROBERT MARTIN, ANDOTHERS:“AGILE” IS BROKEN
- 11.AT THAT 2001 MEETING IN SNOWBIRD WHERE WE WROTE THE AGILE MANIFESTO, KENT BECK STATED ONE OF OURGOALS:"..TO HEAL THE DIVIDE BETWEEN DEVELOPMENT AND BUSINESS." Robert C. Martinhttps://8thlight.com/blog/uncle-bob/2014/03/28/The-Corruption-of-Agile.html
- 12.THE GRIMREALITY:IT DIDN’T WORK
- 13.“AGILE” HAS BECOME SOMETHING DEVELOPERS DO TO KEEP BUSINESSPEOPLE HAPPY
- 14.
- 15.WE DON’T NEED MORE PROCESSES. WE DO NEED MORE TRUST.
- 16.WE CAN SOLVE THIS IF WE LEARN TO COMMUNICATE
- 17.OUR GOAL TODAY IS AMBITIOUS CREATE A COMMON LANGUAGE FOR DEVELOPERS AND BUSINESSPEOPLE
- 18.WE’LL ACHIEVE IT BY FIGURING OUT WHY WE WRITE GOOD CODE
- 19.WHY WRITE CODE? LIKE, EVER? I’M NOT KIDDING.
- 20.CONTROVERSIAL STATEMENT #1 YOUR JOB ISN’T TO WRITE CODE. YOUR JOB IS TO SOLVE PROBLEMS.
- 21.BUSINESS TRANSLATION YOUR JOB ISN’T TO WRITE CODE. YOUR JOB IS TO CREATE VALUE.
- 22.CREATING VALUE VALUE CREATION ALWAYS MEANS 1 OF 3THINGS:▸ Generating Revenue ▸ Lowering Costs ▸ Reducing Risk
- 23.WHY WRITE CODE? TO CREATE VALUE. THAT’S IT.
- 24.WHY DO WE CARE ABOUT WRITING GOOD CODE?
- 25.GOOD CODE USUALLY HELPS TO CREATE VALUE.
- 26.IS GOOD CODE THE SAME AS QUALITY SOFTWARE?
- 27.NOPE.
- 28.CONTROVERSIAL STATEMENT #2 SOFTWARE QUALITY IS BEST DEFINED AS THE AMOUNT OF VALUE IT CREATES.
- 29.HOW CAN WE TARGET EFFORTS TO MAXIMIZE VALUE CREATION?
- 30.HOW CAN WE RELATE GOOD CODE TO VALUE CREATION?
- 31.THE FRAMEWORK SOFTWARE QUALITY CAN BE DISTILLED INTO 3FACTORS:▸ Usefulness ▸ Sustainability ▸ Accuracy
- 32.THE FRAMEWORK USEFULNESS ▸ The Question ▸ Does it solve a problem effectively? ▸ The Target ▸ Users ▸ Is this a problem that affects users? ▸ Does the product solve their problem? ▸ In a way that works for them?
- 33.THE FRAMEWORK SUSTAINABILITY ▸ The Question ▸ Can we keep building without unnecessary obstacles? ▸ The Targets ▸ Software ▸ Is it resistant to change? ▸ Will we understand what it does later? ▸ Does the architecture resist new functionality? ▸ The Development Team ▸ Is the Team unstable in a way that will prevent future progress?
- 34.THE FRAMEWORK ACCURACY ▸ The Question ▸ Does it work the way we think it does? ▸ The Target ▸ Ourselves ▸ Have we developed understanding of the problem? ▸ Have we developed understanding of the code? ▸ Is there cognitive overload preventing understanding? ▸ Are we confident that the code reflects our current understanding?
- 35.I CHOOSE TO WRITE GOOD CODE BECAUSE I WANT U.S.A. SOFTWARE
- 36.Usefulness Business Analysts Product Designers UX WHAT THEWE TRADITIONAL ACTUALLY MODEL NEED Sustainability Developers Accuracy Developers
- 37.WHAT WE ACTUALLY NEED Usefulness Business Analysts Product Designers UX Developers Accuracy Developers Sustainability Developers
- 38.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 39.IS IT QUALITY SOFTWARE? CLASSIFYING SOLID ▸ Single Responsibility Principle ▸ Every element of a system should do one thing well ▸ Open/Closed Principle ▸ Possible to add new features without modifying existing code ▸ Liskov Substitution Principle ▸ Subclasses should fully implement their superclasses ▸ Interface Segregation Principle ▸ Limit the surface area of objects’ dependencies on other objects ▸ Dependency Inversion Principle ▸ Depend on abstractions, not concretions
- 40.IS IT QUALITY SOFTWARE? CLASSIFYING SOLID Usefulness Accuracy Sustainability Single Responsibility ✅ ✅ ✅ Open/Closed ❌ ❌ ✅ Liskov Substitution ❌ ✅ ✅ Interface Segregation ❌ ❌ ✅ Dependency Inversion ❌ ❌ ✅
- 41.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? SRP LISKOV SUBSTITUTION DEPENDENCY INVERSION CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 42.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? SRP LISKOV SUBSTITUTION DEPENDENCY INVERSION CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 43.IS IT QUALITY SOFTWARE? SANDI METZ’S TRUE PRINCIPLES ▸ Transparent ▸ Consequences of changing code should be obvious ▸ Reasonable ▸ Cost of change should be proportional to its benefits ▸ Usable ▸ Existing code should be usable in new and unexpected contexts ▸ Exemplary ▸ Code should encourage future coders to perpetuate good qualities
- 44.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? OPEN/CLOSED PRINCIPLE INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? TRANSPARENT DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? SRP DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 45.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? OPEN/CLOSED PRINCIPLE INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? TRANSPARENT DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? SRP DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 46.IS IT QUALITY SOFTWARE? TESTING ▸ Testing at all ▸ Code Coverage ▸ Types of tests ▸ Unit ▸ Integration ▸ Manual QA ▸ Test-Driven Development ▸ Behavior-Driven Development
- 47.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? OPEN/CLOSED PRINCIPLE INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? UNIT TESTS TESTING SRP COVERAGE DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 48.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? OPEN/CLOSED PRINCIPLE INTERFACE SEGREGATION IS IT QUALITY SOFTWARE? TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? UNIT TESTS TESTING SRP COVERAGE DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 49.IS IT QUALITY SOFTWARE? HOT NEW BUZZWORDS ▸ Functional Programming ▸ Type Systems ▸ Immutability ▸ Scalability
- 50.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD TESTING SRP UNIT TESTS FUNCTIONAL PROGRAMMING ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? IMMUTABILITY COVERAGE DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 51.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD TESTING SRP UNIT TESTS FUNCTIONAL PROGRAMMING ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? IMMUTABILITY COVERAGE DEPENDENCY INVERSION LISKOV SUBSTITUTION REUSABLE EXEMPLARY REASONABLE TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 52.IS IT QUALITY SOFTWARE? COMPLEXITY METRICS ▸ Low Cyclomatic Complexity ▸ Low Connascence
- 53.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD UNIT TESTS TESTING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION REUSABLE LOW CYCLOMATIC COMPLEXITY EXEMPLARY LOW CONNASCENCE REASONABLE FUNCTIONAL PROGRAMMING ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? IMMUTABILITY COVERAGE TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 54.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? INTERFACE SEGREGATION TRANSPARENT BDD MANUAL QA DOES IT WORK FOR OUR USERS AS THEY EXPECT? INTEGRATION TESTS TDD UNIT TESTS TESTING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION REUSABLE LOW CYCLOMATIC COMPLEXITY EXEMPLARY LOW CONNASCENCE REASONABLE FUNCTIONAL PROGRAMMING ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? IMMUTABILITY COVERAGE TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 55.IS IT QUALITY SOFTWARE? TEAM-ORIENTED PRACTICES ▸ Organization Conventions ▸ Style Guide ▸ Bus Factor (doing something about it) ▸ Code Review ▸ Pair/Mob Programming ▸ Internal Documentation (README and other helpful guides) ▸ Debugging Tools ▸ Mentorship
- 56.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY INTERFACE SEGREGATION INTERNAL DOCUMENTATION DEBUGGING TOOLS IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? BDD TRANSPARENT ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? THE WAY WE THINK IT DOES?
- 57.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? OPEN/CLOSED PRINCIPLE SCALABILITY INTERFACE SEGREGATION INTERNAL DOCUMENTATION DEBUGGING TOOLS IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? BDD TRANSPARENT ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? THE WAY WE THINK IT DOES?
- 58.IS IT QUALITY SOFTWARE? MISCELLANEOUS ▸ Continuous Integration ▸ Frequent Releases ▸ Refactoring ▸ Conventional APIs
- 59.USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION CONVENTIONAL INTERNAL DOCUMENTATION APIS DEBUGGING TOOLS TRANSPARENT FREQUENT RELEASES BDD ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 60.USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION CONVENTIONAL INTERNAL DOCUMENTATION APIS DEBUGGING TOOLS TRANSPARENT FREQUENT RELEASES BDD ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 61.WHAT GOES IN THE RED AREA?
- 62.IS IT QUALITY SOFTWARE? USER-ORIENTED THINKING ▸ Focus on Delivering Value ▸ User Research and Collaboration ▸ Prioritization ▸ Discoverability ▸ Empathetic UI ▸ On Time ▸ Performance
- 63.DISCOVERABILITY USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? PRIORITIZATION USER RESEARCH/ COLLABORATION FOCUS ON DELIVERING VALUE ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION ON TIME CONVENTIONAL INTERNAL DOCUMENTATION EMPATHETIC UI APIS DEBUGGING TOOLS TRANSPARENT FREQUENT PERFORMANCE RELEASES BDD ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 64.DISCOVERABILITY USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? PRIORITIZATION USER RESEARCH/ COLLABORATION FOCUS ON DELIVERING VALUE ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION ON TIME CONVENTIONAL INTERNAL DOCUMENTATION EMPATHETIC UI APIS DEBUGGING TOOLS TRANSPARENT FREQUENT PERFORMANCE RELEASES BDD ORGANIZATION CONVENTIONS TESTING MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 65.IS IT QUALITY SOFTWARE? USER-ORIENTED THINKING (TECHNICAL PRODUCTS) ▸ Documentation ▸ Writing Client Code
- 66.DISCOVERABILITY USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? WRITING CLIENT CODE USER RESEARCH/ COLLABORATION PRIORITIZATION FOCUS ON DELIVERING VALUE ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION ON TIME CONVENTIONAL INTERNAL DOCUMENTATION EMPATHETIC UI APIS DEBUGGING TOOLS TRANSPARENT FREQUENT PERFORMANCE RELEASES BDD ORGANIZATION CONVENTIONS TESTING DOCUMENTATION MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 67.DISCOVERABILITY USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? WRITING CLIENT CODE USER RESEARCH/ COLLABORATION PRIORITIZATION FOCUS ON DELIVERING VALUE ARE THERE OBSTACLES TO FUTURE USEFULNESS? OPEN/CLOSED PRINCIPLE SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? SCALABILITY INTERFACE SEGREGATION ON TIME CONVENTIONAL INTERNAL DOCUMENTATION EMPATHETIC UI APIS DEBUGGING TOOLS TRANSPARENT FREQUENT PERFORMANCE RELEASES BDD ORGANIZATION CONVENTIONS TESTING DOCUMENTATION MANUAL QA COVERAGE STYLE GUIDE PAIRING BUS FACTOR REFACTORING CODE REVIEW MOBBING DEPENDENCY INVERSION SRP LISKOV SUBSTITUTION INTEGRATION TESTS REUSABLE DOES IT WORK LOW CYCLOMATIC COMPLEXITY EXEMPLARY FOR OUR USERS AS THEY EXPECT? LOW CONNASCENCE REASONABLE TDD UNIT TESTS MENTORSHIP FUNCTIONAL PROGRAMMING TYPE SYSTEM CAN WE KEEP BUILDING OUR SYSTEM IMMUTABILITY ACCURATE WITHOUT DOES IT WORK BREAKING OUR SYSTEM? CONTINUOUS INTEGRATION THE WAY WE THINK IT DOES?
- 68.IS IT QUALITY SOFTWARE? YOU DECIDE.
- 69.ARE THERE OBSTACLES TO FUTURE USEFULNESS? USEFUL DOES IT SOLVE A REAL PROBLEM EFFECTIVELY? IS IT QUALITY SOFTWARE? SUSTAINABLE CAN WE KEEP BUILDING WITHOUT UNNECESSARY OBSTACLES? DOES IT WORK FOR OUR USERS AS THEY EXPECT? ACCURATE DOES IT WORK THE WAY WE THINK IT DOES? CAN WE KEEP BUILDING OUR SYSTEM WITHOUT BREAKING OUR SYSTEM?
- 70.TRY THE EXERCISE WITH YOURTEAM:AMCAPLAN.NINJA/RAILSCONF2017
- 71.PARTING THOUGHTS
- 72.1. DIFFERENT PROJECTS REQUIRE DIFFERENT BALANCES OF FACTORS
- 73.(SEE KENT BECK’S 3X FRAMEWORK)
- 74.2. I DON’T THINK IT’S BAD TO FOCUS ON GOOD CODE FIRST
- 75.REALIGNING OURSELVES WHY WORK ON “GOOD CODE” FIRST? ▸ More straightforward ▸ Business understanding is a long, fruitful journey ▸ It’s possible to get much better at “Good Code” very quickly ▸ Becomes automatic (minimal long-term cost) ▸ You can’t automate business understanding ▸ Implication ▸ Start out focused on “Good Code” ▸ Over time, focus more on business understanding
- 76.
- 77.WHAT CAN I DO TO BUILD BUSINESS UNDERSTANDING?
- 78.REALIGNING OURSELVES WHAT CAN I DO TO BUILD BUSINESS UNDERSTANDING? ▸ Learnabout:▸ Your users ▸ Your industry ▸ The organization of your organization ▸ Business ideas ▸ Organizational and process theory ▸ Develop empathy skills
- 79.3. OVER TIME, EMPATHY BECOMES EVER MORE IMPORTANT
- 80.WHAT CAN I DO TO BUILD EMPATHY SKILLS?
- 81.REALIGNING OURSELVES WHAT CAN I DO TO BUILD EMPATHY SKILLS? ▸ Read ▸ More on that next slide… ▸ Practice ▸ Cultivate curiosity about others, especially different others ▸ Listen to others ▸ See the humanity in others
- 82.
- 83.DEVEMPATHYBOOK.CLUB
- 84.MAKE YOUR SOFTWARE VALUABLE. MAKE YOURSELF VALUABLE.
- 85.THANK YOU TIME! THANKS TO THESE PEOPLE WHO HAVE TAUGHT ME SO MUCH! ▸ Eugene Westbrook ▸ Robin Curry ▸ Brandon Westcott ▸ Andrew Holz ▸ Topper Bowers ▸ William Bajzek ▸ Yitz Schaffer
- 86.THANK YOU! ARIEL CAPLAN @AMCAPLAN AMCAPLAN.NINJA DEVEMPATHYBOOK.CLUB