SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
Continuous Improvement in PHP projects


Thorsten Rinne I 12. Oktober 2010
International PHP Conference 2010




                                         © 2010 Mayflower GmbH
Senior Developer / Team Lead
 Head of Open Source Labs
             @
    MAYFLOWER GMBH

       @ThorstenRinne
               Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 2
Topic:


  Continuous
Improvement in
 PHP projectes
Continuous integration?



            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 4
Continuous inspection?



            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 5
Why do we need
continuous improvement?


            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 6
„Continuous improvement
  is better than delayed
perfection” - Mark Twain

             Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 7
What exactly is Continuous
     improvement?


              Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 8
„A continuous improvement
 process is an ongoing effort to
 improve products, services, or
  processes. These efforts can
seek "incremental" improvement
  over time or "breakthrough"
   improvement all at once.“
                                                                                     Wikipedia
                 Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 9
Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 10
Continuous Improvement
           ~
       KAIZEN

            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 11
KAI                ZEN
  =                  =
Change              Good
         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 12
Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 13
Your Boss needs a will for
       changes!



              Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 14
You need 3 steps for
Continuous Improvement.


            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 15
1
What are we trying to
   accomplish?


            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 16
2
 How will we know that a
change is an improvement?


             Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 17
3
What changes will result in
     improvements?


               Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 18
Plan      Do



Act    Check




       Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 19
PLAN:
How it should be?


          Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 20
Plan      Do



Act    Check




       Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 21
DO:
What and how do we do it?


              Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 22
Plan      Do



Act    Check




       Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 23
CHECK:
What did we achieve?


           Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 24
Plan      Do



Act    Check




       Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 25
ACT:
What else do we have to do?


               Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 26
Plan      Do



Act    Check




       Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 27
SCRUM




   Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 28
XP
                       Months
Release Plan

                        Iteration Plan                   Weeks


                                     Acceptence Testing
                                                                   Days

                                              Standup Meeting
                                                                      One day
                                                Pair Negotiation

                                                                 hours
                                        Unit Test
                                                       seconds
                      Pair Programming

  Code                            seconds

           Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 29
Conclusion:
Combine Scrum, XP and
Continuous Improvement

            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 30
Common problems
 in PHP projects


         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 31
Code Aging
      Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 32
Technical Debt




        Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 33
„Shipping first time code is like going into
 debt. A little debt speeds development so
    long as it is paid back promptly with a
rewrite... The danger occurs when the debt
  is not repaid. Every minute spent on not-
 quite-right code counts as interest on that
debt. Entire engineering organizations can
 be brought to a stand-still under the debt
load of an unconsolidated implementation,
        object-oriented or otherwise.“
                                                                   Ward Cunningham, 1992
                        Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 34
Costs per Change Request




                   rising frequency




                             Dead end!



                      Benefit per Change Request
                                 Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 35
Always improve your
    codebase!


          Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 36
PHP_CodeBrowser




        Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 37
PHP Tool Support




         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 38
What is PHP_CodeBrowser?



I a code browser :-)
I syntax highlighting for PHP
I colored error sections found by PHP QA tools like
   •PHPUnit
   •phpcpd
   •PHP_CodeSniffer
   •Code Coverage
   •PHPMD




                                           Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 39
How to get PHP_CodeBrowser?



I http://github.com/mayflowergmbh/PHP_CodeBrowser


I PHPUnit PEAR channel:


$ pear config-set preferred_state beta
$ pear channel-discover pear.phpunit.de
$ pear install --alldeps phpunit/PHP_CodeBrowser


I Current version: 0.9.0
I We‘ll release PHP_CodeBrowser 1.0 this month!

                                        Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 40
PHP_CodeBrowser presentation




                               Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 41
Cinder




    Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 42
Why Cinder?



I Integrate feedback directly
   •static code analysis
   •coding style
   •unittests
I Decrease number of tools
I Based on existing artifacts from Continuous Integration
I Conform with IDE usabiliy guidelines




                                            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 43
Cinder Features



I Eclipse Plugin
   •Eclipse can be used for many languages
   •Well documentated plugin infrastructure
I Reads Hudson or CruiseControl XML data
I Aggregates findings by the CI system
I Language of the project doesn‘t matter
I Periodic updates of input data




                                           Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 44
