@rhwy || #rcfbloops
FEEDBACK LOOPSTo infinity, and beyond !…
iterative thoughts by Rui Carvalho
@rhwy#rcfbloops talk@rui.fr
@rhwy || #rcfbloops
WHO AM I?
AN INDEPENDENT
Software Craftsman
WITH STRONG
COMMUNITY FOCUS
@rhwy
ncrafts.io
@rhwy || #rcfbloops
WHY I’M HERE TO TALK ABOUT
FEEDBACK LOOPS ?
@rhwy || #rcfbloops
TIME TO FOCUS
WHAT’S REALLY IMPORTANT?
@rhwy || #rcfbloops
HAVE YOU HEARD ?
• TDD IS DEAD
(David Heinemeier Hansson, @dhh)
• AGILE IS A CANCER
(Erik Meijer, @headinthebox)
@rhwy || #rcfbloops
HAVE YOU HEARD ?
• TDD IS DEAD
(David Heinemeier Hansson, @dhh)
• AGILE IS A CANCER
(Erik Meijer, @headinthebox)
« TDD is killing your creativity »
« .. if your company is doing TDD, leave, TDD is a
waste of time … »
@rhwy || #rcfbloops
FIGHT TIME?
@rhwy || #rcfbloops
KEEP THAT FOR LATER
@rhwy || #rcfbloops
WHY THESE
SMART PEOPLE
ARE THEY
COMPLAINING?
@rhwy || #rcfbloops
What
About
You?
… AND,
@rhwy || #rcfbloops
ARE YOU DOING AGILE?
• are you following a strict scrum process?
• do you produce more value than before?
• is the quality of your product better?
• do you provide that value more quickly to the
final end user?
• Are you more confident?
@rhwy || #rcfbloops
Don’t you want to scream sometimes?
@rhwy || #rcfbloops
HOW ARE we ARRIVED AT
THIS Mess ?
@rhwy || #rcfbloops
Because people that don’t understand
core values focus on processes
HOW ARE we ARRIVED AT
THIS Mess ?
@rhwy || #rcfbloops
1ST / SEMANTICS MATTER
@rhwy || #rcfbloops
AGILE IS AN ADJECTIVE, NOT A NOUN
adj. : I am Happy!
noun. : Can I buy some Happy?
Nonsense,
right?
@rhwy || #rcfbloops
So, why are you
doing agile then? *
* maybe not you directly, mostly your
boss or a recruiter asking for that ?…
@rhwy || #rcfbloops
LET’S DEVELOP WITH AGILITY!
Agile is not an input of your
system that you can buy, but
a characteristic of your team
and your way of working
@rhwy || #rcfbloops
2/ LET’S SEE FROM WHERE ALL THIS CAME
@rhwy || #rcfbloops
Welcome change
Deliver frequently
Agile processes promote sustainable
development
AGILE MANIFESTO PRINCIPLES
@rhwy || #rcfbloops
SCRUM
|| USUAL AGILE APPLICATION
Is only a small part of what should be done !
@rhwy || #rcfbloops
AGILITY IS NOT A
SILVER BULLET PROCESS
Agile is the ability to make changes now that does’t
harm our ability to make changes in the future
@rhwy || #rcfbloops
BEHIND THESE principles,
THERE IS THE values!
@rhwy || #rcfbloops
AMONG OTHER VALUES …
Feedback
Communication
Simplicity
Courage
Respect
@rhwy || #rcfbloops
FEEDBACK !
@rhwy || #rcfbloops
XP
@rhwy || #rcfbloops
AGAIN, LET’S HAVE A LOOK AT SCRUM
@rhwy || #rcfbloops
WE FORGOT HALF OF THE FEEDBACK!
@rhwy || #rcfbloops
WE NEED ALL LOOPS TO PROVIDE QUALITY!
Project
Management
Code & Quality
@rhwy || #rcfbloops
LET’S UNDERSTAND THESE feedback loops
@rhwy || #rcfbloops
ITERATION FACILITATORS
Iteration Size =
1
Task Difficulty
granularity & baby steps are the key
of good incremental software
@rhwy || #rcfbloops
BECAUSE IT’S ABOUT FEEDBACK,
AND BECAUSE WE’RE DOING SMALL ITERATIONS WE CALL
THAT FEEDBACK LOOPS …
@rhwy || #rcfbloops
FEEDBACK LOOPS ARE real THINGS
NOT ONLY SOFTWARE DEVELOPMENT PROJECTIONS
But,
@rhwy || #rcfbloops
FEEDBACK LOOPS
FEEDBACK LOOPS OCCURS WHEN THE OUTPUT OF A
SYSTEM A FEEDS THE INPUT OF A SYSTEM B THAT IN
RETURN FEEDS THE INPUT OF THE ORIGINAL SYSTEM A
A B
@rhwy || #rcfbloops
AND MORE IMPORTANT,
THERE IS 2 KINDS OF FEEDBACK LOOPS:
THE POSITIVE ONE
AND THE NEGATIVE ONE
A B
@rhwy || #rcfbloops
ATTENTION, Common non-sens tend to define:
Positive feedback = Good
Negative feedback = Bad
&
@rhwy || #rcfbloops
GOOD BAD
IT’S NOT ABOUT
&
@rhwy || #rcfbloops
AMPLIFICATION REGULATION
IT’S ABOUT
&
@rhwy || #rcfbloops
POSITIVE
Feedback Loops
POSITIVE IS A LOOP GAIN THAT
MEANS :
PRODUCTION OF A WILL HELP
MORE PRODUCTION OF B, THAT
IN RETURN WILL HELP MORE AND
MORE PRODUCTION OF A
AMPLIFICATION
@rhwy || #rcfbloops
NEGATIVE
Feedback Loops
N E G AT I V E F E E D B A C K LO O P
OCCURS WHEN YOU NEED TO
R E D U C E F L U C T U AT I O N S O R
DISTURBANCES IN YOUR SYSTEM
REGULATION
@rhwy || #rcfbloops
APPLYING TO YOUR WORK:
That means, that doing small iterations , is not
the only key, you also need to understand what
objectives you are your trying to reach!
@rhwy || #rcfbloops
suppose that:
- you know the domain very well,
- and receive quite good stories from your business,
- your (big) team is skilled
Then:
maybe, you'll try to setup a negative feedback loop, in order
to keep your environment stable, producing value on a
regular basis
FOR EXAMPLE,
ON A REGULAR CORPORATE PROJECT
@rhwy || #rcfbloops
FOR EXAMPLE,
ON A REGULAR CORPORATE PROJECT
Concretely, doing things like:
- tests (not tdd),
- measuring code coverage,
- having cyclomatic metrics
Is:
a way to (try to) ensure that code quality is stable on the
long term basis
@rhwy || #rcfbloops
PLEASE, NOTE
THAT YOU CAN HAVE NEGATIVE FEEDBACK LOOPS AT
PROJECT LEVEL TO ENSURE STABILITY BUT ALSO POSITIVE
FEEDBACK LOOPS AT CODE LEVEL TO ENSURE CREATIVITY
@rhwy || #rcfbloops
most of the times, the context means:
- you don’t know the domain at all,
- and don’t have good stories because there is no business,
- your don’t know if you’re doing the right thing !…
Then:
For sure, you’ll need to setup a positive feedback loop in
order to enhance creativity, generate and test ideas
FOR EXAMPLE,
ON STARTUP (OR NEW PROJECT)
testing ideas is the objective and value you’re trying to create in that context!
@rhwy || #rcfbloops
Don’t apply it as « mandatory » but:
- most of the time, for complex things it will help you emerge
a good solution
- sometimes for basic things you don’t effectively need it
- for GUI things, that’s not easy too…
Alternatively:
- Creating GUI things is great when you can watch live the
changes of your code, it’s the best design value
- a good REPL is a great way to quickly test and design too!
FOR EXAMPLE,
ABOUT TDD (THE DESIGN PROCESS NOT THE TESTS)
@rhwy || #rcfbloops
ANOTHER EXAMPLE
BEER PONG
For Ground, Pots
TDD will help!
For Angle, Force:
test it live !
Constraints Boundaries
@rhwy || #rcfbloops
WHAT DOES
THAT MEAN
REALLY?
(TO CONCLUDE)
@rhwy || #rcfbloops
KEEP THE FOCUS ON THE Why
YOU ARE DOING SOMETHING
BEFORE THE How
@rhwy || #rcfbloops
SAME RULES DON’T APPLY EVERYWHERE!
THAT’S WHY YOU NEED TO :
(aka : no silver bullet process)
- UNDERSTAND THE values
- APPLY THE principles
- PRACTICE, PRACTICE, practice
@rhwy || #rcfbloops
BEING A GOOD
Software craftsman
ALSO MEANS BEING
MORE PRAGMATIC
AND LESS DOGMATIC
@rhwy || #rcfbloops
AGILE IS ABOUT
Feedback
@rhwy || #rcfbloops
AND FEEDBACK IS ABOUT
Learning
@rhwy || #rcfbloops
THAT
MEANS,
Learning
Agile
IS ABOUT
Learning
@rhwy || #rcfbloops
CAREFULLY SETUP AND LISTENING TO YOUR
feedback loops IS THE ONLY WAY OF
Learning
&
@rhwy || #rcfbloops
AND CONTINUOUS LEARNING BY
small iterations IS THE ONLY WAY TO
BUILD THE RIGHT PRODUCT
=>
Practice, Practice, Practice
never forget, as a Craftsman, to
@rhwy || #rcfbloops
Thank you!
ncrafts.io
21-22 May 2015
Paris, France
Questions ?
@rhwy || #rcfbloops
the great illustrative icons came from the awesome nounproject.com
Feedback Loops
v1.4
2015-04-22

Feedback Loops...to infinity, and beyond!