Dealing with Software by being softaware


Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Dealing with Software by being softaware

  1. 1. Dealing with Software Development By being aware of software Ruben Gonzalez Blanco Telefonica Digital Product Development and Innovation
  2. 2. Agenda1. Raising Awareness2. Understanding Software Development3. Dealing Effectively with Software DISCLAIMER Following are a set of personal opinions and understandings about software development and software engineering profession. The purpose of this presentation is just sharing those not convincing you or changing your mind.
  3. 3. 1. Raising AwarenessA view about software that many have forgotten
  4. 4. Dealing with Software. Evolution Agile Methods Scrum, XP, FDD, DSDM, OpenUP… Iterative Processes Spiral, RAD, Objectory, RUP Predictive Processes Waterfall, CMM, ISO9000 Crafting 1950 1960 1970 1980 1990 2000 2010 Evolutionary Rapid Prototyping Software Crisis Waterfall Incremental IterativeCrafting CMM Software Engineering Agile Manifesto No Silver Bullet Craftsmanship Manifesto
  5. 5. Software Development Cliché
  6. 6. Dennis the Software Developer
  7. 7. Observing Dennis coding Problem & Coding Idea Code Run & Test Outcome Programmer
  8. 8. Leonard the Artist
  9. 9. Observing Leonard painting Scene & Painting Idea Paint Review Outcome Painter
  10. 10. Humm…Find the Differences Problem & Scene & Coding Idea Painting Idea Code Paint Run & Test Review Outcome OutcomeProgrammer Painter
  11. 11. The Artist continuous flow SynthesisIntention Realization Feedback
  12. 12. The Artist continuous flow The SW Developer SynthesisIntention Realization Feedback
  13. 13. The Artist attributes Knowledge Mastery Talent Motivation Creativity Inspiration Passion Genius
  14. 14. The Artist attributesThe SW Developer Knowledge Mastery Talent Motivation Creativity Inspiration Passion Genius
  15. 15. Art vs pure EngineeringUnpredictable Planned Practices VS Process Tacit Explicit Human Industrial
  16. 16. Art vs pure EngineeringSoftware Development Unpredictable Planned Practices VS Process Tacit Explicit Human Industrial
  17. 17. Crafting or Engineering?Software Development seems to be closer toCrafting and Artistic work rather than pureEngineering work…. …but some good practices of Engineering disciplines can still be applied.
  18. 18. Craft or Art? Just a matter of genius and talentSoftware code written by humans can have “beauty” in the way iswritten, run, structured and how collaborate/ interact between its parts
  19. 19. 2. What it is Software and Software Development? A practitioner view
  20. 20. Software Development is a process ofcontinuous Knowledge TransformationCreative Human
  21. 21. Knowledge about a Problem and a possible Solution Problem Solution
  22. 22. Based on Continuous Synthesis knowledgeLearning by doing Time Knowledge transformation What How Source Executable Code SW Human
  23. 23. Both Iterative and Incremental IteratimentalITERATIVE • To find out “what” and “how” • To improve the SystemINCREMENTAL • To release functionality incrementally • To gradually add parts to the System when “what” and “how” are known From Jeff Patton :
  24. 24. Software emerges and growscontinuously along the process ofcreation (iterative + incremental) Idea System “Specs” Need Architecture Problem Software System Emergence is the key characteristic of complex systems.
  25. 25. Requires Understanding “What” and “How” at multiple levels of detail Domain What System User Component What What What How How What What How How How How TeamMultiple Levels Multipleof Iteratimental Disciplines Cycles Individuals
  26. 26. Software Developers work at the highest level of detail and complexity Problem User Space Level of Detail Software SpaceDeveloperswork here Technical Solution
  27. 27. Software Developers are Essential Source Executable Code SW They do the most complex and relevant task : Transforming Knowledge into Code
  28. 28. Software is a form of KnowledgeProblem Solution What How Source Executable Code SW
  29. 29. 3. Dealing effectively with Software Pieces of advice to understand agile and software crafting practices
  30. 30. Work in small Short Steps • Each Cycle Delivering “Working” Software – Measure of Progress = Working Software • Each Cycle Embraces the Change naturally Team Cycles or Sprints (1-4 weeks) • New Features • New Features • Changes • ChangesIntention • Enhancements • Enhancements IT1 IT2 IT3 Adapt Adapt Adapt Value Driven Feedback Feedback Feedback Synthesis Working Software Individuals Cycles (minutes, hours, day) Incremental + Iterative Development Cycles = Iteratimental Cycles
  31. 31. Be Value Driven Fixed Fixed Scope Resources Time Value Driven Plan Driven The Plan creates feature intent & commitment tocost/schedule estimates deliver the max value Resources Time Scope Estimated Intentional & Max Possible SOURCE : DSDM BasedFrom Dean Leffingwell
  32. 32. Grow-Emerge the system• From Idea to Realization based on continuous synthesis-feedback and adaptation
  33. 33. Avoid BUFs Big Up Front Designs, Specifications, Plans…• Make your Design and Specification Emerge – Plans, Estimations and Designs must be Intentional
  34. 34. Have Customers in the Team
  35. 35. Blend a Multiple Disciplines in a Team Collaborating together Users Ux Designers Domain Experts Business Analysts Testers Developers Architects Product Managers Deployment Engineers System Engineers Human Factors Foster Open Communications and Collaborations
  36. 36. Have a Creative Environment Foster and attract Creative minds
  37. 37. Have the Conditions that Inspire Creativity Creativity needs both the “connected mind” and the “creative pauses”
  38. 38. Do not set Goals, create Challengesgive Directions Facilitate, Support and Help
  39. 39. Simplify Essential Complexity Diminish Accidental Complexity*Essential complexity is caused by the problem to be solved, and nothing canremove it. Represents the difficulty inherent in any problem.Accidental complexity grows from the things we feel we must build tomitigate essential complexity. Relates to problems that we create on our ownand which can be fixed. *By Neal Ford in “97 things every architect should know”.
  40. 40. Adapt Methods to the Team Not the oppositeFDD Crystal DSDM Pragmatic Programming Adaptive Software Development Remember: There is No Silver Bullet…. Fred Brooks
  41. 41. Treat Software Code as an Asset
  42. 42. Have a Team of Talented Individuals passionateinspired creative team player
  43. 43. ConclusionBE SOFT-AWARE
  44. 44. Agile ManifestoWe are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a planThat is, while there is value in the items on the right, we value the items on the left more
  45. 45. Craftsmanship ManifestoAs aspiring Software Craftsmen we are raising the bar of professional software development bypracticing it and helping others learn the craft. Through this work we have come to value: Not only working software, but also well-crafted software Not only responding to change, but also steadily adding value Not only individuals and interactions, but also a community of professionals Not only customer collaboration, but also productive partnershipsThat is, in pursuit of the items on the left we have found the items on the right to be indispensable.