How does Cinder work?


                periodically request from Cinder




   Developer                                                                   Continuous
    PC with                                                                    Integration
    Eclipse                                                                      Server




                        CI data from CI server

                                    Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 45
How to install Cinder?




                         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 46
How to install Cinder?




                         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 47
How does Cinder look like?




                             Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 48
Cinder presentation




                      Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 49
Padawan




    Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 50
Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 51
PHPMD




   Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 52
PHPMD features



I PHPMD looks for
   •possible bugs
   •suboptimal code
   •overcomplicated expressions
   •unused parameters, methods, properties
I Latest release: 0.2.7




                                        Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 53
How to get PHPMD?



I PHPMD PEAR channel




$ pear channel-discover pear.phpmd.org
$ pear channel-discover pear.pdepend.org
$ pear install --alldeps phpmd/PHP_PMD-alpha




                          Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 54
How to use PHPMD?

univac:phpMyFAQ-2.7 thorsten$ phpmd phpmyfaq/inc/Link.php xml codesize

<?xml version="1.0" encoding="UTF-8" ?>
<pmd version="0.2.6" timestamp="2010-09-09T14:01:33+02:00">
  <file name="/Users/thorsten/htdocs/phpMyFAQ-2.7/phpmyfaq/inc/Link.php">
    <violation beginline="47" endline="627" rule="ExcessivePublicCount"
ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http://
phpmd.org/rules/codesize.html#excessivepubliccount" class="PMF_Link"
priority="3">
       This class has a bunch of public methods and attributes
    </violation>
    <violation beginline="47" endline="627" rule="TooManyMethods"
ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http://
phpmd.org/rules/codesize.html#toomanymethods" class="PMF_Link"
priority="3">
       This class has too many methods, consider refactoring it.
    </violation>
    ...
  </file>
</pmd>



                                         Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 55
Currently we‘re adding the
Padawan rules to PHPMD.


              Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 56
How to get these tools?




             Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 57
phpmd.org
github.com/mayflowergmbh
         phpunit.de
 opensource.mayflower.de

            Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 58
Questions?




      Continuous Improvement in PHP projects I   Mayflower GmbH I 12. Oktober 2010 I 59
Thank you very much!




Contact   Thorsten Rinne
          thorsten.rinne@mayflower.de
          +49 89 242054-31

          Mayflower GmbH
          Mannhardtstr. 6
          80538 München




                                       © 2010 Mayflower GmbH

Weitere ähnliche Inhalte

Ähnlich wie Continuous Improvement in PHP projects

Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Mayflower GmbH
 
One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011Mayflower GmbH
 
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichMayflower GmbH
 
Continuous Improvement in PHP Projects - PHP UK Conference 2011
Continuous Improvement in PHP Projects - PHP UK Conference 2011Continuous Improvement in PHP Projects - PHP UK Conference 2011
Continuous Improvement in PHP Projects - PHP UK Conference 2011Mayflower GmbH
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCMayflower GmbH
 
Agile php software development
Agile php software developmentAgile php software development
Agile php software developmentMayflower GmbH
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11Mayflower GmbH
 
Top php development companies to outsource
Top php development companies to outsourceTop php development companies to outsource
Top php development companies to outsourceMindfire LLC
 
One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with JenkinsMayflower GmbH
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCMayflower GmbH
 
ZendCon2010 - PHP Industrialization at France Telecom - ORANGE
ZendCon2010 - PHP Industrialization at France Telecom - ORANGEZendCon2010 - PHP Industrialization at France Telecom - ORANGE
ZendCon2010 - PHP Industrialization at France Telecom - ORANGEEnterprise PHP Center
 
PixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixel Crayons
 
Characteristics of PHP web development services to boost productivity
Characteristics of PHP web development services to boost productivityCharacteristics of PHP web development services to boost productivity
Characteristics of PHP web development services to boost productivityJohn William
 
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)Pixel Crayons
 
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP Programmers
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP ProgrammersHire Dedicated PHP Developers: Work with India’s Top 2% PHP Programmers
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP ProgrammersPixel Crayons
 
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...Pixel Crayons
 
Top Python development Companies to outsource
Top Python development Companies to outsourceTop Python development Companies to outsource
Top Python development Companies to outsourceMindfire LLC
 
