SlideShare a Scribd company logo
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


           repo
                         user


 user
                        user
           user
Distributed Source Control


            repo
                         repo


 repo
                        repo
           repo
Distributed Source Control
●
    Local machine has repository
●
    Has full history
●
    Commit locally
●
    Commit globally later
Recommendations

                     subversion




Designers                                      Managers
using TortoiseSVN                              using WebSVN
                    Developers
                    using command line
                    IDE plugins
                    git-svn, bzr-svn bridges
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://tinyurl.com/8vx3s
  ●
      http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
                     if a computer does anything unexpected, freeze


                                       Try to remember as much detail as

it's not worth reporting that the      you can about what you were doing to

program generated an error             it when it did fall over, and if you see

unless you can also report what        any patterns, mention them. Anything

the error message was.                 you can provide has to be some help.


             Some of the worst bug reports I've ever
             seen come from programmers
     
     
Scheduling Workflow

   collect
requirements



    write       separate into
specification   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 im at e M on Tue Wed Thu Fr i
Assemble pre-built frame          2     2    2    2    2       2
Paint exterior                    2     2    2    2    2       2
Paint windowframes                1     1    1    1    1       1
Decorate bedrooms                 8     8    8    8    8       8
Decorate kitchen                  7     7    7    7    7       7
Decorate bathroom                 5     5    5    5    5       5
Decorate reception rooms          7     7    7    7    7       7
Fit carpets                       5     5    5    5    5       5
Add furniture                     1     1    1    1    1       1
Burndown Example
Burndown Example


Task                       Est im at e M on Tue Wed Thu Fr i
Assemble pre-built frame          2     0    0    0    0       0
Paint exterior                    2     0    0    0    0       0
Paint windowframes                1     1    1    1    1       1
Decorate bedrooms                 8     8    8    8    8       8
Decorate kitchen                  7     5    5    5    5       5
Decorate bathroom                 5     5    5    5    5       5
Decorate reception rooms          7     7    7    7    7       7
Fit carpets                       5     5    5    5    5       5
Add furniture                     1     1    1    1    1       1
Burndown Example
Burndown Example
Burndown Example
     
Interruptions



     Meetings



                Email


      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?
?
              Questions?

http://joind.in/1249

                        

More Related Content

What's hot

TDD in Go with Ginkgo and Gomega
TDD in Go with Ginkgo and GomegaTDD in Go with Ginkgo and Gomega
TDD in Go with Ginkgo and GomegaEddy Reyes
 
Leaning on the two Ts
Leaning on the two TsLeaning on the two Ts
Leaning on the two TsMani Sarkar
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytestBrianna Laugher
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy CodeAdam Culp
 
QA 4 python
QA 4 pythonQA 4 python
QA 4 pythonBeDjango
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 
Mocking in python
Mocking in pythonMocking in python
Mocking in pythonOoblioob
 
TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App EngineRicardo Bánffy
 
Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Vijay Kumbhar
 
Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build processBryan Agee
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patternstdc-globalcode
 
Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2Andrew Yatsenko
 
ES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game KataES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game KataDavid Rodenas
 
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Geshan Manandhar
 

What's hot (20)

User story workflow (eng)
User story workflow (eng)User story workflow (eng)
User story workflow (eng)
 
TDD in Go with Ginkgo and Gomega
TDD in Go with Ginkgo and GomegaTDD in Go with Ginkgo and Gomega
TDD in Go with Ginkgo and Gomega
 
Tdd presentation
Tdd presentationTdd presentation
Tdd presentation
 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
 
Leaning on the two Ts
Leaning on the two TsLeaning on the two Ts
Leaning on the two Ts
 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytest
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
 
QA 4 python
QA 4 pythonQA 4 python
QA 4 python
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
Mocking in python
Mocking in pythonMocking in python
Mocking in python
 
TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App Engine
 
Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy Test Driven Development Methodology and Philosophy
Test Driven Development Methodology and Philosophy
 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
 
Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build process
 
Neo4j Graph Database, from PHP
Neo4j Graph Database, from PHPNeo4j Graph Database, from PHP
Neo4j Graph Database, from PHP
 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
 
Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2Performance profiling and testing of symfony application 2
Performance profiling and testing of symfony application 2
 
ES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game KataES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game Kata
 
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...
 

Similar to Passing the Joel Test in the PHP World (phpbnl10)

Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP WorldPassing The Joel Test In The PHP World
Passing The Joel Test In The PHP WorldLorna Mitchell
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplateStanislav Petrov
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by stepDaniel Fahlke
 
