Enterprise Workflows When You Aren't Enterprise <ul>Chris Tankersley </ul>E-mail:  [email_address] Twitter:  @dragonmantan...
Who Are You and Why Are You In My House? Chris Tankersley Been doing PHP for almost 8 years now Lots of projects no one us...
What is 'Enterprise'? <ul><li>Big, Robust
Structured
Standardized
Overly Complicated
Unrealistic
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ </li></ul>
What is 'Enterprise'? <ul><li>Big, Robust
Structured
Standardized
Overly Complicated
Unrealistic
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ </li></ul>
How Do You Become Enterprise? <ul><li>Pass (parts of) the Joel Test
Project Management
Managed Environments
Automated Processes </li></ul>
The Joel Test <ul><li>Do you have a spec?
Do you use source control?
Can you make a build in one step?
Do you make daily builds?
Do you have an up-to-date schedule?
Do you have a bug database? </li></ul>
Project Management You can't do work unless you know what needs to be done <ul><li>Pick a Project Management Style </li><u...
SCRUM
Kanban </li></ul><li>Generate a functional and technical spec
Stick With It </li></ul>
Modified Waterfall
Scrum
Kanban
Project Management Tools <ul><li>Trac – Wiki, SCM browser, and Bug Tracker
Basecamp HQ
Microsoft Project
TaskJuggler
Excel
Upcoming SlideShare
Loading in...5
×

Enterprise Workflows When You Aren't Enterprise

768

Published on

