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



ย       ย 
ย    ย 
ย    ย 
ย    ย 
Passing the Joel Test in the PHP World (phpbnl10)
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

ย                       ย 
Ad

More Related Content

What's hot (20)

User story workflow (eng)
User story workflow (eng)User story workflow (eng)
User story workflow (eng)
Anatoliy Okhotnikov
ย 
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
Eddy Reyes
ย 
Tdd presentation
Tdd presentationTdd presentation
Tdd presentation
fernando_chimicoviaki
ย 
Git sourcecontrolpreso
Git sourcecontrolpresoGit sourcecontrolpreso
Git sourcecontrolpreso
ColdFusionConference
ย 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
Leszek Godlewski
ย 
Leaning on the two Ts
Leaning on the two TsLeaning on the two Ts
Leaning on the two Ts
Mani Sarkar
ย 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytest
Brianna Laugher
ย 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
Adam Culp
ย 
QA 4 python
QA 4 pythonQA 4 python
QA 4 python
BeDjango
ย 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
ย 
Mocking in python
Mocking in pythonMocking in python
Mocking in python
Ooblioob
ย 
TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App Engine
Ricardo 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
ย 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
Open Networking Summit
ย 
Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build process
Bryan Agee
ย 
Neo4j Graph Database, from PHP
Neo4j Graph Database, from PHPNeo4j Graph Database, from PHP
Neo4j Graph Database, from PHP
Louis-Philippe Huberdeau
ย 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
tdc-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 2
Andrew Yatsenko
ย 
ES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game KataES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game Kata
David 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
ย 
User story workflow (eng)
User story workflow (eng)User story workflow (eng)
User story workflow (eng)
Anatoliy Okhotnikov
ย 
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
Eddy Reyes
ย 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
Leszek Godlewski
ย 
Leaning on the two Ts
Leaning on the two TsLeaning on the two Ts
Leaning on the two Ts
Mani Sarkar
ย 
Funcargs & other fun with pytest
Funcargs & other fun with pytestFuncargs & other fun with pytest
Funcargs & other fun with pytest
Brianna Laugher
ย 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
Adam Culp
ย 
QA 4 python
QA 4 pythonQA 4 python
QA 4 python
BeDjango
ย 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
ย 
Mocking in python
Mocking in pythonMocking in python
Mocking in python
Ooblioob
ย 
TDD with Python and App Engine
TDD with Python and App EngineTDD with Python and App Engine
TDD with Python and App Engine
Ricardo 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
ย 
Making Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF UsableMaking Strongly-typed NETCONF Usable
Making Strongly-typed NETCONF Usable
Open Networking Summit
ย 
Lighning Talk: PHP build process
Lighning Talk: PHP build processLighning Talk: PHP build process
Lighning Talk: PHP build process
Bryan Agee
ย 
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-PatternsTDC2016POA | Trilha DevOps - DevOps Anti-Patterns
TDC2016POA | Trilha DevOps - DevOps Anti-Patterns
tdc-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 2
Andrew Yatsenko
ย 
ES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game KataES3-2020-P2 Bowling Game Kata
ES3-2020-P2 Bowling Game Kata
David 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
ย 

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
Timo Stollenwerk
ย 
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
Lorna Mitchell
ย 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav 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 step
Daniel Fahlke
ย 
Best Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentBest Practices in PHP Application Deployment
Best Practices in PHP Application Deployment
Shahar 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 tools
Simon Dittlmann
ย 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
Anton 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-20
Michael 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 Programmer
Dave 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 Teams
Lars Thorup
ย 
Debugging 2013- Lars pedersen
Debugging 2013- Lars pedersenDebugging 2013- Lars pedersen
Debugging 2013- Lars pedersen
Mediehuset Ingeniรธren Live
ย 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
Engineor
ย 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
Kris 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 Devices
Dale 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 Workflow
Ann Cascarano
ย 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
Kris 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
ย 
UPC Plone Testing Talk
UPC Plone Testing TalkUPC Plone Testing Talk
UPC Plone Testing Talk
Timo Stollenwerk
ย 
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
Lorna Mitchell
ย 
Creating a reasonable project boilerplate
Creating a reasonable project boilerplateCreating a reasonable project boilerplate
Creating a reasonable project boilerplate
Stanislav 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 step
Daniel Fahlke
ย 
Best Practices in PHP Application Deployment
Best Practices in PHP Application DeploymentBest Practices in PHP Application Deployment
Best Practices in PHP Application Deployment
Shahar 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 tools
Simon Dittlmann
ย 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
Anton 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-20
Michael 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 Programmer
Dave 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 Teams
Lars Thorup
ย 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
Engineor
ย 
Devops Devops Devops, at Froscon
Devops Devops Devops, at FrosconDevops Devops Devops, at Froscon
Devops Devops Devops, at Froscon
Kris 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 Devices
Dale 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 Workflow
Ann Cascarano
ย 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
Kris 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
ย 
Ad

More from Lorna Mitchell (20)

OAuth: Trust Issues
OAuth: Trust IssuesOAuth: Trust Issues
OAuth: Trust Issues
Lorna Mitchell
ย 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
ย 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API Design
Lorna Mitchell
ย 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
Lorna 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 Money
Lorna Mitchell
ย 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knew
Lorna 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
ย 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
Lorna Mitchell
ย 
Join In With Joind.In
Join In With Joind.InJoin In With Joind.In
Join In With Joind.In
Lorna Mitchell
ย 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP Stack
Lorna Mitchell
ย 
Going Freelance
Going FreelanceGoing Freelance
Going Freelance
Lorna Mitchell
ย 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source Control
Lorna Mitchell
ย 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
Lorna 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 Fish
Lorna Mitchell
ย 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
Lorna Mitchell
ย 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
Lorna Mitchell
ย 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
Lorna Mitchell
ย 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
Lorna Mitchell
ย 
Example Presentation
Example PresentationExample Presentation
Example Presentation
Lorna Mitchell
ย 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?
Lorna Mitchell
ย 
OAuth: Trust Issues
OAuth: Trust IssuesOAuth: Trust Issues
OAuth: Trust Issues
Lorna Mitchell
ย 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
ย 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API Design
Lorna Mitchell
ย 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
Lorna 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 Money
Lorna Mitchell
ย 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knew
Lorna 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
ย 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
Lorna Mitchell
ย 
Join In With Joind.In
Join In With Joind.InJoin In With Joind.In
Join In With Joind.In
Lorna Mitchell
ย 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP Stack
Lorna Mitchell
ย 
Going Freelance
Going FreelanceGoing Freelance
Going Freelance
Lorna Mitchell
ย 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source Control
Lorna Mitchell
ย 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
Lorna 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 Fish
Lorna Mitchell
ย 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
Lorna Mitchell
ย 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
Lorna Mitchell
ย 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
Lorna Mitchell
ย 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
Lorna Mitchell
ย 
Example Presentation
Example PresentationExample Presentation
Example Presentation
Lorna Mitchell
ย 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?
Lorna Mitchell
ย 
Ad

Recently uploaded (20)

Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
ย 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
ย 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
panagenda
ย 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
ย 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
ย 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
ย 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
ย 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
ย 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
ย 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
ย 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
ย 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
ย 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
ย 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
ย 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
ย 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
ย 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
ย 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
ย 
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
HCL Nomad Web โ€“ Best Practices and Managing Multiuser Environments
panagenda
ย 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
ย 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
ย 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
ย 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
ย 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
ย 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
ย 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
ย 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
ย 

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
  • 54. Hardware ย  ย 
  • 55. ย  ย 
  • 56. ย  ย 
  • 57. ย  ย 
  • 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 ย  ย