1 of 97

Agile

The software development methodology for today and tomorrow

Muhammad Kamran Azeem

Senior Consultant - Infrastructure and Security @ Praqma

Founder: WBITT

License for presentation: Creative Commons

CI / CD / XP / Dev Ops / Kanban / Scrum / Lean / git / Jenkins and Docker - The whole nine yards!

2 of 97

Warning! - Strong / crude language!

The Bonnie Situation

A bloody yet edifying story about consultancy

(a MUST read)

3 of 97

“If I'm curt with you, it's because time is a factor. I think fast, I talk fast, and I need you guys to act fast if you want to get out of this.

So pretty please, with sugar on top, clean the f*****'n car.”

4 of 97

All images / videos used in this presentation are courtesy from their respective owners,

for educational purposes.

5 of 97

Traditional project acquisition

6 of 97

Can you predict the future?

7 of 97

Popular estimation techniques

Jump to Estimates

8 of 97

Traditional software development process

9 of 97

Requirements (list)

Project plan

10 of 97

11 of 97

12 of 97

13 of 97

14 of 97

15 of 97

16 of 97

17 of 97

18 of 97

19 of 97

20 of 97

21 of 97

We don’t do estimates*. (period)

Estimates are ALWAYS wrong. ((second) period)

22 of 97

If “estimates are always wrong”, how do we:

  • do projects?
  • estimate work?
  • estimate cost?
  • . . . ?

Agile ...

23 of 97

Workshops!

24 of 97

What is Agile?

adjective

  • able to move quickly and easily.

"Ruth was as agile as a monkey"

25 of 97

Waterfall method / Plan Driven

Spiral method / Risk Driven

26 of 97

Incremental / Iterative Model

27 of 97

Agile - History

  • 1948-1975: Toyota Production System (Japan) / Lean Manufacturing
  • 1957 - Incremental Development at IBM's Service Bureau Corporation
  • 1974 - White paper: Adaptive Software Development Process
  • 1974 - AT&T deployed Adaptive Software Development Process
  • 1994 - Unified Process and Dynamic Systems Development Method (DSDM)
  • 1995 - Scrum
  • 1996 - Crystal Clear and Extreme Programming (aka "XP")
  • 1997 - Adaptive Software Development and Feature-Driven Development
  • 2001 - Manifesto for Agile Software Development (includes all above)
  • 2003 - Lean Software Development (Lean Manufacturing)

28 of 97

29 of 97

30 of 97

Individuals and Interactions over Processes and Tools

31 of 97

Working Software over Comprehensive Documentation

32 of 97

Customer Collaboration over Contract Negotiation

33 of 97

Responding to Change over Following a Plan

34 of 97

35 of 97

Why Agile?

36 of 97

1 - Adaptive planning for rapidly changing requirements

37 of 97

Requirements

Plan

Depends on

Predictive Planning

38 of 97

Requirements

Plan

Depends on

Adaptive Planning

39 of 97

  • Small estimates for small increments.
  • Tasks are groomed in terms of priority and size.
  • Retrospective

How:

40 of 97

ETA / Completion Time:

41 of 97

A fairly detailed plan.

42 of 97

43 of 97

Sometimes Scrum fails ...

…, also when you just take the management stuff and leave the technical stuff. i.e. CI / CoDe / Testing, etc.

44 of 97

2 - The team chooses their own process to follow

45 of 97

46 of 97

Otherwise, “A bad process will beat a good person - every time.”

W. Edwards Deming

47 of 97

  • Defies reality
  • Slow
  • Insulting
  • Arbitrary / base on random choice
  • Non Intuitive / non-instinctive
  • Nebulous / Vague
  • Crusty
  • Written in “Zombie”
  • So bad that people avoid it

48 of 97

There are exceptions!

49 of 97

Defined Process

Empirical Process

50 of 97

3 - Better communication

51 of 97

*

52 of 97

53 of 97

54 of 97

Pair programming & Code review

55 of 97

56 of 97

57 of 97

Korean Pilots

The Problem: Preserving hierarchy—and asking few questions.

58 of 97

4 - Short feedback loop

59 of 97

Malawi rural healthcare

60 of 97

61 of 97

Continuous Integration / Continuous Delivery

62 of 97

5 - Eliminate Waste (Lean [Muda])

63 of 97

64 of 97

Overburden

Inconsistency

Waste

65 of 97

66 of 97

Anything not adding value to the customer is waste (muda). Such waste may include:

  • Partially done work
  • Extra processes
  • Extra features
  • Task switching
  • Waiting
  • Defects
  • Management activities

67 of 97

The Toyota Production System (TPS)

Two conceptual pillars:

  • Just-in-time – meaning "Making only what is needed, only when it is needed, and only in the amount that is needed"
  • Jidoka – (Autonomation) meaning "Automation with a human touch"

Example: Supermarket

68 of 97

The two principles of The Toyota Way (by Toyota itself)

Continuous improvement

  • Challenge (We form a long-term vision, meeting challenges with courage and creativity to realize our dreams.)
  • Kaizen (We improve our business operations continuously, always driving for innovation and evolution.)
  • Genchi Genbutsu (Go to the source to find the facts to make correct decisions.)

Respect for people

  • Respect (We respect others, make every effort to understand each other, take responsibility and do our best to build mutual trust.)
  • Teamwork (We stimulate personal and professional growth, share the opportunities of development and maximize individual and team performance.)

69 of 97

70 of 97

  • Long-term philosophy
    • Base your management decisions on a long-term philosophy, even at the expense of short-term financial goals
  • The right process will produce the right results
    • Create continuous process flow to bring problems to the surface
    • Use the "pull" system to avoid overproduction
    • Level out the workload
    • Build a culture of stopping to fix problems, to get quality right from the start
    • Standardized tasks are the foundation for continuous improvement and employee empowerment
    • Use visual control so no problems are hidden
    • Use only reliable, thoroughly tested technology that serves your people and processes
  • Add value to the organization by developing your people and partners
    • Grow leaders who thoroughly understand the work, live the philosophy, and teach it to others
    • Develop exceptional people and teams who follow your company's philosophy
    • Respect your extended network of partners and suppliers by challenging them and helping them improve
  • Continuously solving root problems drives organizational learning
    • Go and see for yourself to thoroughly understand the situation
    • Make decisions slowly by consensus, thoroughly considering all options; but - implement decisions rapidly
    • Become a learning organization through relentless reflection and continuous improvement - and never stop (Kaizen)

Reference: https://en.wikipedia.org/wiki/Toyota_Production_System#Principles

71 of 97

72 of 97

6 - Visible Indicators of Working Software

73 of 97

74 of 97

75 of 97

76 of 97

Kanban

77 of 97

78 of 97

79 of 97

80 of 97

7 - Quality is built into the delivered software

In agile, we always ship quality software - continuously; not crappy software.

81 of 97

CI/CoDe/Toll gates, Unit tests, Functional tests, Acceptance tests, etc.

82 of 97

83 of 97

84 of 97

Kaizen

Continuous Improvement

Continuous Perfection

DONE

85 of 97

86 of 97

87 of 97

How to do Agile?

Tools & techniques

88 of 97

89 of 97

Developers engaged in Multiple Projects?

Check our solution: here

90 of 97

Issue / bug tracking (Eliminates waste in communication)

91 of 97

92 of 97

93 of 97

Recommended books

94 of 97

Ethics of working

95 of 97

  • Respect
  • Honesty
  • Responsibility
  • Professionalism

96 of 97

Stories:

  • Example of AC technicians
  • Car mechanics / electricians, etc.

97 of 97