Make the Best of Technologies for Your Projects
Make the Best of Technologies for Your ProjectsMake the Best of Technologies for Your Projects
Make the Best of Technologies for Your ProjectsAfycon Technologies
 

Ähnlich wie Continuous Improvement in PHP projects (20)

Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10
 
One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011
 
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP Munich
 
Continuous Improvement in PHP Projects - PHP UK Conference 2011
Continuous Improvement in PHP Projects - PHP UK Conference 2011Continuous Improvement in PHP Projects - PHP UK Conference 2011
Continuous Improvement in PHP Projects - PHP UK Conference 2011
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
Agile php software development
Agile php software developmentAgile php software development
Agile php software development
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11
 
Top php development companies to outsource
Top php development companies to outsourceTop php development companies to outsource
Top php development companies to outsource
 
One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with Jenkins
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
ZendCon2010 - PHP Industrialization at France Telecom - ORANGE
ZendCon2010 - PHP Industrialization at France Telecom - ORANGEZendCon2010 - PHP Industrialization at France Telecom - ORANGE
ZendCon2010 - PHP Industrialization at France Telecom - ORANGE
 
HTML5 Workshop
HTML5 WorkshopHTML5 Workshop
HTML5 Workshop
 
Php live project training
Php live project trainingPhp live project training
Php live project training
 
PixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP Developers
 
Characteristics of PHP web development services to boost productivity
Characteristics of PHP web development services to boost productivityCharacteristics of PHP web development services to boost productivity
Characteristics of PHP web development services to boost productivity
 
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
 
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP Programmers
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP ProgrammersHire Dedicated PHP Developers: Work with India’s Top 2% PHP Programmers
Hire Dedicated PHP Developers: Work with India’s Top 2% PHP Programmers
 
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...
PHP Developers for hire from PixelCrayons: Work with India’s top 2% PHP Progr...
 
Top Python development Companies to outsource
Top Python development Companies to outsourceTop Python development Companies to outsource
Top Python development Companies to outsource
 
Make the Best of Technologies for Your Projects
Make the Best of Technologies for Your ProjectsMake the Best of Technologies for Your Projects
Make the Best of Technologies for Your Projects
 

Mehr von Mayflower GmbH

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftMayflower GmbH
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingMayflower GmbH
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming MythbustersMayflower GmbH
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im GlückMayflower GmbH
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefernMayflower GmbH
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsMayflower GmbH
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalierenMayflower GmbH
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastMayflower GmbH
 

Mehr von Mayflower GmbH (20)

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Usability im web
Usability im webUsability im web
Usability im web
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalieren
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 

