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 Slide

  2. View Slide

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

    View Slide

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

    View Slide

  5. What is lean?

    View Slide

  6. CUSTOMERS

    View Slide

  7. Continuous Design
    Continuous Delivery
    MVP
    MVP
    MVP
    Ideas
    CUSTOMERS

    View Slide

  8. View Slide

  9. 1. Waiting.

    View Slide

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

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

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

    View Slide

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

    View Slide

  16. 2. Technology.

    View Slide

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

    View Slide

  18. View Slide

  19. X is awesome! X is crap!

    View Slide

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

    View Slide

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

    View Slide

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

    improving sw design skills

    View Slide

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

    View Slide

  24. 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 Slide

  25. 3. Single-piece flow

    View Slide

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

    View Slide

  27. Single-piece flow
    WIP = 1

    View Slide

  28. View Slide

  29. James Shore

    View Slide

  30. WIP=1. Come?

    View Slide

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

    View Slide

  32. Software designs that
    enable single-piece flow

    View Slide

  33. So…. what works?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide