Passing the Joel Test in the PHP World (phpbnl10)
-
Upload
lorna-mitchell -
Category
Technology
-
view
7.720 -
download
1
description
Transcript of Passing the Joel Test in the PHP World (phpbnl10)
Passing the Joel Test in the PHP World
Who am I?● Lorna Mitchell● PHP Developer at Ibuildings● Editor at http://techportal.ibuildings.com● Host at DPC 2010● Personal site http://lornajane.net● Twitter: @lornajane
Who is Joel?● 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
What is the Joel Test?● 12 questions about your organisation● "... a highly irresponsible, sloppy test to rate the
quality of a software team"● Rule-of-thumb for best practice● How does it apply to PHP?
The Joel Test (1-6)● 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?
The Joel Test (7-12)● 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?
What is the Joel Test For?● Scoring your current organisation● Improving your current organisation● Scoring your next organisation
http://jobs.joelonsoftware.com
Source Control● Central storage● Change history● Enables collaboration● Manage multiple versions
Source Control Solutions● CVS
● http://www.nongnu.org/cvs/● Subversion (svn)
● http://subversion.tigris.org/● Git
● http://git.or.cz/● Bazaar (bzr)
● http://www.bazaar-vcs.org/
Centralised Source Control
userrepo
user
useruser
Distributed Source Control
reporepo
reporepo
repo
Distributed Source Control● Local machine has repository● Has full history● Commit locally● Commit globally later
Recommendations
subversion
Developersusing command lineIDE pluginsgit-svn, bzr-svn bridges
Designersusing TortoiseSVN
Managersusing WebSVN
Resources● git-svn
● http://www.kernel.org/pub/software/scm/git/docs/git-svn.html● bzr-svn
● http://bazaar-vcs.org/BzrForeignBranches/Subversion● WebSVN
● http://www.websvn.info/● TortoiseSVN
● http://tortoisesvn.tigris.org/
PHP is Interpreted● So do we care about builds?
What's in a Build?● Code compilation● Document generation● Test suite execution and feedback● Packaging● Application deployment
Sounds like ...Continuous Integration
and Deployment
Deployment● Automated deployment
● upload code● apply database patches● handle uploaded files and existing database● populate caches● switch over to new version
● Automated rollback
Continuous Integration● A running process● Responds to commit (and/or hooks)● Performs tasks
● No "forgetting" to run the tests● Gives feedback
Continuous Integration
Continuous Integration
Continuous Integration Solutions● Hudson https://hudson.dev.java.net/● phpUnderControl http://phpundercontrol.org/● Xinc http://sourceforge.net/projects/xinc/
● COMPULSORY
I have a personal bug tracker
Bug Trackers● Capture features/tasks● Who does what?● Progress for each task, keep updated● Can reallocate items
Bug Tracker Solutions● Trac http://trac.edgewall.org/● Mantis http://www.mantisbt.org/● Jira http://www.atlassian.com/software/jira/● Eventum http://forge.mysql.com/wiki/Eventum/● RedMine http://www.redmine.org● Arbit http://arbittracker.org● Mtrack http://bitbucket.org/wez/mtrack/
Joel Says● Keep bugs near to zero● Cannot estimate bug fix time● Minimise unknowns
Capturing Bugs● As a minimum, record bug● Buggy behaviour● Expected behaviour● Smallest possible replication case
How to Report a Bug● http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
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.
http://tinyurl.com/8vx3s
Scheduling Workflowcollect
requirements
write specification
separate into discrete tasks
estimate task duration
Who Estimates?● Ideally the do-er● At least someone who could do it● Never cut estimates
Specification● Holds the information needed for each task● May include acceptance criteria● More detail means fewer misunderstandings
● mockups/pictures● form fields
Schedule● What each person is doing● When it is due to finish● Can record progress/actions● What is next
Agile and Timings● Agile development is reactive● Always on time at start of sprint● Estimates and spec detail can
be prepared per sprint
Burndown Charts● List of tasks● Tasks have estimates● Sprint is as many tasks as you have man-hours
Burndown Example
Burndown Example
Task Est imate Mon Tue Wed ThuAssemble pre-built frame 2 2 2 2 2 2Paint exterior 2 2 2 2 2 2
1 1 1 1 1 1Decorate bedrooms 8 8 8 8 8 8Decorate kitchen 7 7 7 7 7 7Decorate bathroom 5 5 5 5 5 5Decorate reception rooms 7 7 7 7 7 7Fit carpets 5 5 5 5 5 5Add furniture 1 1 1 1 1 1
Fr i
Paint windowframes
Burndown Example
Burndown Example
Task Est imate Mon Tue Wed ThuAssemble pre-built frame 2 0 0 0 0 0Paint exterior 2 0 0 0 0 0
1 1 1 1 1 1Decorate bedrooms 8 8 8 8 8 8Decorate kitchen 7 5 5 5 5 5Decorate bathroom 5 5 5 5 5 5Decorate reception rooms 7 7 7 7 7 7Fit carpets 5 5 5 5 5 5Add furniture 1 1 1 1 1 1
Fr i
Paint windowframes
Burndown Example
Burndown Example
Burndown Example
Interruptions
Meetings
Phone
Tools● Software● Hardware● Resources● All cost money (or time, or effort)
Software● IDE
● Zend Studio● Visual Studio● many free alternatives
● Graphics● Photoshop● Paint Shop Pro● free alternatives
Hardware
Resources● Magazines
● php|architect● Site memberships
● Experts' Exchange (pay per question)● Safari
● Books● Conferences/Events
Assessing Candidate Code● During interview● As part of recruitment process● Ibuildings uses this● The coding task makes a big impression on the
candidate
Testers are not developers
Developers are not testers
Tools for Testing in PHP● Unit Testing
● PHPUnit http://phpunit.de● SimpleTest http://simpletest.org● phpt http://qa.php.net/write-test.php
● Browser Testing● Selenium http://seleniumhq.org/
That was the Joel Test... what's missing?
Do you use test-driven development?
Do you avoid reinventing the wheel?
Do you support the professional development
of your employees?
And?