Continuous Improvement in PHP projects

  • 1. Continuous Improvement in PHP projects Thorsten Rinne I 12. Oktober 2010 International PHP Conference 2010 © 2010 Mayflower GmbH
  • 2. Senior Developer / Team Lead Head of Open Source Labs @ MAYFLOWER GMBH @ThorstenRinne Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 2
  • 3. Topic: Continuous Improvement in PHP projectes
  • 4. Continuous integration? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 4
  • 5. Continuous inspection? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 5
  • 6. Why do we need continuous improvement? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 6
  • 7. „Continuous improvement is better than delayed perfection” - Mark Twain Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 7
  • 8. What exactly is Continuous improvement? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 8
  • 9. „A continuous improvement process is an ongoing effort to improve products, services, or processes. These efforts can seek "incremental" improvement over time or "breakthrough" improvement all at once.“ Wikipedia Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 9
  • 10. Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 10
  • 11. Continuous Improvement ~ KAIZEN Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 11
  • 12. KAI ZEN = = Change Good Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 12
  • 13. Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 13
  • 14. Your Boss needs a will for changes! Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 14
  • 15. You need 3 steps for Continuous Improvement. Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 15
  • 16. 1 What are we trying to accomplish? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 16
  • 17. 2 How will we know that a change is an improvement? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 17
  • 18. 3 What changes will result in improvements? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 18
  • 19. Plan Do Act Check Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 19
  • 20. PLAN: How it should be? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 20
  • 21. Plan Do Act Check Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 21
  • 22. DO: What and how do we do it? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 22
  • 23. Plan Do Act Check Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 23
  • 24. CHECK: What did we achieve? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 24
  • 25. Plan Do Act Check Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 25
  • 26. ACT: What else do we have to do? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 26
  • 27. Plan Do Act Check Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 27
  • 28. SCRUM Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 28
  • 29. XP Months Release Plan Iteration Plan Weeks Acceptence Testing Days Standup Meeting One day Pair Negotiation hours Unit Test seconds Pair Programming Code seconds Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 29
  • 30. Conclusion: Combine Scrum, XP and Continuous Improvement Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 30
  • 31. Common problems in PHP projects Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 31
  • 32. Code Aging Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 32
  • 33. Technical Debt Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 33
  • 34. „Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite... The danger occurs when the debt is not repaid. Every minute spent on not- quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.“ Ward Cunningham, 1992 Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 34
  • 35. Costs per Change Request rising frequency Dead end! Benefit per Change Request Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 35
  • 36. Always improve your codebase! Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 36
  • 37. PHP_CodeBrowser Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 37
  • 38. PHP Tool Support Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 38
  • 39. What is PHP_CodeBrowser? I a code browser :-) I syntax highlighting for PHP I colored error sections found by PHP QA tools like •PHPUnit •phpcpd •PHP_CodeSniffer •Code Coverage •PHPMD Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 39
  • 40. How to get PHP_CodeBrowser? I http://github.com/mayflowergmbh/PHP_CodeBrowser I PHPUnit PEAR channel: $ pear config-set preferred_state beta $ pear channel-discover pear.phpunit.de $ pear install --alldeps phpunit/PHP_CodeBrowser I Current version: 0.9.0 I We‘ll release PHP_CodeBrowser 1.0 this month! Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 40
  • 41. PHP_CodeBrowser presentation Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 41
  • 42. Cinder Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 42
  • 43. Why Cinder? I Integrate feedback directly •static code analysis •coding style •unittests I Decrease number of tools I Based on existing artifacts from Continuous Integration I Conform with IDE usabiliy guidelines Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 43
  • 44. Cinder Features I Eclipse Plugin •Eclipse can be used for many languages •Well documentated plugin infrastructure I Reads Hudson or CruiseControl XML data I Aggregates findings by the CI system I Language of the project doesn‘t matter I Periodic updates of input data Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 44
  • 45. How does Cinder work? periodically request from Cinder Developer Continuous PC with Integration Eclipse Server CI data from CI server Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 45
  • 46. How to install Cinder? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 46
  • 47. How to install Cinder? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 47
  • 48. How does Cinder look like? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 48
  • 49. Cinder presentation Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 49
  • 50. Padawan Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 50
  • 51. Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 51
  • 52. PHPMD Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 52
  • 53. PHPMD features I PHPMD looks for •possible bugs •suboptimal code •overcomplicated expressions •unused parameters, methods, properties I Latest release: 0.2.7 Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 53
  • 54. How to get PHPMD? I PHPMD PEAR channel $ pear channel-discover pear.phpmd.org $ pear channel-discover pear.pdepend.org $ pear install --alldeps phpmd/PHP_PMD-alpha Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 54
  • 55. How to use PHPMD? univac:phpMyFAQ-2.7 thorsten$ phpmd phpmyfaq/inc/Link.php xml codesize <?xml version="1.0" encoding="UTF-8" ?> <pmd version="0.2.6" timestamp="2010-09-09T14:01:33+02:00"> <file name="/Users/thorsten/htdocs/phpMyFAQ-2.7/phpmyfaq/inc/Link.php"> <violation beginline="47" endline="627" rule="ExcessivePublicCount" ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http:// phpmd.org/rules/codesize.html#excessivepubliccount" class="PMF_Link" priority="3"> This class has a bunch of public methods and attributes </violation> <violation beginline="47" endline="627" rule="TooManyMethods" ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http:// phpmd.org/rules/codesize.html#toomanymethods" class="PMF_Link" priority="3"> This class has too many methods, consider refactoring it. </violation> ... </file> </pmd> Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 55
  • 56. Currently we‘re adding the Padawan rules to PHPMD. Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 56
  • 57. How to get these tools? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 57
  • 58. phpmd.org github.com/mayflowergmbh phpunit.de opensource.mayflower.de Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 58
  • 59. Questions? Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 59
  • 60. Thank you very much! Contact Thorsten Rinne thorsten.rinne@mayflower.de +49 89 242054-31 Mayflower GmbH Mannhardtstr. 6 80538 München © 2010 Mayflower GmbH