SlideShare a Scribd company logo
1 of 40
Download to read offline
Agile Technical Leadership
Alex Bolboacă,  @alexboly,  alex.bolboaca@mozaicworks.com
October 2017
The Problem
One Solution: Technical Leadership
Some Context
Let’s Explore Together
Closing
The Problem
Tell me if this sounds familiar
Someone made a decision 5 years ago that is now very costly to maintain
and very costly to change
Eg. caching
Tell me if this sounds familiar
A set of incremental decisions has led to a difficult context
Eg. customize the product for each customer, end up with hundreds of
different versions
Tell me if this sounds familiar
More teams work on a product, each made their own architectural decisions
and now code is inconsistent
Eg. 15 different interprocess communication methods
What do these have in common?
Complex adaptive systems!
… dynamic network of many agents (which may
represent cells, species, individuals, firms, nations)
acting in parallel, constantly acting and reacting to
what the other agents are doing.
John H. Holland
Interesting because …
The control of a CAS tends to be highly dispersed and
decentralized.
If there is to be any coherent behavior in the system, it
has to arise from competition and cooperation among
the agents themselves. The overall behavior of the
system is the result of a huge number of decisions
made every moment by many individual agents.
So
There’s another way
Constraints!
One Solution: Technical Leadership
Agile Technical Leadership
The responsibility of setting constraints in order to make the development
more effective on mid/long term
The responsibility of making strategic technical decisions
Can there be technical leadership in agile?
Not only it can, there always is.
We want more. We want effective technical leadership.
Who should do technical leadership?
• Technical leads?
• Architects?
• CTOs?
• Everybody?
• Nobody?
Main thesis
Technical leadership is a core competency that will be filled formally or
informally in any development team.
To ensure effective development, we need to understand better how
technical leadership works in agile teams.
Some Context
All our practices are constraints
Code review - someone else needs to give feedback on the code you wrote
Pair programming - work with someone else on complex tasks
TDD - write one failing test, write the minimum code to make it pass, refactor
Continuous Integration - keep everyone’s changes integrated as quickly and
as often as possible
Daily meeting - synchronize daily with your team mates
Crafters movement
As a software crafter, I choose to impose constraints on myself because I
believe they are valuable
Following constraints = discipline
Side note
“Scrum assumes craftsmanship”, Ken Schwaber, OpenAgile Romania 2009
Strategic vs. Tactic decisions
Strategic decisions are decisions you need to make but are difficult to revisit
later
Eg. choice of programming language, architecture style, deployment etc.
Tactical decisions are decisions you need to make but are easy to revisit
later
Eg. how we implement an algorithm
Few more ideas
“Cross functional” means teams have all the necessary competencies. This
includes the competency of setting constraints and making strategic
technical decisions
Technical leadership is formal or informal. It doesn’t matter as long as it’s
effective.
Let’s Explore Together
Group exercise: Constraints
As a group, discuss and write down a list of constraints that you use in your
teams and the reasoning behind using them.
Hint: imagine you had no constraints at all, and compare with the current
way of working
Example
In Mozaic Works we use:
• checklists because they help us maintain a high level of quality even
when under pressure
• unit testing because it validates faster the correctness of the product
• design elements because it allows people who are learning design to
create consistent and correct code faster
• BDD Specs because they help clarify requirements before starting
• domain modeling because it helps minimise database migrations
• continuous deployment because it helps reduce deployment risks
Group exercise: Practices of technical leadership
As a group, imagine you are the new technical lead for your product.
Imagine you can change anything.
What would you do? Can you extract a list of practices?
Example
In Mozaic Works, I have:
• defined a clear technical vision: only full stack developers, responsible
from analysis to deployment, responsible for the quality of their work
• defined a testing strategy: what we test, with what types of tests etc.
• defined coding guidelines. Key ideas: focus on simplicity & readability,
write as little code as possible
• defined the configuration management policy: when to push, when to
branch, when to merge, how branches relate to production / staging /
testing etc.
• helped developers adopt the practices we need: training, deliberate
practice with daily katas & coding dojos etc.
• kept in touch with the developers needs through one-to-one meetings
and writing code together
Group exercise: make a strategic decision
You are in charge with deciding what web framework to use for a brand new
project in your company.
What criteria do you use to make your decision?
Answer
When I picked groovy on grails for our product, I looked at three different
frameworks, built prototypes and compared:
• how easy it is to write a simple web application
• how easy it is to write tests
• the community
• the reported bug count
Reflect
Was it difficult to make this decision? Why?
How confident are you that you made the right decision?
Group exercise: Strategic decisions
As a group:
• think about and write down a list of strategic decisions that were
made for your product
• pick one decision you are unhappy with
• what would you decide instead?
Reminder: strategic decisions are decisions difficult to change once they are
made. They typically affect more people and have effect over a longer
period of time.
Example
In Mozaic Works, I have decided to:
• use groovy on grails for all web applications
• use reactjs for complex front end pages
• use wordpress for all our websites
BUT:
• I am looking at more lightweight alternatives to grails (memory
consumption is high and costly on cloud).
• I put too much emphasis on learning and not enough on speedy
delivery.
Group exercise: mindset required for strategic decision making
You are now part of a technical leadership group for your product. You need
to make decisions related to:
• architecture that can affect next 2 years of development
• practices to use in teams to help improve effectiveness
• tools to adopt for improving code quality
As a group, think and write down:
• what is challenging when making strategic decisions? (hint:
uncertainty, incomplete information)
• what mindset should somebody have to make effective strategic
decisions? (hint: should be able to cope with uncertainty)
Learning strategic decision making
Bad news: not native
Good news: can be learned through practice
Where to start:
• decision models
• find three solutions for every problem
• understand advantages and disadvantages for each solution
• CIA checklist
• identifying criteria before evaluating solutions
• looking at a problem from different angles
• thinking at different levels of abstraction
• be comfortable with incomplete information and uncertainty
Closing
What did you learn?
Individually, write down one thing you learned today. Can you apply it in
your team?
Learn more
Mozaic Works blog https://blog.mozaicworks.com
Thank you!
I’ve been Alex Bolboacă, @alexboly, alex.bolboaca@mozaicworks.com
programmer, trainer, mentor, writer
at Mozaic Works
Think. Design. Work Smart.
https://mozaicworks.com
Join me for Berlin workshops
https://mozaicworks.com/calendar/#Berlin
Q&A
Q&A

