Feedback Loops...to infinity, and beyond!
-
Upload
rui-carvalho -
Category
Software
-
view
613 -
download
1
Transcript of Feedback Loops...to infinity, and beyond!
@rhwy || #rcfbloops
FEEDBACK LOOPSTo infinity, and beyond !…
iterative thoughts by Rui Carvalho
@rhwy#rcfbloops [email protected]
@rhwy || #rcfbloops
WHO AM I?
AN INDEPENDENT Software Craftsman
WITH STRONG COMMUNITY FOCUS
@rhwyncrafts.io
@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
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
Because people that don’t understand core values focus on processes
HOW ARE we ARRIVED AT THIS Mess ?
@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
Welcome change
Deliver frequently
Agile processes promote sustainable development
AGILE MANIFESTO PRINCIPLES
@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
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 LOOPSFEEDBACK 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
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 L O 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 EXAMPLEBEER PONG
For Ground, PotsTDD will help!
For Angle, Force: test it live !
Constraints Boundaries
@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
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
=>
@rhwy || #rcfbloops
the great illustrative icons came from the awesome nounproject.com
Feedback Loops v1.4
2015-04-22