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.

Passing The Joel Test In The PHP World

6,899 views

Published on

Published in: Technology
  • Be the first to comment

Passing The Joel Test In The PHP World

  1. 1. Passing the Joel Test in the PHP World
  2. 2. Who am I? <ul><li>Lorna Mitchell
  3. 3. PHP Developer at Ibuildings
  4. 4. Personal site http://lornajane.net
  5. 5. European Rep for phpwomen.org
  6. 6. PHPNW organiser
  7. 7. Twitter: @lornajane </li></ul>
  8. 8. Who is Joel? <ul><li>Joel Spolsky
  9. 9. Founder of Fog Creek Software
  10. 10. Blogs at http://joelonsoftware.com
  11. 11. Author of numerous books, particularly Best Software Writing
  12. 12. Co-founder of http://stackoverflow.com </li></ul>
  13. 13. What is the Joel Test? <ul><li>12 questions about your organisation
  14. 14. &quot;... a highly irresponsible, sloppy test to rate the quality of a software team&quot;
  15. 15. Rule-of-thumb for best practice
  16. 16. How does it apply to PHP? </li></ul>
  17. 17. The Joel Test (1-6) <ul><li>Do you use source control?
  18. 18. Can you make a build in one step?
  19. 19. Do you make daily builds?
  20. 20. Do you have a bug database?
  21. 21. Do you fix bugs before writing new code?
  22. 22. Do you have an up-to-date schedule? </li></ul>
  23. 23. The Joel Test (7-12) <ul><li>Do you have a spec?
  24. 24. Do programmers have quiet working conditions?
  25. 25. Do you use the best tools money can buy?
  26. 26. Do you have testers?
  27. 27. Do new candidates write code during their interview?
  28. 28. Do you do hallway usability testing? </li></ul>
  29. 29. What is the Joel Test For? <ul><li>Scoring your current organisation
  30. 30. Improving your current organisation
  31. 31. Scoring your next organisation </li></ul>http://jobs.joelonsoftware.com
  32. 32. Comparison Scores <ul><li>Microsoft: 12/12
  33. 33. Ibuildings: 8 or 9
  34. 34. eZ Components: 8 or 9
  35. 35. Red Embedded: 10
  36. 36. Your organisation … ? </li></ul>
  37. 38. Source Control <ul><li>Central storage
  38. 39. Change history
  39. 40. Enables collaboration
  40. 41. Manage multiple versions </li></ul>
  41. 42. Source Control Solutions <ul><li>CVS </li><ul><li>http://www.nongnu.org/cvs/ </li></ul><li>Subversion (svn) </li><ul><li>http://subversion.tigris.org/ </li></ul><li>Git </li><ul><li>http://git.or.cz/ </li></ul><li>Bazaar (bzr) </li><ul><li>http://www.bazaar-vcs.org/ </li></ul></ul>
  42. 43. Traditional Source Control user repo user user user
  43. 44. Distributed Source Control repo repo repo repo repo
  44. 45. Distributed Source Control <ul><li>Local machine has repository
  45. 46. Has full history
  46. 47. Commit locally
  47. 48. Commit globally later </li></ul>
  48. 49. Recommendations subversion Developers using command line IDE plugins git-svn, bzr-svn bridges Designers using TortoiseSVN Managers using WebSVN
  49. 50. Resources <ul><li>git-svn </li><ul><li>http://www.kernel.org/pub/software/scm/git/docs/git-svn.html </li></ul><li>bzr-svn </li><ul><li>http://bazaar-vcs.org/BzrForeignBranches/Subversion </li></ul><li>WebSVN </li><ul><li>http://www.websvn.info/ </li></ul><li>TortoiseSVN </li><ul><li>http://tortoisesvn.tigris.org/ </li></ul></ul>
  50. 51. Ask Me This In The Bar <ul><li>Branching
  51. 52. Tagging
  52. 53. Versions </li></ul>
  53. 56. PHP is Interpreted <ul><li>So do we care about builds? </li></ul>
  54. 57. What's in a Build? <ul><li>Code compilation
  55. 58. Document generation
  56. 59. Test suite execution and feedback
  57. 60. Application deployment
  58. 61. Packaging </li></ul>
  59. 62. Ask Me This In The Bar <ul><li>Deployment Scripts
  60. 63. Rollback
  61. 64. Databases </li></ul>
  62. 65. Sounds like Continuous Integration
  63. 66. Continuous Integration <ul><li>A running process
  64. 67. Responds to commit (and/or hooks)
  65. 68. Performs tasks
  66. 69. Gives feedback </li></ul>
  67. 70. Continuous Integration
  68. 71. Continuous Integration
  69. 72. Continuous Integration Solutions <ul><li>Hudson https://hudson.dev.java.net/
  70. 73. phpUnderControl http://phpundercontrol.org/
  71. 74. Xinc http://sourceforge.net/projects/xinc/ </li></ul>
  72. 75. <ul><li>COMPULSORY </li></ul>
  73. 76. I have a personal bug tracker
  74. 77. Bug Trackers <ul><li>Capture features/tasks
  75. 78. Who does what?
  76. 79. Progress for each task, keep updated
  77. 80. Can reallocate items </li></ul>
  78. 81. Bug Tracker Solutions <ul><li>Trac http://trac.edgewall.org/
  79. 82. Mantis http://www.mantisbt.org/
  80. 83. Jira http://www.atlassian.com/software/jira/
  81. 84. Eventum http://forge.mysql.com/wiki/Eventum/
  82. 85. Hosted Options </li><ul><li>github
  83. 86. sourceforge </li></ul></ul>
  84. 88. Joel Says <ul><li>Keep bugs near to zero
  85. 89. Cannot estimate bug fix time
  86. 90. Minimise unknowns </li></ul>
  87. 91. Capturing Bugs <ul><li>As a minimum, record bug
  88. 92. Buggy behaviour
  89. 93. Expected behaviour
  90. 94. Smallest possible replication case </li></ul>
  91. 95. How to Report a Bug <ul><li>http://www.chiark.greenend.org.uk/~sgtatham/bugs.html </li></ul>it's not worth reporting that the program generated an error unless you can also report what the error message was. if a computer does anything unexpected, freeze Some of the worst bug reports I've ever seen come from programmers Try to remember as much detail as you can about what you were doing to it when it did fall over, and if you see any patterns, mention them. Anything you can provide has to be some help.
  92. 98. Scheduling Workflow collect requirements write specification separate into discrete tasks estimate task duration
  93. 99. Who Estimates? <ul><li>Ideally the do-er
  94. 100. At least someone who could do it
  95. 101. Never cut estimates </li></ul>
  96. 102. Schedule <ul><li>What each person is doing
  97. 103. When it is due to finish
  98. 104. Can record progress/actions
  99. 105. What is next </li></ul>
  100. 106. Specification <ul><li>Holds the information needed for each task
  101. 107. May include acceptance criteria
  102. 108. More detail means fewer misunderstandings </li><ul><li>mockups/pictures
  103. 109. form fields </li></ul></ul>
  104. 110. Agile and Timings <ul><li>Agile development is reactive
  105. 111. Always on time at start of sprint
  106. 112. Estimates and spec detail can be prepared per sprint </li></ul>
  107. 113. Burndown Charts <ul><li>List of tasks
  108. 114. Tasks have estimates
  109. 115. Sprint is as many tasks as you have man-hours </li></ul>
  110. 116. Burndown Example
  111. 117. Burndown Example (Mon)
  112. 118. Burndown Example (Tue)
  113. 119. Burndown Example (Wed)
  114. 120. Burndown Example (Thu)
  115. 121. Burndown Example (Fri)
  116. 123. Interruptions Meetings Phone Email
  117. 125. Tools <ul><li>Software
  118. 126. Hardware
  119. 127. Resources
  120. 128. All cost money (or time, or effort) </li></ul>
  121. 129. Software <ul><li>IDE </li><ul><li>Zend Studio (£250)
  122. 130. Visual Studio (£200)
  123. 131. many free alternatives </li></ul><li>Graphics </li><ul><li>Photoshop (£450)
  124. 132. Paint Shop Pro (£400)
  125. 133. free alternatives </li></ul></ul>
  126. 134. Hardware
  127. 139. Resources <ul><li>Magazines </li><ul><li>php|architect (£25 / year) </li></ul><li>Site memberships </li><ul><li>Experts' Exchange (pay per question)
  128. 140. Safari (£155 / year) </li></ul><li>Books </li></ul>
  129. 141. Ask Me This In The Bar <ul><li>Free resources
  130. 142. How to train your employer </li></ul>
  131. 144. Assessing Candidate Code <ul><li>During interview
  132. 145. As part of recruitment process
  133. 146. Ibuildings uses this
  134. 147. The coding task makes a big impression on the candidate </li></ul>
  135. 150. Testers are not developers Developers are not testers
  136. 151. Tools for Testing in PHP <ul><li>Unit Testing </li><ul><li>PHPUnit
  137. 152. SimpleTest
  138. 153. phpt </li></ul><li>Browser Testing </li><ul><li>Selenium </li></ul></ul>
  139. 154. Points Missing from Joel's Test?
  140. 155. Do you use test-driven development?
  141. 156. Do you avoid reinventing the wheel?
  142. 157. Do you help your employees to develop themselves professionally?
  143. 158. And?
  144. 159. http://joind.in/612

×