More Related Content

What's hot

Agile is as Agile Does
Agile is as Agile DoesAgile is as Agile Does
Agile is as Agile DoesClint Edmonson
 
Lean software development tips and tricks - Agile Tour Dublin 2014
Lean software development tips and tricks - Agile Tour Dublin 2014Lean software development tips and tricks - Agile Tour Dublin 2014
Lean software development tips and tricks - Agile Tour Dublin 2014Augusto Evangelisti
 
Defining Test Competence
Defining Test CompetenceDefining Test Competence
Defining Test CompetenceJohan Hoberg
 
Improve the Development Process with DevOps Practices by Fedorov Vadim
Improve the Development Process with DevOps Practices by Fedorov VadimImprove the Development Process with DevOps Practices by Fedorov Vadim
Improve the Development Process with DevOps Practices by Fedorov VadimSoftServe
 
The Power of BDD
The Power of BDDThe Power of BDD
The Power of BDDNancy Cai
 
Usa prácticas de integración continua y sobrevive para luchar otro día.
 Usa prácticas de integración continua y sobrevive para luchar otro día. Usa prácticas de integración continua y sobrevive para luchar otro día.
Usa prácticas de integración continua y sobrevive para luchar otro día.Software Guru
 
Driving Quality. Front-to-Back Test-Driven Development
Driving Quality. Front-to-Back Test-Driven DevelopmentDriving Quality. Front-to-Back Test-Driven Development
Driving Quality. Front-to-Back Test-Driven DevelopmentAleh Matus
 
