continuous improvement in php projects - php uk conference 2011
DESCRIPTION
TRANSCRIPT
© 2011 Mayflower GmbH
Thorsten Rinne I 25th February 2011, London, UK
Continuous Improvement in PHP Projects
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Team LeadScrum MasterHead of Open Source Labs
@ThorstenRinne2
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Who are you?
3
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Integration?
4
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Inspection?
5
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Delivery?
6
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Why do we need Continuous Improvement?
7
http://www.flickr.com/photos/nataliaromay/3217596831/
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Look at this real life example...
8
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
1966: This was not a goal.9
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
2010: This was a goal.10
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
We are developers.
We are not perfect.
We‘re not politicians.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
„Continuous Improvement is better than delayed perfection.“
Mark Twain
12
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What exactly isContinuous Improvement?
13
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
„A continuous improvment process is an ongoing effort to improve products, services or processes. These efforts seek incremental improvment over
time or breakthrough improvement all at once.“
14
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 15
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Continuous Improvement~
KAIZEN
16
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 17
KAI=
Change
ZEN=
Good
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 18
Attention!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Your Management needs a will for changes!
19
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
You need 3 steps for Continuous Improvement.
20
1Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What are we trying to accomplish?
21
2Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How will we know that a change is an improvement?
22
3Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What changes will result in improvements?
23
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 24
Plan
Act Check
Do
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PLAN:How should it be?
25
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 26
Plan
Act Check
Do
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
DO:What and how do we do it?
27
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 28
Plan
Act Check
Do
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
CHECK:What did we achieve?
29
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 30
Plan
Act Check
Do
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
ACT:What else do we have to do?
31
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 32
Plan
Act Check
Do
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
So, how to integrate Continuous Improvement
in your daily work?
33
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34
It‘s
!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
SCRUM
35
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
SCRUM
CancelGift wrap
Return
Sprint2 weeks
Return
Sprint goal
Sprint backlog
Potentially shippableproduct increment
Productbacklog
CS fixesGift wrapCS fixes
Cancel
24 hours
36
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Extreme Programming
37
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 38
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 39
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Agile methods are about working in iteratons.
40
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Conclusion:Combine agile methods!
41
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Scrum + XP + Continuous Improvement
42
EPIC WIN
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Common problemsin PHP projects
43
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Code Aging44
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Technical Debt
45
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
We can do things quick and dirty.
46
The dirty way leads to technical debt.
This can kill a software.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Now: The slide for your management.
47
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 48
Benefits per change request
Costs per change request
rising frequency
DEAD END!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
So please pay back your technical debt!
49
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Always refactor your codebase!
50
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHP Tool Support
51
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
You need a continuous integration server.
52
Even if you don‘t do unittests.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 53
But don‘t tell that Sebastian!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Jenkins CI Server
54
Template for Jenkins Jobs for PHP Projects
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 55
http://jenkins-php.org
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 56
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 57
$ pear channel-discover pear.pdepend.org$ pear channel-discover pear.phpmd.org$ pear channel-discover pear.phpunit.de$ pear channel-discover components.ez.no$ pear channel-discover pear.symfony-project.com
$ pear install pdepend/PHP_Depend$ pear install phpmd/PHP_PMD$ pear install phpunit/phpcpd$ pear install phpunit/phploc$ pear install PHPDocumentor$ pear install PHP_CodeSniffer$ pear install --alldeps phpunit/PHP_CodeBrowser$ pear install --alldeps phpunit/PHPUnit
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHP_CodeSniffer
58
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 59
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Why do we need PHPMD?
60
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How does PHPMD work?
61
<?phpprint "Hello, world!";?>
PHP_Depends scans your code
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How does PHPMD work?
62
PHPMD scans the report ...
<?xml version="1.0" encoding="UTF-8"?><PDepend> <Packages> <Package name="PHP_CodeBrowser"> <Stats> <TotalClasses>10</TotalClasses> <ConcreteClasses>9</ConcreteClasses> ...</PDepend>
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How does PHPMD work?
63
<?xml version="1.0" encoding="UTF-8" ?><pmd version="0.2.7" timestamp="2010-10-28T16:27:21+02:00"> <file name="/Users/thorsten/htdocs/PHP_CodeBrowser/src/CLIController.php"> <violation beginline="201" endline="275" rule="CyclomaticComplexity" ruleset="Code Size Rules" package="PHP_CodeBrowser" externalInfoUrl="http://phpmd.org/rules/codesize.html#cyclomaticcomplexity" class="CbCLIController" method="run" priority="3"> The method run() has a Cyclomatic Complexity of 10. </violation>
...</pmd>
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
PHP_CodeBrowser
64
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
What is PHP_CodeBrowser?
65
I a code browser :-)
I syntax highlighting for PHP files
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 25th February I
How to get PHP_CodeBrowser?
I Git repository:
http://github.com/mayflowergmbh/PHP_CodeBrowser
I PHPUnit PEAR channel:
66
$ pear channel-discover pear.phpunit.de$ pear install --alldeps phpunit/PHP_CodeBrowser
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 67
PHP_CodeBrowserpresentation
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Cinder
68
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Why do we need Cinder?
69
I Integrate feedback directly
•static code analysis
•coding style
•unittests results
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 25th February I
Cinder Features
I Eclipse plugin
•Eclipse can be used for many languages
•Well documentated plugin infrastructure
I Reads Hudson or phpUnderControl XML data
I Aggregates findings by the CI system
I Language of the project doesn‘t matter
I Periodic updates of input data
70
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How does Cinder work?
71
DeveloperPC withEclipse
Continuous Integration
Server
periodically request from Cinder plugin
XML CI data from CI server
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to install Cinder?
72
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to install Cinder?
73
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to install Cinder?
74
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to install Cinder?
75
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76
Cinderpresentation
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to get these tools?
77
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
phpmd.orggithub.com/mayflowergmbh
phpunit.deopensource.mayflower.de
jenkins-php.org
78
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
How to use that tools?
79
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Set up a continuous integration server!
80
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Use the artifacts of the PHP QA Tools!
81
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Take some time for refactoring in every sprint.
82
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
Questions?
83
Gràcies!Thank you very much for your attention!
© 2011 Mayflower GmbH
Contact Thorsten [email protected]+49 89 242054-31
Mayflower GmbHMannhardtstr. 680538 MünchenGermany