Slide 1

Slide 1 text

Agile Technical Coaching The missing piece of your Agile Transformation ? Yoan Thirion #sharingiscaring

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

https://pyxis-suisse.ch/notre-equipe/coaching-agile-technique/ Yoan Thirion Agile Coach Help organizations / teams to implement Agile principles and mindset. Help teams deliver better quality software with craft mindset, practices and principles. Software Crafter Trainer Teach others in specific knowledge, skills. #sharingiscaring Coach Partner with clients in a creative process that inspires their personal and professional potential. Mentor Share knowledge, skills and experience that enables the professional and personal Growth of someone else. Able to choose the right role to play depending on the context. Understand organization as a system. Act as a change catalyst. Navigator Facilitator Guide groups through processes that help stimulate collective intelligence to find solutions and take decisions. Observer

Slide 4

Slide 4 text

My Objective Share with you my observations / feelings about what I identify as a gap in transformations. A potential answer to this gap?

Slide 5

Slide 5 text

Once upon a time...

Slide 6

Slide 6 text

Agile Transformation SCRUM Sprint Product Increment KANBAN Continuous Flow Continuous Improvement Iterative / Incremental WIP Limits JIT Priorization SAFe LESS @Scale

Slide 7

Slide 7 text

Everything is Gonna Be Alright Scrum Masters Change Managers Agile Coaches Release Train Engineers Product Owners Product Managers UX Experts

Slide 8

Slide 8 text

By “Some Developers”

Slide 9

Slide 9 text

A Huge Impact As developers, how could we continuously deliver value and guarantee quality / stability at the same time ?

Slide 10

Slide 10 text

A common pattern “We are scared about the non explicit trade-off we ve made between speed and quality...” Quality Scope Time Budget What level of quality must our deliverables have? What are we tasked with delivering? What budget constraints must we deliver within? What time-frame do we have to deliver it within?

Slide 11

Slide 11 text

Stress... We need to adapt, not only our team organization ,but our Dev Practices as well... But WHAT and HOW?

Slide 12

Slide 12 text

Product Managers Product Owners UX Experts Scrum Masters Change Managers Release Train Engineers Agile Coaches No one with Technical Mastery?

Slide 13

Slide 13 text

Agile Tech Coaching to the Rescue?

Slide 14

Slide 14 text

Improve Code Quality Build Confidence Learning / Apprenance Culture Continuous Improvement Decrease Time To Market Agile Technical Coaching What else? Motivate People

Slide 15

Slide 15 text

Accelerate We need to adapt our Dev Practices... Source : https://www.slideshare.net/OCTOTechnology/accelerate-la-vitesse-conditionne-lexcellence

Slide 16

Slide 16 text

Open Blindspots Ask questions Teach new “stuff “ Create a Learning Culture Challenge Statu Quo

Slide 17

Slide 17 text

Signs you need it Bugs How much time does your team spend fixing defects vs creating new features? Delayed Deliveries Consistent delays in rolling out new features Bad Code The code is so problematic that team members want a complete rewrite Lack of confidence No one wants to touch a given piece of code No learning culture Hard to innovate, improve, be resilient and motivated without learning... No external eyes No perspective on design, architecture, and quality

Slide 18

Slide 18 text

A Quick Words Not all codes are born equals...

Slide 19

Slide 19 text

How can it be done ? Only my approach Not an universal truth Disclaimer

Slide 20

Slide 20 text

We don’t know how to ensure our system quality when iterating... Let’s make a self assessment to initiate an improvement backlog

Slide 21

Slide 21 text

Self Assessment What do we want to achieve? Where are we now? What could we do? What will we do? https://github.com/ythirion/software-crafter-journey

Slide 22

Slide 22 text

Example “We must maintain and evolve a Legacy code system but we are not confident at all to touch it...” Findings Improvement Ideas (from the team) Add tests to increase our confidence : which ones? how? Rewrite the system Coach proposals How to test legacy code techniques: Test Pyramid / Strategy, Approval Testing, Code Coverage / Mutation Testing Static code analysis, Hotspot analysis How to refactor legacy code: Wrap, Strout, Seams, ...

Slide 23

Slide 23 text

Now, we know where we are and what to experiment !!!

Slide 24

Slide 24 text

Team Coaching Learning Hour(s) Code Kata 4C (inverted pedagogy) Pair / Mob Programming Learning by Doing Mob Programming Apply learnings with the team Safe place Outside from production code Repeat on other topics... On production code Concrete team problems Pair Programming Driver The one behind the wheel Control the machine Navigator Does not act directly on the machine Takes a step back Frequent rotation Know how to slow down Several styles Ping-Pong TDD + Pair Alternate at each red phase Strong Style "I have an idea" "Here is the keyboard" Silent Only the code to communicate Evil Twin Trick your partner Highlight edge cases Learn and progress Share & transmit Reduce the Truck Factor Assure / reassure yourself Motivate / help each other Know how to say no Respect your partner Transparency Retrospective Shared objective Agenda Take breaks Why? Silence Fixed roles Different machines Disengagement Ensemble / Mob programming Simultaneous collaboration of each member "All the brilliant minds working together on the same thing, at the same time, in the same space, and at the same computer." - Woody Zuill Working effectively with pair / mob programming

