Upload
softaware
View
565
Download
0
Tags:
Embed Size (px)
Citation preview
Dealing with Software Development
Ruben Gonzalez [email protected]
Telefonica Digital Product Development and Innovation
By being aware of software
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
1. Raising Awareness
A view about software that many have forgotten
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
Software Development Cliché
Dennis the Software Developer
Observing Dennis coding
Problem & Coding Idea
Code
Run & TestOutcome
Programmer
Leonard the Artist
Observing Leonard painting
Scene &Painting Idea
Paint
Review Outcome
Painter
Humm…Find the Differences
Problem & Coding Idea
Code
Run & TestOutcome
Programmer
Scene &Painting Idea
Paint
Review OutcomePainter
The Artist continuous flow
Intention Realization
Feedback
Synthesis
The Artist continuous flow
Intention Realization
Feedback
Synthesis
The SW Developer
The Artist attributes
Knowledge MasteryTalent
Motivation Creativity
InspirationPassionGenius
The Artist attributes
Knowledge MasteryTalent
Motivation Creativity
InspirationPassionGenius
The SW Developer
Art vs pure Engineering
Human
Unpredictable Practices
Tacit
PlannedProcessExplicit
VS
Industrial
Art vs pure Engineering
Human
Unpredictable Practices
Tacit
PlannedProcessExplicit
VS
Industrial
Software Development
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.
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
2. What it is Software and Software Development?
A practitioner view
Software Development is a process of continuous Knowledge Transformation
Creative Human
Knowledge about a Problem and a possible Solution
Problem Solution
Based on Continuous Synthesis
What
Human
Knowledgetransformation
HowSourceCode
Executable SW
knowledge
Time
Learning by doing
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
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
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
Software Developers work at the highest level of detail and complexity
Problem
Technical Solution
User Space
Level of Detail
Software Space
Developerswork here
Software Developers are Essential
They do the most complex and relevant task :
Transforming Knowledge into Code
Source Code
Executable SW
Software is a form of Knowledge
SourceCode
Executable SW
What
How
Problem Solution
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
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)
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
Grow-Emerge the system
• From Idea to Realization based on continuous synthesis-feedback and adaptation
Avoid BUFs
• Make your Design and Specification Emerge– Plans, Estimations and Designs must be Intentional
Big Up Front Designs, Specifications, Plans…
Have Customers in the Team
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
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 Challenges
give Directions
Facilitate, Support and Help
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”.
Adapt Methods to the TeamNot the opposite
DSDM
FDD
Remember: There is No Silver Bullet…. Fred Brooks
Crystal
Pragmatic Programming
Adaptive Software Development
Treat Software Code as an Asset
Have a Team of Talented Individuals
inspired creative
passionate
team player
Conclusion
BE SOFT-AWARE
http://agilemanifesto.org/
http://manifesto.softwarecraftsmanship.org/
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/
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/