Risk management in software engineering
Risk management in software engineeringRisk management in software engineering
Risk management in software engineeringFARZANARIAZBSCompute
 
Transitioning To Agile Webinar Presentation
Transitioning To Agile Webinar PresentationTransitioning To Agile Webinar Presentation
Transitioning To Agile Webinar PresentationThoughtWorks
 
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)Jason Yip
 
Agile software development
Agile software developmentAgile software development
Agile software developmentRajesh Piryani
 
A Rapid Introduction to Rapid Software Testing
A Rapid Introduction to Rapid Software TestingA Rapid Introduction to Rapid Software Testing
A Rapid Introduction to Rapid Software TestingTechWell
 
Erkki Poyhonen - Software Testing - A Users Guide
Erkki Poyhonen - Software Testing - A Users GuideErkki Poyhonen - Software Testing - A Users Guide
Erkki Poyhonen - Software Testing - A Users GuideTEST Huddle
 
Lean software development and scrum model
Lean software development and scrum modelLean software development and scrum model
Lean software development and scrum modelNoreen Aamir
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentAstrails
 
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...AgileNetwork
 

What's hot (20)

Agile is as Agile Does
Agile is as Agile DoesAgile is as Agile Does
Agile is as Agile Does
 
Lean software development tips and tricks - Agile Tour Dublin 2014
Lean software development tips and tricks - Agile Tour Dublin 2014Lean software development tips and tricks - Agile Tour Dublin 2014
Lean software development tips and tricks - Agile Tour Dublin 2014
 
Defining Test Competence
Defining Test CompetenceDefining Test Competence
Defining Test Competence
 
What is agile
What is agileWhat is agile
What is agile
 
Improve the Development Process with DevOps Practices by Fedorov Vadim
Improve the Development Process with DevOps Practices by Fedorov VadimImprove the Development Process with DevOps Practices by Fedorov Vadim
Improve the Development Process with DevOps Practices by Fedorov Vadim
 
The Power of BDD
The Power of BDDThe Power of BDD
The Power of BDD
 
Usa prácticas de integración continua y sobrevive para luchar otro día.
 Usa prácticas de integración continua y sobrevive para luchar otro día. Usa prácticas de integración continua y sobrevive para luchar otro día.
Usa prácticas de integración continua y sobrevive para luchar otro día.
 
Driving Quality. Front-to-Back Test-Driven Development
Driving Quality. Front-to-Back Test-Driven DevelopmentDriving Quality. Front-to-Back Test-Driven Development
Driving Quality. Front-to-Back Test-Driven Development
 
Risk management in software engineering
Risk management in software engineeringRisk management in software engineering
Risk management in software engineering
 
Transitioning To Agile Webinar Presentation
Transitioning To Agile Webinar PresentationTransitioning To Agile Webinar Presentation
Transitioning To Agile Webinar Presentation
 
Lean UX
Lean UXLean UX
Lean UX
 
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)Frug'Agile 2021: Agile as doctrine (and that's a good thing)
Frug'Agile 2021: Agile as doctrine (and that's a good thing)
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
A Rapid Introduction to Rapid Software Testing
A Rapid Introduction to Rapid Software TestingA Rapid Introduction to Rapid Software Testing
A Rapid Introduction to Rapid Software Testing
 
QI, not QA
QI, not QAQI, not QA
QI, not QA
 
Erkki Poyhonen - Software Testing - A Users Guide
Erkki Poyhonen - Software Testing - A Users GuideErkki Poyhonen - Software Testing - A Users Guide
Erkki Poyhonen - Software Testing - A Users Guide
 
Lean software development and scrum model
Lean software development and scrum modelLean software development and scrum model
Lean software development and scrum model
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
ANI | Agile Mindset Day @Gurugram | Agile Planning: Effective Practices and C...
 
Agile
AgileAgile
Agile
 

Similar to Agile Technical Leadership

Tester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDTester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDDerk-Jan de Grood
 
