Feedback Loops...to infinity, and beyond!

59

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

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

WANT TO CRY?

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 THINGSNOT ONLY SOFTWARE DEVELOPMENT PROJECTIONS

But,

@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

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 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

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,

LearningAgile

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.io21-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