Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Path to Continuous Delivery

The Path to Continuous Delivery

An introduction to Continuous Delivery(CD) and what I believe are the core pillars to achieve CD (TDD, BDD and pair programming).

Presented at:
* Hong Kong Code Conf 2015
* Agile Tour Hong Kong 2016

Pedro Pimentel

November 19, 2016
Tweet

More Decks by Pedro Pimentel

Other Decks in Programming

Transcript

  1. 1 I'll send an email to everyone asking who wants

    to go to the pub after work. 2 I’m in.
  2. 1 I'll send an email to everyone asking who wants

    to go to the pub after work. 5 6 4 3 2 I’m in.
  3. 1 I'll send an email to everyone asking who wants

    to go to the pub after work. 5 6 4 3 2 I’m in. 7 I just need to finish a few things off. Can you wait 5 minutes?
  4. 1 I'll send an email to everyone asking who wants

    to go to the pub after work. 5 6 4 3 2 I’m in. 7 I just need to finish a few things off. Can you wait 5 minutes? 8 I'll see you there, I'm gonna be here another half an hour at least.
  5. 7 Sorry! I'll just be a couple more minutes late.

    1 4 3 5 2 6 9 If you wait for me, I’ll come too.
  6. 7 Sorry! I'll just be a couple more minutes late.

    1 4 3 5 2 6 9 If you wait for me, I’ll come too. 8 I’m nearly done! Wait for me!!!
  7. By this time... Half an hour has passed since #1

    to #6 were ready to go. #7 has already finished his work and joined the others.
  8. By this time... Half an hour has passed since #1

    to #6 were ready to go. #7 has already finished his work and joined the others. All of them are around #9 desk, waiting for him.
  9. By this time... Half an hour has passed since #1

    to #6 were ready to go. #7 has already finished his work and joined the others. All of them are around #9 desk, waiting for him. #8 joins the waiting crowd a few minutes later.
  10. #4 goes to the toilet In the meantime #5 comes

    back. #1 is already regretting sending out the invitation.
  11. 1 4 3 5 2 6 7 8 9 Only

    one! We need three cabs! Let’s wait!
  12. It’s already 9:30pm, all other venues are packed so everyone

    else also goes home, unhappy and thirsty. #3 now has to go home to feed his cat.
  13. 1 I'm off to the pub in 5 minutes sharp.

    There's some spaces in the cab. Anyone wanna join me?
  14. 1 I'm off to the pub in 5 minutes sharp.

    There's some spaces in the cab. Anyone wanna join me? 4 3 2 I’m in.
  15. 1 I'm off to the pub in 5 minutes sharp.

    There's some spaces in the cab. Anyone wanna join me? 4 3 2 I’m in. 5 6 Who’s next?
  16. 1 I'm off to the pub in 5 minutes sharp.

    There's some spaces in the cab. Anyone wanna join me? 4 3 2 I’m in. 7 I just need to finish a few things off. Can you wait 5 minutes? 5 6 Who’s next?
  17. 1 I'm off to the pub in 5 minutes sharp.

    There's some spaces in the cab. Anyone wanna join me? 4 3 2 I’m in. 7 I just need to finish a few things off. Can you wait 5 minutes? 8 I'll see you there, I'm gonna be here another half an hour at least. 5 6 Who’s next?
  18. #5 and #6 decided to wait for #7 to share

    a taxi. In the mean time...
  19. #5 and #6 decided to wait for #7 to share

    a taxi. #8 says the same thing “oh, wait for me, I’m nearly done” In the mean time...
  20. #5 and #6 decided to wait for #7 to share

    a taxi. #8 says the same thing “oh, wait for me, I’m nearly done” #9 says “I’m almost done too, you three go first and I split a taxi with #8” In the mean time...
  21. At the pub 1 4 3 2 5 6 7

    #8 and #9 are coming, we should make space for them
  22. Can you think of examples? Are you one of the

    thirsty workers that could go to the pub but is still waiting for everyone?
  23. Can you think of examples? Do you have working pieces

    of code, ready for deploy, that are waiting for colleagues? Are you one of the thirsty workers that could go to the pub but is still waiting for everyone?
  24. Can you think of examples? Is the group of thirsty

    workers so big that whenever the chosen pub is closed, finding another pub in the busiest time is a difficult task?
  25. Can you think of examples? Are the changes you deploy

    so big, that when something unexpected happens, you have to re-sync and deploy everything again? Is the group of thirsty workers so big that whenever the chosen pub is closed, finding another pub in the busiest time is a difficult task?
  26. Can you think of examples? Do the pubs close or

    are packed before thirsty workers finally organize themselves and get out of the office?
  27. Can you think of examples? Do you loose your opportunity

    window getting all teams in sync for a release? Do the pubs close or are packed before thirsty workers finally organize themselves and get out of the office?
  28. Suggestions Find a pub that’s not far from the office.

    Have an agreement that every evening, if someone is thirsty, they just head to the pub, rather than organizing an outing.
  29. Suggestions Find a pub that’s not far from the office.

    Have an agreement that every evening, if someone is thirsty, they just head to the pub, rather than organizing an outing. Working at the pub?
  30. 1/2

  31. Not only working software but also well-crafted software Not only

    responding to change but also steadily adding value Not only individuals and interactions but a community of professionals Not only customer collaboration but also productive partnerships
  32. It has to be a description of a requirement and

    its business benefit, and a set of criteria by which we all agree that it is “done” Dan North
  33. Story: Account Holder withdraws cash As an Account Holder I

    want to withdraw cash from an ATM So that I can get money when the bank is closed
  34. Story: Account Holder withdraws cash As an Account Holder I

    want to withdraw cash from an ATM So that I can get money when the bank is closed Scenario 1: Account has sufficient funds Given the account balance is $100 And the card is valid And the machine contains enough money When the Account Holder requests $20 Then the ATM should dispense $20 And the account balance should be $80 And the card should be returned
  35. TDD practices Define the API you want to use Write

    code based on facts Write just enough code to make test pass Read the tests to learn about someone’s else code