Decision making in software project management
Decision making in software project managementDecision making in software project management
Decision making in software project managementPriyadarshini Krishnaswamy
 
Agile Development unleashed
Agile Development unleashedAgile Development unleashed
Agile Development unleashedlivgeni
 
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"admford
 
Building the A - Team
Building the A - TeamBuilding the A - Team
Building the A - TeamLucas Bruce
 
Session 1 - The Agile vs Non agile divide.pptx
Session 1 - The Agile vs Non agile divide.pptxSession 1 - The Agile vs Non agile divide.pptx
Session 1 - The Agile vs Non agile divide.pptxWatchDogs6
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamRob Curry
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Cross-Functional Code Reviews - As presented at O'Reilly OSCON 2019
Cross-Functional Code Reviews - As presented at  O'Reilly OSCON 2019Cross-Functional Code Reviews - As presented at  O'Reilly OSCON 2019
Cross-Functional Code Reviews - As presented at O'Reilly OSCON 2019Margaret Fero
 
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...admford
 
Assessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentAssessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentMike Cohn
 
Agile software development
Agile software developmentAgile software development
Agile software developmentpradeeppatelpmp
 
Why Should I Have More Than 1 Technique for Retrospectives?
Why Should I Have More Than 1 Technique for Retrospectives?Why Should I Have More Than 1 Technique for Retrospectives?
Why Should I Have More Than 1 Technique for Retrospectives?Premios Group
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandDavid O'Dowd
 
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile InstituteInnovation Roots
 
Lean change method toronto agile meetup
Lean change method toronto agile meetupLean change method toronto agile meetup
Lean change method toronto agile meetupagilebydesign
 

Similar to Agile Technical Leadership (20)

Tester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CDTester’s considerations when moving towards successful CI/CD
Tester’s considerations when moving towards successful CI/CD
 
Decision making in software project management
Decision making in software project managementDecision making in software project management
Decision making in software project management
 
Agile Development unleashed
Agile Development unleashedAgile Development unleashed
Agile Development unleashed
 
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?"
 
Building the A - Team
Building the A - TeamBuilding the A - Team
Building the A - Team
 
The Divide.pptx
The Divide.pptxThe Divide.pptx
The Divide.pptx
 
Session 1 - The Agile vs Non agile divide.pptx
Session 1 - The Agile vs Non agile divide.pptxSession 1 - The Agile vs Non agile divide.pptx
Session 1 - The Agile vs Non agile divide.pptx
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Cross-Functional Code Reviews - As presented at O'Reilly OSCON 2019
Cross-Functional Code Reviews - As presented at  O'Reilly OSCON 2019Cross-Functional Code Reviews - As presented at  O'Reilly OSCON 2019
Cross-Functional Code Reviews - As presented at O'Reilly OSCON 2019
 
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...
When Management Asks You: “Do You Accept Agile as Your Lord and Savior?” - Ci...
 
Assessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility AssessmentAssessing Your Agility: Introducing the Comparative Agility Assessment
Assessing Your Agility: Introducing the Comparative Agility Assessment
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Why Should I Have More Than 1 Technique for Retrospectives?
Why Should I Have More Than 1 Technique for Retrospectives?Why Should I Have More Than 1 Technique for Retrospectives?
Why Should I Have More Than 1 Technique for Retrospectives?
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
 
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute
"Scrum master or Agile Master" - by Saikat Das @ Scaling Agile Institute
 
Scrum master & agile master
Scrum master & agile masterScrum master & agile master
Scrum master & agile master
 
Lean change method toronto agile meetup
Lean change method toronto agile meetupLean change method toronto agile meetup
Lean change method toronto agile meetup
 
UXBC #26: Lean UX
UXBC #26: Lean UXUXBC #26: Lean UX
UXBC #26: Lean UX
 

More from Alexandru Bolboaca (20)

Refactor legacy code through pure functions
Refactor legacy code through pure functionsRefactor legacy code through pure functions
Refactor legacy code through pure functions
 
Design Without Types
Design Without TypesDesign Without Types
Design Without Types
 