Slide 25

Slide 25 text

Code Review As A Service (CRAAS) Outside-In review (high to low level) We would appreciate to have your external / neutral Point Of View on this system Code complexity Change Frequency Hotspot Knowledge Map Static / Behavorial Code Analysis Ask questions Suggest improvements Propose refactoring No Pull Request Team is owner of its code Debrief all together

Slide 26

Slide 26 text

Mindset There is a lot of conflicts in our team, especially during code reviews. I think we have to work on it...

Slide 27

Slide 27 text

Hard skills, but not only... Alignment, vision, communication When developing new functionalities, we usually have to make assumptions which leads to misunderstandings and creates tension with our stakeholders.

Slide 28

Slide 28 text

Topics that could be covered... ...

Slide 29

Slide 29 text

We just found out that two teams have already developed a similar module we are planning on developing... Let's bootstrap a dev community to avoid wasting time and energy then.

Slide 30

Slide 30 text

Community of Practices Connect people / break silos Build a learning organization ... Consolidate the collective knowledge Improve quality Spread knowledge Share practices / principles Learn together Solve problems by using the collective intelligence Avoid waste of time / money (not reimplement existing stuff)

Slide 31

Slide 31 text

Events "You don't need to be an expert to share, it's by sharing that we become experts." Involve people Use collaborative formats Mix formats: Katas, Talks, Lean coffees, Lightning talks, Xtrem Reading, ...

Slide 32

Slide 32 text

Creating a community helped us a lot but we still have issues with our architecture. We don't know who validates the architecture guidelines and, more importantly, what's expected from us... How about experimenting co-design solutions instead of long feedback loops?

Slide 33

Slide 33 text

holds materialized by co-build during Co-Designs Enterprise Architecture Tech Leads Devs Security participates, proposes, takes decisions feed Co-Design Create strong bidirectional communication between architecture and development A.D.R Ops Other experts KB Design Principles Tech Radar

Slide 34

Slide 34 text

Tech Radar Organize Tech Watch Living Guidelines Regular Review

Slide 35

Slide 35 text

How can we now become fully autonomous and help other teams within our organization? I can coach individual(s) within the organization so they are capable of coaching teams.

Slide 36

Slide 36 text

Mentoring Agile Coach Help organizations / teams to implement Agile principles and mindset. Help teams deliver better quality software with craft mindset, practices and principles. Software Crafter Trainer Teach others in specific knowledge, skills. Coach Partner with clients in a creative process that inspires their personal and professional potential. Mentor Share knowledge, skills and experience that enables the professional and personal Growth of someone else. Able to choose the right role to play depending on the context. Understand organization as a system. Act as a change catalyst. Navigator Facilitator Guide groups through processes that help stimulate collective intelligence to find solutions and take decisions. Observer ? How to not be indispensable

Slide 37

Slide 37 text

? How? - Example Agile Coach Software Crafter Trainer Coach Mentor Navigator Facilitator Observer Agile Manifesto Scrum Kanban O.K.R T.D.D B.D.D D.D.D F.P Clean Code 7P Liberating Structures Decision making Non Violent Communication GROW Solution Focus Open Questions Training From The Back of The Room Host Leadership Adopt a posture consciously Better speaker M.E.N.T.O.R Model Leadership How to create a learning Culture

Slide 38

Slide 38 text

We have to demonstrate the impact of Agile Technical Coaching to our management but HOW? We already have all the measures we need...

Slide 39

Slide 39 text

Measures Features Defects Technical Debt 0 5 10 15 20 Jan Feb Mar Apr May Jun Jul Aug Features Defects Technical Debt 0 2 4 6 8 10 12 14 Jan Feb Mar Apr May Jun Jul Aug Team Stocks evolution DORA Metrics Hard to make correlations Self "Assessment" Measure Continuous Improvement People / Teams feedback Survey Motivation Feeling Learning

Slide 40

Slide 40 text

Let's conclude

Slide 41

Slide 41 text

Several Streams Team Community Architecture Coach the coaches Coach teams and help them deliver more efficiently with better quality inside. Help people to create and lead communities of practice. Help to create technical alignment. Support individuals within the organization so they are capable of coaching teams.

Slide 42

Slide 42 text

Let's Conclude To succeed in their agile transformations, organizations expend a tremendous amount of energy supporting new roles and THAT'S GREAT BUT who is capable of supporting the ones who deliver? I strongly think most of Dev Teams need to be supported by Agile Technical Coaches to succeed... Agile Tech Coaching

Slide 43

Slide 43 text

Imagine that tomorrow, an Agile Technical Coach arrives in your organization, what would change?

Slide 44

Slide 44 text

Thank You #sharingiscaring ""Our job is to be strict with code but benevolent and open-minded with the ones who design it."

Slide 45

Slide 45 text

Resources