Enterprise Workflow presentation given at Northwest Ohio PHP User Group

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
768
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Enterprise Workflows When You Aren't Enterprise

  1. 1. Enterprise Workflows When You Aren't Enterprise <ul>Chris Tankersley </ul>E-mail: [email_address] Twitter: @dragonmantank Identi.ca: dragonmantank
  2. 2. Who Are You and Why Are You In My House? Chris Tankersley Been doing PHP for almost 8 years now Lots of projects no one uses released under the BSD license
  3. 3. What is 'Enterprise'? <ul><li>Big, Robust
  4. 4. Structured
  5. 5. Standardized
  6. 6. Overly Complicated
  7. 7. Unrealistic
  8. 8. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ </li></ul>
  9. 9. What is 'Enterprise'? <ul><li>Big, Robust
  10. 10. Structured
  11. 11. Standardized
  12. 12. Overly Complicated
  13. 13. Unrealistic
  14. 14. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ </li></ul>
  15. 15. How Do You Become Enterprise? <ul><li>Pass (parts of) the Joel Test
  16. 16. Project Management
  17. 17. Managed Environments
  18. 18. Automated Processes </li></ul>
  19. 19. The Joel Test <ul><li>Do you have a spec?
  20. 20. Do you use source control?
  21. 21. Can you make a build in one step?
  22. 22. Do you make daily builds?
  23. 23. Do you have an up-to-date schedule?
  24. 24. Do you have a bug database? </li></ul>
  25. 25. Project Management You can't do work unless you know what needs to be done <ul><li>Pick a Project Management Style </li><ul><li>Modified Waterfall
  26. 26. SCRUM
  27. 27. Kanban </li></ul><li>Generate a functional and technical spec
  28. 28. Stick With It </li></ul>
  29. 29. Modified Waterfall
  30. 30. Scrum
  31. 31. Kanban
  32. 32. Project Management Tools <ul><li>Trac – Wiki, SCM browser, and Bug Tracker
  33. 33. Basecamp HQ
  34. 34. Microsoft Project
  35. 35. TaskJuggler
  36. 36. Excel
  37. 37. Whiteboard
  38. 38. Corkboard </li></ul>
  39. 39. Managed Environments <ul><li>A work area with a specific purpose
  40. 40. Should have at least 3 areas </li><ul><li>Development
  41. 41. Quality
  42. 42. Production </li></ul><li>If you can, add in 'Integration' before Production
  43. 43. Code always moves up, not down, the chain </li></ul>
  44. 44. Development <ul><li>Here Be Dragons
  45. 45. Code here is never considered stable
  46. 46. Can be any machine (local, development, a VM, whatever)
  47. 47. Test Driven Development starts here </li></ul>
  48. 48. Quality <ul><li>Code should work here
  49. 49. This is for QA testers
  50. 50. Should be close to Production
  51. 51. Should have logging and debug on </li></ul>
  52. 52. Integration <ul><li>Production-Lite
  53. 53. Used to catch deployment bugs
  54. 54. Uses Production data
  55. 55. Should be exactly the same build as Production </li><ul><li>Same OS, setup, and version levels of software </li></ul></ul>
  56. 56. Production <ul><li>Here Be Dragons
  57. 57. Live data
  58. 58. No Touching! </li></ul>
  59. 59. Environment Tools <ul><li>VMWare Workstation/Fusion/Server/ESXi
  60. 60. Oracle VirtualBox
  61. 61. OS-Native Builds </li><ul><li>OSX – homebrew
  62. 62. Windows – Packages and cygwin
  63. 63. Linux – Probably already there </li></ul><li>The Cloud </li><ul><li>EC2
  64. 64. Rackspace Cloud </li></ul></ul>
  65. 65. Glue Software
  66. 66. Continuous Integration <ul><li>Act of automating build tasks
  67. 67. How is a PHP Project built? </li><ul><li>Check out the code from the SCM
  68. 68. Run unit tests
  69. 69. Run code helpers
  70. 70. Build Documentation
  71. 71. Packaging </li></ul></ul>
  72. 72. Continuous Integration Software <ul><li>PhpUnderControl
  73. 73. Hudson/Jenkins
  74. 74. Phing and xinc </li></ul>
  75. 75. Source Control <ul><li>Pick One – Doesn't Matter
  76. 76. Just make sure it works with your CI controller </li></ul>
  77. 77. Hook it all together
  78. 78. Starting a Project <ul><li>Get/write the spec
  79. 79. Break it down into work units </li><ul><li>Design Schema
  80. 80. Set up server
  81. 81. Write API for user authentication </li></ul><li>Put all the tasks up for choosing </li></ul>
  82. 82. Choose Your Tasks <ul><li>Go to the list of tasks
  83. 83. Pick something that needs to be worked on </li><ul><li>Waterfall should have a list of objectives
  84. 84. Scrum should do this at the beginning of the Sprint
  85. 85. Kanban should do this every time a work unit is finished </li></ul><li>Assign and Begin Work </li></ul>
  86. 86. Development <ul><li>Do your initial coding (TDD, BDD, whatever)
  87. 87. Commit in functional chunks. Don't check in half-baked code
  88. 88. When you are finished with a feature, promote and tell QA </li></ul>
  89. 89. Development -> Quality <ul><li>Continuous Integration kicks in </li><ul><li>Let it manage code movement to Quality </li></ul><li>Only passing code gets put into Quality </li></ul>
  90. 90. Quality <ul><li>Do main testing here
  91. 91. Write down bugs/defects </li><ul><li>If they are in relation to a feature being worked on, let the developer know
  92. 92. If they are not, put in the list of things to do </li></ul><li>Only QA should close bugs/tickets </li></ul>
  93. 93. Quality -> Integration <ul><li>Tag the code in a meaningful way
  94. 94. Deployment is tested </li><ul><li>Download Production data
  95. 95. Run update scripts
  96. 96. Promote Code
  97. 97. Check if anything broke </li></ul><li>Usually a pass/fail </li></ul>
  98. 98. Quality/Integration -> Production <ul><li>Deploy the Code
  99. 99. Return to 'Choose Your Tasks' </li></ul>
  100. 100. What does all this lead to?
  101. 101. Continuous Deployment
  102. 102. The Holy Grail <ul><li>As work is finished, it is put into Production
  103. 103. Everything is automated after Deployment </li><ul><li>You develop, it gets automatically tested, and CI will test deployment and put into Production </li></ul><li>Promotions to Production happen all the time
  104. 104. Small promotions tend to break less than large ones, and when they do break, are easier to fix </li></ul>
  105. 105. My Workflow <ul><li>Not perfect by any means
  106. 106. Use Kanban
  107. 107. Develop on my local machine
  108. 108. Get feature, make branch, test, merge, commit
  109. 109. Starting to use Jenkins to do CI </li><ul><li>phpUnit, phpCodeSniffer </li></ul><li>Manually promote code to Production
  110. 110. Rinse, repeat </li></ul>
  111. 111. Any Questions?
  112. 112. Thanks!
  113. 113. Credits <ul><li>Waterfall Image </li><ul><li>http://en.wikipedia.org/wiki/Waterfall_model </li></ul><li>SCRUM Image </li><ul><li>http://en.wikipedia.org/wiki/Scrum_%28development%29 </li></ul><li>Kanban Image </li><ul><li>http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×