Agile. Agile is not a noun we can quantify but an adjective. Why on earth are most people trying to buy some ’agile’ then ? Why are people trying to sell that they are ’doing’ agile?
Maybe it's time to remember the core values of software development, and among them, feedback is a central one. Let’s try to refine our ability to understand feedback and see how it can help to produce better software
5. @rhwy || #rcfbloops
HAVE YOU HEARD ?
• TDD IS DEAD
(David Heinemeier Hansson, @dhh)
• AGILE IS A CANCER
(Erik Meijer, @headinthebox)
6. @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 … »
11. @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?
16. @rhwy || #rcfbloops
AGILE IS AN ADJECTIVE, NOT A NOUN
adj. : I am Happy!
noun. : Can I buy some Happy?
Nonsense,
right?
17. @rhwy || #rcfbloops
So, why are you
doing agile then? *
* maybe not you directly, mostly your
boss or a recruiter asking for that ?…
18. @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
22. @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
34. @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
35. @rhwy || #rcfbloops
AND MORE IMPORTANT,
THERE IS 2 KINDS OF FEEDBACK LOOPS:
THE POSITIVE ONE
AND THE NEGATIVE ONE
A B
39. @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
40. @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
41. @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!
42. @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
43. @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
44. @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
45. @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!
46. @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)
47. @rhwy || #rcfbloops
ANOTHER EXAMPLE
BEER PONG
For Ground, Pots
TDD will help!
For Angle, Force:
test it live !
Constraints Boundaries
50. @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
51. @rhwy || #rcfbloops
BEING A GOOD
Software craftsman
ALSO MEANS BEING
MORE PRAGMATIC
AND LESS DOGMATIC