Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The QUEST for Better Software

The QUEST for Better Software

There are so many best practices for building software. Do we need to care about all of them equally? Can we agree that Continuous Delivery and DevOps are probably good things? Can we agree that Agile has been mainly a positive influence on the software development community and industry? Do we need TDD and DDD and SOLID and DRY all at the same time? In this talk, Richard will lift the lid on industry best practices and provide a simple formula for keeping them in order by exploring the QUEST way of doing things. This will allow you to get back to a simpler life where you can concentrate on the value of the software itself rather than too much on the process of making it.

Richard Bown

July 28, 2023
Tweet

More Decks by Richard Bown

Other Decks in Programming

Transcript

  1. “It’s the prospect of failure that lights the fi re.

    The cold unamused stare of the audience is a great motivator” Dara O’Briain
  2. 1. Advice: There’s a lot of it 2. Good software

    requires daily attention 3. Building great software is a deeply human activity
  3. Independent Software Consultant • Teams and Individuals • Software Leaders

    (CTOs, CEOs, VPs, Directors, Managers) Likes: • Making sense of complicated advice • Socio-technical systems, Conway’s Law • DevOps, CI/CD, Automation, TDD, DDD • Emergent Architectures Dislikes: • Technical Debt • Poorly tested code • Writing more code than necessary RICHARD BOWN
  4. “If the architecture of the system and the architecture of

    the organization are at odds, the architecture of the organization wins.” Ruth Malan (@visarch) “Any organization that designs a system (de fi ned broadly) will produce a design whose structure is a copy of the organization's communication structure.” Mel Conway, 1967 (@conways_law)
  5. Barbara Liskov - Photo: Kenneth C. Zirkel SOLID Principles -

    Single Responsibility Principle - Open / Closed Principle - Liskov Substitution Principle - Interface Segregation Principle - Dependency Inversion Principle Robert C. Martin - Photo: Angelacleancoder
  6. The Agile Manifesto 1.Our highest priority is to satisfy the

    customer through early and continuous delivery of valuable software. 2.Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4.Business people and developers must work together daily throughout the project. 5.Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6.The most ef fi cient and effective method of conveying information to and within a development team is face-to-face conversation. 7.Working software is the primary measure of progress. 8.Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace inde fi nitely. 9.Continuous attention to technical excellence and good design enhances agility. 10.Simplicity--the art of maximizing the amount of work not done--is essential. 11.The best architectures, requirements, and designs emerge from self-organizing teams. 12.At regular intervals, the team re fl ects on how to become more effective, then tunes and adjusts its behavior accordingly.
  7. The Agile Manifesto 1.Our highest priority is to satisfy the

    customer through early and continuous delivery of valuable software. 2.Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4.Business people and developers must work together daily throughout the project. 5.Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6.The most ef fi cient and effective method of conveying information to and within a development team is face-to-face conversation. 7.Working software is the primary measure of progress. 8.Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace inde fi nitely. 9.Continuous attention to technical excellence and good design enhances agility. 10.Simplicity--the art of maximizing the amount of work not done--is essential. 11.The best architectures, requirements, and designs emerge from self-organizing teams. 12.At regular intervals, the team re fl ects on how to become more effective, then tunes and adjusts its behavior accordingly.
  8. Agile Manifesto Customer Changing Requirements Deliver Work Together Motivated Individuals

    Environment & Support Team Conversation Working Software Sustainable Development Technical Excellence / Good Design Simplicity Self-Organizing Teams The Team Reflects
  9. Scope: Team works in a context over which they have

    complete control Flow: Work in Small Batches (Lean, WIP Limits) Make Team Context Better Even Day. Freedom to Experiment without Fear Provide Solutions to Customers with Minimal Overhead Agile Manifesto Unicorn Project Customer Changing Requirements Deliver Work Together Motivated Individuals Environment & Support Team Conversation Working Software Sustainable Development Technical Excellence / Good Design Simplicity Self-Organizing Teams The Team Reflects
  10. No prototypes, polish as you go. Make it always deployable/runnable.

    Keep your code absolutely simple. Great tools make great software. Test your own code. If you see a bug, fix it. Use a development system that is superior to your target. Write your code for this (piece of software) only. Encapsulate functionality to ensure design consistency. Code transparently. Code for the team. John Romero’s 10 Programming Principles
  11. Scope: Team works in a context over which they have

    complete control Flow: Work in Small Batches (Lean, WIP Limits) Make Team Context Better Even Day. Freedom to Experiment without Fear Provide Solutions to Customers with Minimal Overhead Agile Manifesto Unicorn Project John Romero Deliver Quickly and Continuously Focus on Robustness Simplify for Maintainability Use the Right Tools Deliver Quality Code for Now Consistency for Customer Experience Code for the Team Customer Changing Requirements Deliver Work Together Motivated Individuals Environment & Support Team Conversation Working Software Sustainable Development Technical Excellence / Good Design Simplicity Self-Organizing Teams The Team Reflects
  12. “Success is the product of daily habits - not once-in-a-

    lifetime transformations” “Just because improvements aren’t visible, it doesn’t mean they’re not happening” “You do not rise to the level of your goals. You fall to the level of your systems”