Thinking in Functions
Thinking in FunctionsThinking in Functions
Thinking in Functions
 
Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
 
The Journey to Master Code Design
The Journey to Master Code DesignThe Journey to Master Code Design
The Journey to Master Code Design
 
What is good software design? And why it matters?
What is good software design? And why it matters?What is good software design? And why it matters?
What is good software design? And why it matters?
 
Functional programming in C++
Functional programming in C++Functional programming in C++
Functional programming in C++
 
TDD As If You Meant It
TDD As If You Meant ItTDD As If You Meant It
TDD As If You Meant It
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Hidden loops
Hidden loopsHidden loops
Hidden loops
 
Removing structural duplication
Removing structural duplicationRemoving structural duplication
Removing structural duplication
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Why You Should Start Using Docker
Why You Should Start Using DockerWhy You Should Start Using Docker
Why You Should Start Using Docker
 
Pyramid of-developer-skills
Pyramid of-developer-skillsPyramid of-developer-skills
Pyramid of-developer-skills
 
Applied craftsmanship
Applied craftsmanshipApplied craftsmanship
Applied craftsmanship
 
Pyramid of-developer-skills
Pyramid of-developer-skillsPyramid of-developer-skills
Pyramid of-developer-skills
 
Stay focused
Stay focusedStay focused
Stay focused
 
Kanban intro
Kanban introKanban intro
Kanban intro
 
Unit testing-patterns
Unit testing-patternsUnit testing-patterns
Unit testing-patterns
 
Incremental design, simply explained
Incremental design, simply explainedIncremental design, simply explained
Incremental design, simply explained
 

Recently uploaded

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 

Recently uploaded (20)

Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 

