In this talk, we will go through, how agile values and principles can impact the way we write code. We will be covering different practices Test-Driven Development (TDD), pair programming, and clean code standards, discussing the benefits and the technique of each of those practices. In addition, we will show you how could we deal with legacy code in an agile way.
Outlines:
• Connect to Values and Principles
• Programming Agility - Green Projects
• Programming Agility - Gray Projects
4. Agile Values
That is, while
there is value in
the items on
the right, we
value the items
on the left more.
Individuals and interactions over
processes and tools
Working software over comprehensive
documentation
Customer collaboration over contract
negotiation
Responding to change over following a
plan
5. Agile Principles
Quality
Review Meeting
Retrospective Meeting
Our highest priority is to satisfy the
customer through early and continuous
delivery of valuable software (principle 1).
At regular intervals, the team reflects on
how to become more effective, then tunes
and adjusts its behavior accordingly
(principle 12).
6. Agile Principles
TDD
Clean Code
Coding Standards
Test Automation
Pair Programming
Welcome changing requirements, even late
in development. Agile processes harness
change for the customer's competitive
advantage (principle 2).
7. Agile Principles
CI/CD (Bitbucket Pipeline)
PaaS
SaaS
IaaS
Deliver working software frequently, from a
couple of weeks to a couple of months,
with a preference to the shorter timescale
(principle 3).
9. Agile Principles
Coaching
Facilitation
Mentoring
Teaching
Build projects around motivated individuals.
Give them the environment and support
they need and trust them to get the job
done (principle 5).
The most efficient and effective method of
conveying information to and within a
development team is face-to-face
conversation (principle 6).
The best architectures, requirements, and
designs emerge from self-organizing teams
(principle 11).
10. Agile Principles
Burn Up Chart
Burn Down Chart
Control Chart
Velocity Chart
Cumulative Flow Diagram
Release Burn Down
Working software is the primary measure
of progress (principle 7).
11. Agile Principles
Definition of Done
Definition of Ready
Story Sizing
Sprint Planning
Release Planning
Agile processes promote sustainable
development. The sponsors, developers,
and users should be able to maintain a
constant pace indefinitely (principle 8).
12. Agile Principles
Ambition and
Personal Plan
Continuous attention to technical
excellence and good design enhances
agility (principle 9).
https://www.infoq.com/articles/creative-innovative-culture-at-scale/
13. Agile Principles
Refactoring
Min. Viable Arch.
KISS
SOLID
Continuous attention to technical
excellence and good design enhances
agility (principle 9).
Simplicity--the art of maximizing the
amount of work not done--is essential
(principle 10).
The best architectures, requirements, and
designs emerge from self-organizing teams
(principle 11).
14. How to improve team agility
https://www.linkedin.com/pulse/how-improve-your-teams-burn-up-chart-somaya-aboulwafa/
16. Code Standards
Scannable Code
Clean Code
Code Layers (Level of Abstraction)
Naming (Variables, Functions, Classes)
Law of Demeter as Indicator in OOP
Small Functions/Classes is always
maintainable
(Do One Thing/Responsibility)
Conditional Statement (Switch/Nested IF)
(N-Arity problem)
20. Adopting Practices
TCR
Characterization Test
Code Extraction
Understand legacy code
Build safety net
Refactor to clean code
https://www.youtube.com/watch?v=FFzHOyFeovEhttps://medium.com/@kentbeck_7670/test-commit-revert-870bbd756864
21. Mindset Shift
Educate everyone about
agile.
Try to make everyone
find his role in agile.
Help everyone to
recognize the value of
agile.
Growth mindset
Adaptation
Flexibility
Self-Motivation
22. Culture
Hire Agile Coach.
Consult external Coach.
Self-Organized Team.
The best architectures, requirements, and
designs emerge from self-organizing teams
(principle 11).
23. Environment
Build projects around motivated individuals.
Give them the environment and support
they need and trust them to get the job
done (principle 5).
Frederic Laloux