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

Lean software development in pratica

Lean software development in pratica

Eliminare gli sprechi ed arrivare al Single Piece Flow. Come si fa in pratica? Lo vedremo attraverso tre esempi concreti che potrai applicare al tuo team. Ma attento: non è una ricetta facile! Parleremo di come ottimizzare il tempo degli sviluppatori, come applicare il Simple Design per evitare sprechi indotti dai framework, e come applicare il design per ridurre il work-in-progress e incrementare il parallelismo.

Matteo Vaccari

November 28, 2016
Tweet

More Decks by Matteo Vaccari

Other Decks in Technology

Transcript

  1. Lean Software Development
    …in pratica!
    Matteo Vaccari

    View full-size slide

  2. Two things that work:
    1. Extreme Programming
    2. Lean Thinking

    View full-size slide

  3. Who is this?
    software developer
    agile coach
    extreme programmer
    TDDer
    Thoughtworks Italia

    View full-size slide

  4. What is lean?

    View full-size slide

  5. Continuous Design
    Continuous Delivery
    MVP
    MVP
    MVP
    Ideas
    CUSTOMERS

    View full-size slide

  6. Nella manifattura, si ottimizzano
    le operazioni cicliche
    E nel software?

    View full-size slide

  7. From Growing Object-Oriented Software by Nat Pryce and Steve Freeman

    View full-size slide

  8. Tempi di startup di una
    web application (Java)
    • Tomcat: ~30s
    • Dropwizard: ~3s
    • Embedded Jetty: <1s

    View full-size slide

  9. 2. Technology.

    View full-size slide

  10. Principle #8 – “Use only reliable,
    thoroughly tested technology that
    serves your people and process.”

    View full-size slide

  11. X is awesome! X is crap!

    View full-size slide

  12. AngularJS is 10 times
    more expensive than
    server-side generated html

    View full-size slide

  13. Do you really think that
    you will deliver faster with
    Scala?

    View full-size slide

  14. 0
    10
    20
    30
    40
    Potential improvement by
    using new technologies
    Potential improvement by

    improving sw design skills

    View full-size slide

  15. Anybody can learn
    Scala or AngularJS
    Very few can deliver
    quality software on time

    View full-size slide

  16. public class XServlet extends HttpServlet {
    // ...
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    WebRequest webRequest = new RealWebRequest(request);
    RealWebResponse webResponse = new RealWebResponse(response);
    SqlInterpreter sqlInterpreter = null;
    try {
    sqlInterpreter = new SqlInterpreterFactory(environment, webRequest).build();
    Request ourRequest = new Request(sqlInterpreter, webRequest, environment);
    Controller controller = router.getControllerFor(ourRequest);
    controller.execute(webResponse);
    sqlInterpreter.commit();
    } catch (Exception exception) {
    rollback(sqlInterpreter);
    logger.error(this, request, exception);
    throw new RuntimeException(exception);
    } finally {
    close(sqlInterpreter);
    LocalizedString.preventTomcatComplaining();
    }
    }
    // ...
    }

    View full-size slide

  17. 3. Single-piece flow

    View full-size slide

  18. Single-piece flow
    Each operation only builds
    what the next operation needs

    View full-size slide

  19. Single-piece flow
    WIP = 1

    View full-size slide

  20. WIP=1. Come?

    View full-size slide

  21. Conway’s Law
    Software structure tends to
    reflect the structure of the organization

    View full-size slide

  22. Software designs that
    enable single-piece flow

    View full-size slide

  23. So…. what works?

    View full-size slide

  24. Lean
    • Start from the customer’s needs
    • Optimize the flow from end to end
    • Grow your people
    • Improve always

    View full-size slide

  25. Software design
    • Protect your development loop time
    • Improve your programming/design skills!
    • Exploit software design to hack Conway’s Law

    View full-size slide

  26. matteo.vaccari.name/blog
    twitter.com/xpmatteo
    thoughtworks.com
    THANK YOU

    View full-size slide