Agile Technical Leadership

  • 1. Agile Technical Leadership Alex Bolboacă,  @alexboly,  alex.bolboaca@mozaicworks.com October 2017
  • 2. The Problem One Solution: Technical Leadership Some Context Let’s Explore Together Closing
  • 4. Tell me if this sounds familiar Someone made a decision 5 years ago that is now very costly to maintain and very costly to change Eg. caching
  • 5. Tell me if this sounds familiar A set of incremental decisions has led to a difficult context Eg. customize the product for each customer, end up with hundreds of different versions
  • 6. Tell me if this sounds familiar More teams work on a product, each made their own architectural decisions and now code is inconsistent Eg. 15 different interprocess communication methods
  • 7. What do these have in common?
  • 8. Complex adaptive systems! … dynamic network of many agents (which may represent cells, species, individuals, firms, nations) acting in parallel, constantly acting and reacting to what the other agents are doing. John H. Holland
  • 9. Interesting because … The control of a CAS tends to be highly dispersed and decentralized. If there is to be any coherent behavior in the system, it has to arise from competition and cooperation among the agents themselves. The overall behavior of the system is the result of a huge number of decisions made every moment by many individual agents.
  • 10. So
  • 13. Agile Technical Leadership The responsibility of setting constraints in order to make the development more effective on mid/long term The responsibility of making strategic technical decisions
  • 14. Can there be technical leadership in agile? Not only it can, there always is. We want more. We want effective technical leadership.
  • 15. Who should do technical leadership? • Technical leads? • Architects? • CTOs? • Everybody? • Nobody?
  • 16. Main thesis Technical leadership is a core competency that will be filled formally or informally in any development team. To ensure effective development, we need to understand better how technical leadership works in agile teams.
  • 18. All our practices are constraints Code review - someone else needs to give feedback on the code you wrote Pair programming - work with someone else on complex tasks TDD - write one failing test, write the minimum code to make it pass, refactor Continuous Integration - keep everyone’s changes integrated as quickly and as often as possible Daily meeting - synchronize daily with your team mates
  • 19. Crafters movement As a software crafter, I choose to impose constraints on myself because I believe they are valuable Following constraints = discipline
  • 20. Side note “Scrum assumes craftsmanship”, Ken Schwaber, OpenAgile Romania 2009
  • 21. Strategic vs. Tactic decisions Strategic decisions are decisions you need to make but are difficult to revisit later Eg. choice of programming language, architecture style, deployment etc. Tactical decisions are decisions you need to make but are easy to revisit later Eg. how we implement an algorithm
  • 22. Few more ideas “Cross functional” means teams have all the necessary competencies. This includes the competency of setting constraints and making strategic technical decisions Technical leadership is formal or informal. It doesn’t matter as long as it’s effective.
  • 24. Group exercise: Constraints As a group, discuss and write down a list of constraints that you use in your teams and the reasoning behind using them. Hint: imagine you had no constraints at all, and compare with the current way of working
  • 25. Example In Mozaic Works we use: • checklists because they help us maintain a high level of quality even when under pressure • unit testing because it validates faster the correctness of the product • design elements because it allows people who are learning design to create consistent and correct code faster • BDD Specs because they help clarify requirements before starting • domain modeling because it helps minimise database migrations • continuous deployment because it helps reduce deployment risks
  • 26. Group exercise: Practices of technical leadership As a group, imagine you are the new technical lead for your product. Imagine you can change anything. What would you do? Can you extract a list of practices?
  • 27. Example In Mozaic Works, I have: • defined a clear technical vision: only full stack developers, responsible from analysis to deployment, responsible for the quality of their work • defined a testing strategy: what we test, with what types of tests etc. • defined coding guidelines. Key ideas: focus on simplicity & readability, write as little code as possible • defined the configuration management policy: when to push, when to branch, when to merge, how branches relate to production / staging / testing etc. • helped developers adopt the practices we need: training, deliberate practice with daily katas & coding dojos etc. • kept in touch with the developers needs through one-to-one meetings and writing code together
  • 28. Group exercise: make a strategic decision You are in charge with deciding what web framework to use for a brand new project in your company. What criteria do you use to make your decision?
  • 29. Answer When I picked groovy on grails for our product, I looked at three different frameworks, built prototypes and compared: • how easy it is to write a simple web application • how easy it is to write tests • the community • the reported bug count
  • 30. Reflect Was it difficult to make this decision? Why? How confident are you that you made the right decision?
  • 31. Group exercise: Strategic decisions As a group: • think about and write down a list of strategic decisions that were made for your product • pick one decision you are unhappy with • what would you decide instead? Reminder: strategic decisions are decisions difficult to change once they are made. They typically affect more people and have effect over a longer period of time.
  • 32. Example In Mozaic Works, I have decided to: • use groovy on grails for all web applications • use reactjs for complex front end pages • use wordpress for all our websites BUT: • I am looking at more lightweight alternatives to grails (memory consumption is high and costly on cloud). • I put too much emphasis on learning and not enough on speedy delivery.
  • 33. Group exercise: mindset required for strategic decision making You are now part of a technical leadership group for your product. You need to make decisions related to: • architecture that can affect next 2 years of development • practices to use in teams to help improve effectiveness • tools to adopt for improving code quality As a group, think and write down: • what is challenging when making strategic decisions? (hint: uncertainty, incomplete information) • what mindset should somebody have to make effective strategic decisions? (hint: should be able to cope with uncertainty)
  • 34. Learning strategic decision making Bad news: not native Good news: can be learned through practice Where to start: • decision models • find three solutions for every problem • understand advantages and disadvantages for each solution • CIA checklist • identifying criteria before evaluating solutions • looking at a problem from different angles • thinking at different levels of abstraction • be comfortable with incomplete information and uncertainty
  • 36. What did you learn? Individually, write down one thing you learned today. Can you apply it in your team?
  • 37. Learn more Mozaic Works blog https://blog.mozaicworks.com
  • 38. Thank you! I’ve been Alex Bolboacă, @alexboly, alex.bolboaca@mozaicworks.com programmer, trainer, mentor, writer at Mozaic Works Think. Design. Work Smart. https://mozaicworks.com
  • 39. Join me for Berlin workshops https://mozaicworks.com/calendar/#Berlin