Best Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentBest Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentShahar Evron
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...dcieslak
 
Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development toolsSimon Dittlmann
 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration StoryAnton Serdyuk
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
 
How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...Max Barrass
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional ProgrammerDave Cross
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Kris Buytaert
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering TeamsLars Thorup
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testingEngineor
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at FrosconKris Buytaert
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDale Lane
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowAnn Cascarano
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with PuppetKris Buytaert
 
What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?Juan Picado
 

Similar to Passing the Joel Test in the PHP World (phpbnl10) (20)

UPC Plone Testing Talk
UPC Plone Testing TalkUPC Plone Testing Talk
UPC Plone Testing Talk
 
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP WorldPassing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by step
 
Best Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentBest Practices in PHP Application Deployment
Best Practices in PHP Application Deployment
 
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...
 
Tooling Matters - Development tools
Tooling Matters - Development toolsTooling Matters - Development tools
Tooling Matters - Development tools
 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 
How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...How to establish ways of working that allows shifting-left of the automation ...
How to establish ways of working that allows shifting-left of the automation ...
 
The Professional Programmer
The Professional ProgrammerThe Professional Programmer
The Professional Programmer
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
 
High Performance Software Engineering Teams
High Performance Software Engineering TeamsHigh Performance Software Engineering Teams
High Performance Software Engineering Teams
 
Debugging 2013- Lars pedersen
Debugging 2013- Lars pedersenDebugging 2013- Lars pedersen
Debugging 2013- Lars pedersen
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
 
Debugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile DevicesDebugging Web Apps on Real Mobile Devices
Debugging Web Apps on Real Mobile Devices
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress Workflow
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?What can possibly go wrong if i dont e2 e test my packages?
What can possibly go wrong if i dont e2 e test my packages?
 

More from Lorna Mitchell

Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API DesignLorna Mitchell
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open SourceLorna Mitchell
 
Business 101 for Developers: Time and Money
Business 101 for Developers: Time and MoneyBusiness 101 for Developers: Time and Money
Business 101 for Developers: Time and MoneyLorna Mitchell
 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knewLorna Mitchell
 
Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)Lorna Mitchell
 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP StackLorna Mitchell
 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source ControlLorna Mitchell
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service DesignLorna Mitchell
 
Coaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To FishCoaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To FishLorna Mitchell
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation TutorialLorna Mitchell
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHPLorna Mitchell
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHPLorna Mitchell
 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?Lorna Mitchell
 

More from Lorna Mitchell (20)

OAuth: Trust Issues
OAuth: Trust IssuesOAuth: Trust Issues
OAuth: Trust Issues
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API Design
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
 
Business 101 for Developers: Time and Money
Business 101 for Developers: Time and MoneyBusiness 101 for Developers: Time and Money
Business 101 for Developers: Time and Money
 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knew
 
Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)
 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
 
Join In With Joind.In
Join In With Joind.InJoin In With Joind.In
Join In With Joind.In
 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP Stack
 
Going Freelance
Going FreelanceGoing Freelance
Going Freelance
 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source Control
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
 
Coaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To FishCoaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To Fish
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
 
Example Presentation
Example PresentationExample Presentation
Example Presentation
 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?
 

Recently uploaded

Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxEasyPrinterHelp
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationZilliz
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfEasyPrinterHelp
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon
 

Recently uploaded (20)

Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
Buy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdfBuy Epson EcoTank L3210 Colour Printer Online.pdf
Buy Epson EcoTank L3210 Colour Printer Online.pdf
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 

