dealing with software by being softaware
TRANSCRIPT
![Page 1: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/1.jpg)
Dealing with Software Development
Ruben Gonzalez [email protected]
Telefonica Digital Product Development and Innovation
By being aware of software
![Page 2: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/2.jpg)
Agenda
1. Raising Awareness2. Understanding Software Development3. Dealing Effectively with Software
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.
DISCLAIMER
![Page 3: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/3.jpg)
1. Raising Awareness
A view about software that many have forgotten
![Page 4: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/4.jpg)
Dealing with Software. Evolution
Software Crisis
Software Engineering
No Silver Bullet
Agile Manifesto
CraftsmanshipManifesto
CraftingIncremental
1960 1970 19801950 1990 2000 2010
Waterfall IterativeRapid Prototyping
CMM
Crafting
Predictive Processes
Iterative Processes
Agile MethodsScrum, XP, FDD, DSDM, OpenUP…
Spiral, RAD, Objectory, RUP
Waterfall, CMM, ISO9000
Evolutionary
![Page 5: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/5.jpg)
Software Development Cliché
![Page 6: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/6.jpg)
Dennis the Software Developer
![Page 7: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/7.jpg)
Observing Dennis coding
Problem & Coding Idea
Code
Run & TestOutcome
Programmer
![Page 8: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/8.jpg)
Leonard the Artist
![Page 9: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/9.jpg)
Observing Leonard painting
Scene &Painting Idea
Paint
Review Outcome
Painter
![Page 10: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/10.jpg)
Humm…Find the Differences
Problem & Coding Idea
Code
Run & TestOutcome
Programmer
Scene &Painting Idea
Paint
Review OutcomePainter
![Page 11: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/11.jpg)
The Artist continuous flow
Intention Realization
Feedback
Synthesis
![Page 12: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/12.jpg)
The Artist continuous flow
Intention Realization
Feedback
Synthesis
The SW Developer
![Page 13: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/13.jpg)
The Artist attributes
Knowledge MasteryTalent
Motivation Creativity
InspirationPassionGenius
![Page 14: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/14.jpg)
The Artist attributes
Knowledge MasteryTalent
Motivation Creativity
InspirationPassionGenius
The SW Developer
![Page 15: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/15.jpg)
Art vs pure Engineering
Human
Unpredictable Practices
Tacit
PlannedProcessExplicit
VS
Industrial
![Page 16: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/16.jpg)
Art vs pure Engineering
Human
Unpredictable Practices
Tacit
PlannedProcessExplicit
VS
Industrial
Software Development
![Page 17: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/17.jpg)
Crafting or Engineering?
Software Development seems to be closer to Crafting and Artistic work rather than pure Engineering work….
…but some good practices of Engineering disciplines can still be applied.
![Page 18: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/18.jpg)
Craft or Art?
Just a matter of genius and talent
Software code written by humans can have “beauty” in the way is written, run, structured and how collaborate/ interact between its parts
![Page 19: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/19.jpg)
2. What it is Software and Software Development?
A practitioner view
![Page 20: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/20.jpg)
Software Development is a process of continuous Knowledge Transformation
Creative Human
![Page 21: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/21.jpg)
Knowledge about a Problem and a possible Solution
Problem Solution
![Page 22: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/22.jpg)
Based on Continuous Synthesis
What
Human
Knowledgetransformation
HowSourceCode
Executable SW
knowledge
Time
Learning by doing
![Page 23: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/23.jpg)
Both Iterative and Incremental Iteratimental
• To find out “what” and “how”• To improve the System
• 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
ITERATIVE
INCREMENTAL
![Page 24: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/24.jpg)
Software emerges and grows continuously along the process of creation (iterative + incremental)
System “Specs”ArchitectureSoftware System
Emergence is the key characteristic of complex systems.
IdeaNeedProblem
Intentional
Emergent
![Page 25: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/25.jpg)
Requires Understanding “What” and “How” at multiple levels of detail
What
How
What
How
What
How
User System
Component
What
How
What
How
What
How
Domain
Team
Individuals
Multiple Levelsof Iteratimental
Cycles
MultipleDisciplines
![Page 26: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/26.jpg)
Software Developers work at the highest level of detail and complexity
Problem
Technical Solution
User Space
Level of Detail
Software Space
Developerswork here
![Page 27: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/27.jpg)
Software Developers are Essential
They do the most complex and relevant task :
Transforming Knowledge into Code
Source Code
Executable SW
![Page 28: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/28.jpg)
Software is a form of Knowledge
SourceCode
Executable SW
What
How
Problem Solution
![Page 29: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/29.jpg)
3. Dealing effectively with Software
Pieces of advice to understand agile and software crafting practices
![Page 30: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/30.jpg)
Work in small Short Steps • Each Cycle Delivering “Working” Software
– Measure of Progress = Working Software
• Each Cycle Embraces the Change naturally
Intention
Working Software
IT1 IT2
Feedback
Team Cycles or Sprints (1-4 weeks)
ValueDrivenSynthesis
• New Features• Changes• Enhancements
AdaptIT3
• New Features• Changes• Enhancements
Feedback
Adapt
Feedback
Adapt
Incremental + Iterative Development Cycles = Iteratimental Cycles
Individuals Cycles (minutes, hours, day)
![Page 31: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/31.jpg)
Be Value Driven
SOURCE : DSDMBasedFrom Dean Leffingwell
FixedScope
TimeResources
Time
Scope
Plan Driven
ValueDriven
The Plan creates cost/schedule estimates
feature intent & commitment to deliver the max value
Resources
Fixed
Estimated Intentional &Max Possible
![Page 32: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/32.jpg)
Grow-Emerge the system
• From Idea to Realization based on continuous synthesis-feedback and adaptation
![Page 33: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/33.jpg)
Avoid BUFs
• Make your Design and Specification Emerge– Plans, Estimations and Designs must be Intentional
Big Up Front Designs, Specifications, Plans…
![Page 34: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/34.jpg)
Have Customers in the Team
![Page 35: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/35.jpg)
Blend a Multiple Disciplines in a Team Collaborating together
Domain Experts
Ux Designers
Business Analysts
Product Managers
DevelopersTesters
System Engineers
Deployment Engineers
Architects
Human Factors
Users
Foster Open Communications and Collaborations
![Page 36: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/36.jpg)
Have a Creative Environment
Foster and attract Creative minds
![Page 37: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/37.jpg)
Have the Conditions that Inspire Creativity
Creativity needs both the “connected mind” and the “creative pauses”
![Page 38: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/38.jpg)
Do not set Goals, create Challenges
give Directions
Facilitate, Support and Help
![Page 39: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/39.jpg)
Simplify Essential ComplexityDiminish Accidental Complexity*
Essential complexity is caused by the problem to be solved, and nothing can remove it. Represents the difficulty inherent in any problem.
Accidental complexity grows from the things we feel we must build to mitigate essential complexity. Relates to problems that we create on our own and which can be fixed.
*By Neal Ford in “97 things every architect should know”.
![Page 40: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/40.jpg)
Adapt Methods to the TeamNot the opposite
DSDM
FDD
Remember: There is No Silver Bullet…. Fred Brooks
Crystal
Pragmatic Programming
Adaptive Software Development
![Page 41: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/41.jpg)
Treat Software Code as an Asset
![Page 42: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/42.jpg)
Have a Team of Talented Individuals
inspired creative
passionate
team player
![Page 43: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/43.jpg)
Conclusion
BE SOFT-AWARE
http://agilemanifesto.org/
http://manifesto.softwarecraftsmanship.org/
![Page 44: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/44.jpg)
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 plan
That is, while there is value in the items on the right, we value the items on the left more
http://agilemanifesto.org/
![Page 45: Dealing with Software by being softaware](https://reader036.vdocuments.mx/reader036/viewer/2022070322/559074821a28abd6118b45d1/html5/thumbnails/45.jpg)
Craftsmanship ManifestoAs aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:
That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
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 partnerships
http://manifesto.softwarecraftsmanship.org/