Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Encouraging Agile Discipline

936 views

Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Encouraging Agile Discipline

  1. 1. Encouraging Agile Discipline Motivating developers to follow agile practices This work is released under the terms of the Ashley Moran Creative Commons Attribution-Share Alike licence PatchSpace Ltd
  2. 2. The Business Problem
  3. 3. The Business Problem You have have to upgrade your legacy software to keep your competitive advantage
  4. 4. The Business Problem You have have to upgrade your legacy software to keep your competitive advantage Upgrading your legacy software is taking too long - you’re falling behind and wasting money
  5. 5. The Business Problem You have have to upgrade your legacy software to keep your competitive advantage Upgrading your legacy software is taking too long - you’re falling behind and wasting money Software is a technical endeavour, so there’s a technical solution to your business problem
  6. 6. The Business Problem You have have to upgrade your legacy software to keep your competitive advantage Upgrading your legacy software is taking too long - you’re falling behind and wasting money Software is a technical endeavour, so there’s a technical solution to your business problem Right?
  7. 7. The Business Problem
  8. 8. Some Technical Solutions
  9. 9. Some Technical Solutions Move to a more powerful language Python, Ruby, Erlang, Smalltalk
  10. 10. Some Technical Solutions Move to a more powerful language Python, Ruby, Erlang, Smalltalk Create a more flexible architecture Marc Johnson: Laying Your Legacy to REST
  11. 11. Some Technical Solutions Move to a more powerful language Python, Ruby, Erlang, Smalltalk Create a more flexible architecture Marc Johnson: Laying Your Legacy to REST Go “Agile”
  12. 12. Some Technical Solutions
  13. 13. Our Example Problem
  14. 14. Our Example Problem We want our HTML web app available as a web service...
  15. 15. Our Example Problem We want our HTML web app available as a web service... ...but half of our business logic is in the JavaScript and half is on the server.
  16. 16. Our Example Problem We want our HTML web app available as a web service... ...but half of our business logic is in the JavaScript and half is on the server. We need to refactor our code
  17. 17. Our Example Problem We want our HTML web app available as a web service... ...but half of our business logic is in the JavaScript and half is on the server. We need to refactor our code We’re scared to refactor because previous attempts have broken other parts of our app
  18. 18. Our Example Problem We want our HTML web app available as a web service... ...but half of our business logic is in the JavaScript and half is on the server. We need to refactor our code We’re scared to refactor because previous attempts have broken other parts of our app to be continued...
  19. 19. The Underlying Problem
  20. 20. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them
  21. 21. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them You could have followed good practices with your old technologies
  22. 22. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them You could have followed good practices with your old technologies Fred Brooks wrote automated tests in the 1970s
  23. 23. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them You could have followed good practices with your old technologies Fred Brooks wrote automated tests in the 1970s You still have the same team of developers for the new application that you had for the old one
  24. 24. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them You could have followed good practices with your old technologies Fred Brooks wrote automated tests in the 1970s You still have the same team of developers for the new application that you had for the old one Some of them see the need to improve the process
  25. 25. The Underlying Problem Software technologies don’t make you follow good practices, they just remove obstacles to them You could have followed good practices with your old technologies Fred Brooks wrote automated tests in the 1970s You still have the same team of developers for the new application that you had for the old one Some of them see the need to improve the process Some of them don’t
  26. 26. The Underlying Problem
  27. 27. Our Example Problem ctnd.
  28. 28. Our Example Problem ctnd. ...we were left needing to refactor our code
  29. 29. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite
  30. 30. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one?
  31. 31. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one? Need unapparent?
  32. 32. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one? Need unapparent? Perceived lack of time?
  33. 33. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one? Need unapparent? Perceived lack of time? Apathy?
  34. 34. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one? Need unapparent? Perceived lack of time? Apathy? Oh shit, it’s too late
  35. 35. Our Example Problem ctnd. ...we were left needing to refactor our code In order to refactor we need a comprehensive test suite Why don’t we have one? Need unapparent? Perceived lack of time? Apathy? Oh shit, it’s too late If we tried to create one, would we be successful?
  36. 36. A Field Guide to Post-Legacy Developers
  37. 37. A Field Guide to Post-Legacy Developers Enthusiastic “The last project was slow and painful. I was here deploying at 2am on Friday night and we spent days firefighting the week after. I want to learn how to release software smoothly like the successful agile teams.”
  38. 38. A Field Guide to Post-Legacy Developers Enthusiastic “The last project was slow and painful. I was here deploying at 2am on Friday night and we spent days firefighting the week after. I want to learn how to release software smoothly like the successful agile teams.” Neutral “This agile thing sounds like it could work, but I’m not convinced. It seems like a lot of work for me. We already know our software works, why should we spend time refactoring and testing it?”
  39. 39. A Field Guide to Post-Legacy Developers Enthusiastic “The last project was slow and painful. I was here deploying at 2am on Friday night and we spent days firefighting the week after. I want to learn how to release software smoothly like the successful agile teams.” Neutral “This agile thing sounds like it could work, but I’m not convinced. It seems like a lot of work for me. We already know our software works, why should we spend time refactoring and testing it?” Lazy “Why should I learn agile? I’ve been programming the same way for years and I’m not going to change now.” “By the way it’s 5.30pm, I’m off home. Have fun with the deploy.”
  40. 40. A Field Guide to Post-Legacy Developers
  41. 41. Stick vs Carrot
  42. 42. Stick vs Carrot Are the members of your team enthusiastic, neutral, or lazy?
  43. 43. Stick vs Carrot Are the members of your team enthusiastic, neutral, or lazy? Will they try not to break the continuous integration server...
  44. 44. Stick vs Carrot Are the members of your team enthusiastic, neutral, or lazy? Will they try not to break the continuous integration server... because they want to to keep the code deployable?
  45. 45. Stick vs Carrot Are the members of your team enthusiastic, neutral, or lazy? Will they try not to break the continuous integration server... because they want to to keep the code deployable? or because they get shouted at?
  46. 46. Stick vs Carrot
  47. 47. Skill vs Discipline
  48. 48. Skill vs Discipline Technical skill Low High Poor Daily WTF Nerd Discipline Rockstar Good N00b developer
  49. 49. Skill vs Discipline Technical skill Low High Poor Daily WTF Nerd Discipline Rockstar Good N00b developer Do you need to move the team in this direction?
  50. 50. Skill vs Discipline Technical skill Low High Or do you Poor Daily WTF Nerd Discipline just need more nerds? Rockstar Good N00b developer Do you need to move the team in this direction?
  51. 51. Skill vs Discipline Or do you just need more nerds?
  52. 52. Skill vs Discipline
  53. 53. Agile Practices (not an exhaustive list)
  54. 54. Agile Practices (not an exhaustive list) Acceptance tests Automated deployments Unit tests Continuous integration Refactoring Simplicity / elegance Source control Collective ownership Knowledge sharing Coding standards
  55. 55. Agile Practices (not an exhaustive list)
  56. 56. Agile needs...
  57. 57. Agile needs... Technical skill Low High Poor Simplicity / elegance Discipline Continuous integration Source control Test-driven development Collective ownership Refactoring Good Coding standards Building deployment scripts Basic testing Building CI environments Using deployment scripts
  58. 58. Agile needs... Technical skill Low High Poor Simplicity / elegance Discipline Continuous integration Source control Test-driven development Collective ownership Refactoring Good Coding standards Building deployment scripts Basic testing Building CI environments Using deployment scripts Discipline is your initial bottle-neck to becoming agile
  59. 59. Agile needs...
  60. 60. The Underlying Solution
  61. 61. The Underlying Solution A highly-disciplined bunch of über-geeks
  62. 62. The Underlying Solution A highly-disciplined bunch of über-geeks If you are willing to pay 50k+ a head
  63. 63. The Underlying Solution A highly-disciplined bunch of über-geeks If you are willing to pay 50k+ a head Maybe
  64. 64. The Underlying Solution A highly-disciplined bunch of über-geeks If you are willing to pay 50k+ a head Maybe Maybe not
  65. 65. The Underlying Solution A highly-disciplined bunch of über-geeks If you are willing to pay 50k+ a head Maybe Maybe not To upgrade your code from legacy to agile, upgrade your team from legacy to agile
  66. 66. The Underlying Solution

×