Passing the Joel Test in the PHP World (phpbnl10)

  • 1. Passing the Joel Test in the PHP World    
  • 2. 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
  • 3. 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
  • 4. 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?
  • 5. 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?
  • 6. 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?
  • 7. What is the Joel Test For? ● Scoring your current organisation ● Improving your current organisation ● Scoring your next organisation http://jobs.joelonsoftware.com
  • 8.    
  • 9. Source Control ● Central storage ● Change history ● Enables collaboration ● Manage multiple versions
  • 10. 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/
  • 11. Centralised Source Control repo user user user user
  • 12. Distributed Source Control repo repo repo repo repo
  • 13. Distributed Source Control ● Local machine has repository ● Has full history ● Commit locally ● Commit globally later
  • 14. Recommendations subversion Designers Managers using TortoiseSVN using WebSVN Developers using command line IDE plugins git-svn, bzr-svn bridges
  • 15. 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/
  • 16.    
  • 17.    
  • 18. PHP is Interpreted ● So do we care about builds?
  • 19. What's in a Build? ● Code compilation ● Document generation ● Test suite execution and feedback ● Packaging ● Application deployment
  • 20. Sounds like ... Continuous Integration and Deployment    
  • 21. Deployment ● Automated deployment ● upload code ● apply database patches ● handle uploaded files and existing database ● populate caches ● switch over to new version ● Automated rollback
  • 22. Continuous Integration ● A running process ● Responds to commit (and/or hooks) ● Performs tasks ● No "forgetting" to run the tests ● Gives feedback
  • 25. Continuous Integration Solutions ● Hudson https://hudson.dev.java.net/ ● phpUnderControl http://phpundercontrol.org/ ● Xinc http://sourceforge.net/projects/xinc/
  • 26. COMPULSORY    
  • 27. I have a personal bug tracker
  • 28. Bug Trackers ● Capture features/tasks ● Who does what? ● Progress for each task, keep updated ● Can reallocate items
  • 29. 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/
  • 30.    
  • 31. Joel Says ● Keep bugs near to zero ● Cannot estimate bug fix time ● Minimise unknowns
  • 32. Capturing Bugs ● As a minimum, record bug ● Buggy behaviour ● Expected behaviour ● Smallest possible replication case
  • 33. How to Report a Bug http://tinyurl.com/8vx3s ● http://www.chiark.greenend.org.uk/~sgtatham/bugs.html if a computer does anything unexpected, freeze Try to remember as much detail as it's not worth reporting that the you can about what you were doing to program generated an error it when it did fall over, and if you see unless you can also report what any patterns, mention them. Anything the error message was. you can provide has to be some help. Some of the worst bug reports I've ever seen come from programmers
  • 34.    
  • 35.    
  • 36. Scheduling Workflow collect requirements write separate into specification discrete tasks estimate task duration
  • 37. Who Estimates? ● Ideally the do-er ● At least someone who could do it ● Never cut estimates
  • 38. Specification ● Holds the information needed for each task ● May include acceptance criteria ● More detail means fewer misunderstandings ● mockups/pictures ● form fields
  • 39. Schedule ● What each person is doing ● When it is due to finish ● Can record progress/actions ● What is next
  • 40. Agile and Timings ● Agile development is reactive ● Always on time at start of sprint ● Estimates and spec detail can be prepared per sprint
  • 41. Burndown Charts ● List of tasks ● Tasks have estimates ● Sprint is as many tasks as you have man-hours
  • 43. Burndown Example Task Est im at e M on Tue Wed Thu Fr i Assemble pre-built frame 2 2 2 2 2 2 Paint exterior 2 2 2 2 2 2 Paint windowframes 1 1 1 1 1 1 Decorate bedrooms 8 8 8 8 8 8 Decorate kitchen 7 7 7 7 7 7 Decorate bathroom 5 5 5 5 5 5 Decorate reception rooms 7 7 7 7 7 7 Fit carpets 5 5 5 5 5 5 Add furniture 1 1 1 1 1 1
  • 45. Burndown Example Task Est im at e M on Tue Wed Thu Fr i Assemble pre-built frame 2 0 0 0 0 0 Paint exterior 2 0 0 0 0 0 Paint windowframes 1 1 1 1 1 1 Decorate bedrooms 8 8 8 8 8 8 Decorate kitchen 7 5 5 5 5 5 Decorate bathroom 5 5 5 5 5 5 Decorate reception rooms 7 7 7 7 7 7 Fit carpets 5 5 5 5 5 5 Add furniture 1 1 1 1 1 1
  • 49.    
  • 50. Interruptions Meetings Email Phone
  • 51.    
  • 52. Tools ● Software ● Hardware ● Resources ● All cost money (or time, or effort)
  • 53. Software ● IDE ● Zend Studio ● Visual Studio ● many free alternatives ● Graphics ● Photoshop ● Paint Shop Pro ● free alternatives
  • 55.    
  • 56.    
  • 57.    
  • 58.
  • 59. Resources ● Magazines ● php|architect ● Site memberships ● Experts' Exchange (pay per question) ● Safari ● Books ● Conferences/Events
  • 60.    
  • 61. Assessing Candidate Code ● During interview ● As part of recruitment process ● Ibuildings uses this ● The coding task makes a big impression on the candidate
  • 62.    
  • 63.    
  • 64. Testers are not developers Developers are not testers    
  • 65. 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/
  • 66. That was the Joel Test ... what's missing?    
  • 67. Do you use test-driven development?    
  • 68. Do you avoid reinventing the wheel?    
  • 69. Do you support the professional development of your employees?    
  • 70. And?
  • 71. ? Questions? http://joind.in/1249