Passing the Joel Test in the PHP World
Who am I? <ul><li>Lorna Mitchell
PHP Developer at Ibuildings
Personal site  http://lornajane.net
European Rep for phpwomen.org
PHPNW organiser
Twitter: @lornajane </li></ul>
Who is Joel? <ul><li>Joel Spolsky
Founder of Fog Creek Software
Blogs at  http://joelonsoftware.com
Author of numerous books, particularly  Best Software Writing
Co-founder of  http://stackoverflow.com </li></ul>
What is the Joel Test? <ul><li>12 questions about your organisation
&quot;... a highly irresponsible, sloppy test to rate the quality of a software team&quot;
Rule-of-thumb for best practice
How does it apply to PHP? </li></ul>
The Joel Test (1-6) <ul><li>Do you use source control?
Can you make a build in one step?
Do you make daily builds?
Do you have a bug database?
Do you fix bugs before writing new code?
Do you have an up-to-date schedule? </li></ul>
The Joel Test (7-12) <ul><li>Do you have a spec?
Do programmers have quiet working conditions?
Do you use the best tools money can buy?
Do you have testers?
Do new candidates write code during their interview?
Do you do hallway usability testing? </li></ul>
What is the Joel Test For? <ul><li>Scoring your current organisation
Improving your current organisation
Scoring your next organisation </li></ul>http://jobs.joelonsoftware.com
Comparison Scores <ul><li>Microsoft: 12/12
Ibuildings: 8 or 9
eZ Components: 8 or 9
Red Embedded: 10
Your organisation … ? </li></ul>
 
Source Control <ul><li>Central storage
Change history
Enables collaboration
Manage multiple versions </li></ul>
Source Control Solutions <ul><li>CVS  </li><ul><li>http://www.nongnu.org/cvs/ </li></ul><li>Subversion (svn)  </li><ul><li...
Traditional Source Control user repo user user user
Distributed Source Control repo repo repo repo repo
Distributed Source Control <ul><li>Local machine has repository
Has full history
Commit locally
Commit globally later </li></ul>
Recommendations subversion Developers using command line IDE plugins git-svn, bzr-svn bridges Designers using TortoiseSVN ...
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 ...
Ask Me This In The Bar <ul><li>Branching
Tagging
Versions </li></ul>
 
 
PHP is Interpreted <ul><li>So do we care about builds? </li></ul>
What's in a Build? <ul><li>Code compilation
Document generation
Test suite execution and feedback
Application deployment
Packaging </li></ul>
Ask Me This In The Bar <ul><li>Deployment Scripts
Rollback
Databases </li></ul>
Sounds like  Continuous Integration
Continuous Integration <ul><li>A running process
Responds to commit (and/or hooks)
Performs tasks
Gives feedback </li></ul>
Continuous Integration
Continuous Integration
Continuous Integration Solutions <ul><li>Hudson  https://hudson.dev.java.net/
phpUnderControl  http://phpundercontrol.org/
Upcoming SlideShare
Loading in...5
×

Passing The Joel Test In The PHP World

6,149

Published on

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

No Downloads
Views
Total Views
6,149
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
73
Comments
0
Likes
12
Embeds 0
No embeds

No notes for slide
  • svn: existing backups, hooks, stable server
  • http://www.flickr.com/photos/barnaby_s/2689622236/
  • caches like APC actually do compile + store
  • bug trackers integrate with source control
  • Users like this are like a mongoose backed into a corner: with its back to the wall and seeing certain death staring it in the face, it attacks frantically, because doing something has to be better than doing nothing. This is not well adapted to the type of problems computers produce. Instead of being a mongoose, be an antelope. When an antelope is confronted with something unexpected or frightening, it freezes. It stays absolutely still and tries not to attract any attention, while it stops and thinks and works out the best thing to do. (If antelopes had a technical support line, it would be telephoning it at this point.) Then, once it has decided what the safest thing to do is, it does it.
  • drop hourly rates absorb overrun BUT DO NOT CUT ESTIMATES
  • http://www.flickr.com/photos/uk_parliament/2524365036/
  • Phone: and those nearby Meetings: and what time of day Email: expected instant response? Its about control Telecommute helps
  • http://www.flickr.com/photos/stefanyasin/2434657543/
  • http://www.flickr.com/photos/spadgy/313251515/
  • http://www.flickr.com/photos/artnow/1351601518/sizes/l/
  • http://www.flickr.com/photos/bfionline/3117948329/
  • For each task write test test fails write code test passes End up with a suite of tests covering application ties in to continuous integration and automated testing
  • PEAR/PECL Frameworks Javascript libraries/frameworks Beware license restrictions
  • Resources Courses Events Encourage advancement
  • Transcript of "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
    1. A particular slide catching your eye?

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

    ×