$30 off During Our Annual Pro Sale. View Details »

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

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

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

    Thoughtworks Italia
  5. What is lean?

  6. CUSTOMERS

  7. Continuous Design Continuous Delivery MVP MVP MVP Ideas CUSTOMERS

  8. None
  9. 1. Waiting.

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

  11. None
  12. None
  13. None
  14. From Growing Object-Oriented Software by Nat Pryce and Steve Freeman

  15. Tempi di startup di una web application (Java) • Tomcat:

    ~30s • Dropwizard: ~3s • Embedded Jetty: <1s
  16. 2. Technology.

  17. Principle #8 – “Use only reliable, thoroughly tested technology that

    serves your people and process.”
  18. None
  19. X is awesome! X is crap!

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

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

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

    technologies Potential improvement by
 improving sw design skills
  23. Anybody can learn Scala or AngularJS Very few can deliver

    quality software on time
  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(); } } // ... }
  25. 3. Single-piece flow

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

    needs
  27. Single-piece flow WIP = 1

  28. None
  29. James Shore

  30. WIP=1. Come?

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

    the organization
  32. Software designs that enable single-piece flow

  33. So…. what works?

  34. Lean • Start from the customer’s needs • Optimize the

    flow from end to end • Grow your people • Improve always
  35. Software design • Protect your development loop time • Improve

    your programming/design skills! • Exploit software design to hack Conway’s Law
  36. matteo.vaccari.name/blog twitter.com/xpmatteo thoughtworks.com THANK YOU