Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Dealing with Software by being softaware
1. Dealing with Software Development
By being aware of software Ruben Gonzalez Blanco
rubenb@tid.es
Telefonica Digital
Product Development and Innovation
2. Agenda
1. Raising Awareness
2. Understanding Software Development
3. 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.
12. The Artist continuous flow
The SW Developer
Synthesis
Intention Realization
Feedback
13. The Artist attributes
Knowledge
Mastery
Talent
Motivation
Creativity
Inspiration
Passion
Genius
14. The Artist attributes
The SW Developer
Knowledge
Mastery
Talent
Motivation
Creativity
Inspiration
Passion
Genius
15. Art vs pure Engineering
Unpredictable Planned
Practices VS Process
Tacit Explicit
Human Industrial
16. Art vs pure Engineering
Software Development
Unpredictable Planned
Practices VS Process
Tacit Explicit
Human Industrial
17. 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.
18. 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
19. 2. What it is Software and
Software Development?
A practitioner view
22. Based on Continuous Synthesis
knowledge
Learning by doing
Time
Knowledge
transformation
What How
Source Executable
Code SW
Human
23. Both Iterative and Incremental
Iteratimental
ITERATIVE
• To find out “what” and “how”
• To improve the System
INCREMENTAL
• 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
24. Software emerges and grows
continuously along the process of
creation (iterative + incremental)
Idea System “Specs”
Need Architecture
Problem Software System
Emergence is the key characteristic of complex systems.
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
Team
Multiple Levels Multiple
of Iteratimental Disciplines
Cycles Individuals
26. Software Developers work at the
highest level of detail and complexity
Problem
User Space
Level of Detail
Software Space
Developers
work here Technical Solution
27. Software Developers are Essential
Source Executable
Code SW
They do the most complex and relevant task :
Transforming Knowledge into Code
28. Software is a form of Knowledge
Problem Solution
What
How
Source Executable
Code SW
29. 3. Dealing effectively with Software
Pieces of advice to understand agile
and software crafting practices
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 • Changes
Intention • 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. Be Value Driven
Fixed Fixed
Scope Resources Time
Value
Driven
Plan
Driven
The Plan creates feature intent & commitment to
cost/schedule estimates deliver the max value
Resources Time Scope
Estimated Intentional &
Max Possible
SOURCE : DSDM
BasedFrom Dean Leffingwell
32. Grow-Emerge the system
• From Idea to Realization based on continuous
synthesis-feedback and adaptation
33. Avoid BUFs
Big Up Front Designs, Specifications, Plans…
• Make your Design and Specification Emerge
– Plans, Estimations and Designs must be Intentional
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. Have a Creative Environment
Foster and attract Creative minds
37. Have the Conditions that Inspire Creativity
Creativity needs both the “connected mind” and the “creative pauses”
38. Do not set Goals, create Challenges
give Directions
Facilitate, Support and Help
39. Simplify Essential Complexity
Diminish 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”.
40. Adapt Methods to the Team
Not the opposite
FDD
Crystal
DSDM
Pragmatic Programming
Adaptive Software Development
Remember: There is No Silver Bullet…. Fred Brooks
44. Agile Manifesto
We 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/
45. Craftsmanship Manifesto
As 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:
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
That is, in pursuit of the items on the left we have found the items on the right to be indispensable.
http://manifesto.softwarecraftsmanship.org/