45
Dealing with Software Development Ruben Gonzalez Blanco [email protected] Telefonica Digital Product Development and Innovation By being aware of software

Dealing with Software by being softaware

Embed Size (px)

Citation preview

Page 1: Dealing with Software by being softaware

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

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

1. Raising Awareness

A view about software that many have forgotten

Page 4: Dealing with Software by being softaware

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

Software Development Cliché

Page 6: Dealing with Software by being softaware

Dennis the Software Developer

Page 7: Dealing with Software by being softaware

Observing Dennis coding

Problem & Coding Idea

Code

Run & TestOutcome

Programmer

Page 8: Dealing with Software by being softaware

Leonard the Artist

Page 9: Dealing with Software by being softaware

Observing Leonard painting

Scene &Painting Idea

Paint

Review Outcome

Painter

Page 10: Dealing with Software by being softaware

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

The Artist continuous flow

Intention Realization

Feedback

Synthesis

Page 12: Dealing with Software by being softaware

The Artist continuous flow

Intention Realization

Feedback

Synthesis

The SW Developer

Page 13: Dealing with Software by being softaware

The Artist attributes

Knowledge MasteryTalent

Motivation Creativity

InspirationPassionGenius

Page 14: Dealing with Software by being softaware

The Artist attributes

Knowledge MasteryTalent

Motivation Creativity

InspirationPassionGenius

The SW Developer

Page 15: Dealing with Software by being softaware

Art vs pure Engineering

Human

Unpredictable Practices

Tacit

PlannedProcessExplicit

VS

Industrial

Page 16: Dealing with Software by being softaware

Art vs pure Engineering

Human

Unpredictable Practices

Tacit

PlannedProcessExplicit

VS

Industrial

Software Development

Page 17: Dealing with Software by being softaware

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

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

2. What it is Software and Software Development?

A practitioner view

Page 20: Dealing with Software by being softaware

Software Development is a process of continuous Knowledge Transformation

Creative Human

Page 21: Dealing with Software by being softaware

Knowledge about a Problem and a possible Solution

Problem Solution

Page 22: Dealing with Software by being softaware

Based on Continuous Synthesis

What

Human

Knowledgetransformation

HowSourceCode

Executable SW

knowledge

Time

Learning by doing

Page 23: Dealing with Software by being softaware

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

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

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

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

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

Software is a form of Knowledge

SourceCode

Executable SW

What

How

Problem Solution

Page 29: Dealing with Software by being softaware

3. Dealing effectively with Software

Pieces of advice to understand agile and software crafting practices

Page 30: Dealing with Software by being softaware

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

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

Grow-Emerge the system

• From Idea to Realization based on continuous synthesis-feedback and adaptation

Page 33: Dealing with Software by being softaware

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

Have Customers in the Team

Page 35: Dealing with Software by being softaware

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

Have a Creative Environment

Foster and attract Creative minds

Page 37: Dealing with Software by being softaware

Have the Conditions that Inspire Creativity

Creativity needs both the “connected mind” and the “creative pauses”

Page 38: Dealing with Software by being softaware

Do not set Goals, create Challenges

give Directions

Facilitate, Support and Help

Page 39: Dealing with Software by being softaware

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

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

Treat Software Code as an Asset

Page 42: Dealing with Software by being softaware

Have a Team of Talented Individuals

inspired creative

passionate

team player

Page 43: Dealing with Software by being softaware

Conclusion

BE SOFT-AWARE

http://agilemanifesto.org/

http://manifesto.softwarecraftsmanship.org/

Page 44: Dealing with Software by being softaware

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

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/