Transcript of "Dealing with Software by being softaware"
Dealing with Software Development By being aware of software Ruben Gonzalez Blanco firstname.lastname@example.org Telefonica Digital Product Development and Innovation
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.
1. Raising AwarenessA view about software that many have forgotten
Observing Leonard painting Scene & Painting Idea Paint Review Outcome Painter
Humm…Find the Differences Problem & Scene & Coding Idea Painting Idea Code Paint Run & Test Review Outcome OutcomeProgrammer Painter
The Artist continuous flow SynthesisIntention Realization Feedback
The Artist continuous flow The SW Developer SynthesisIntention Realization Feedback
The Artist attributes Knowledge Mastery Talent Motivation Creativity Inspiration Passion Genius
The Artist attributesThe SW Developer Knowledge Mastery Talent Motivation Creativity Inspiration Passion Genius
Art vs pure EngineeringUnpredictable Planned Practices VS Process Tacit Explicit Human Industrial
Art vs pure EngineeringSoftware Development Unpredictable Planned Practices VS Process Tacit Explicit Human Industrial
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.
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
2. What it is Software and Software Development? A practitioner view
Software Development is a process ofcontinuous Knowledge TransformationCreative Human
Knowledge about a Problem and a possible Solution Problem Solution
Based on Continuous Synthesis knowledgeLearning by doing Time Knowledge transformation What How Source Executable Code SW Human
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 : http://www.agileproductdesign.com/blog/dont_know_what_i_want.html
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.
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
Software Developers work at the highest level of detail and complexity Problem User Space Level of Detail Software SpaceDeveloperswork here Technical Solution
Software Developers are Essential Source Executable Code SW They do the most complex and relevant task : Transforming Knowledge into Code
Software is a form of KnowledgeProblem Solution What How Source Executable Code SW
3. Dealing effectively with Software Pieces of advice to understand agile and software crafting practices
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
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
Grow-Emerge the system• From Idea to Realization based on continuous synthesis-feedback and adaptation
Avoid BUFs Big Up Front Designs, Specifications, Plans…• Make your Design and Specification Emerge – Plans, Estimations and Designs must be Intentional
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
Have a Creative Environment Foster and attract Creative minds
Have the Conditions that Inspire Creativity Creativity needs both the “connected mind” and the “creative pauses”
Do not set Goals, create Challengesgive Directions Facilitate, Support and Help
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”.
Adapt Methods to the Team Not the oppositeFDD Crystal DSDM Pragmatic Programming Adaptive Software Development Remember: There is No Silver Bullet…. Fred Brooks
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 http://agilemanifesto.org/
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. http://manifesto.softwarecraftsmanship.org/
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.