PHP development for large agile projects
Overview and hints for developers
Grzegorz Godlewski
PHPCon 2016, Ossa, Poland
October 2, 2016
Introduction The problem at hand Possible solutions Summary
Agenda
1 Introduction
2 The problem at hand
3 Possible solutions
4 Summary
What does agile mean anyway?
According to Cambridge Dictionary:
Physically: able to move your body quickly and easily
Mentally: able to think quickly and clearly
Management: used for describing ways of planning and
doing work in which it is understood that making changes as
they are needed is an important part of the job
What is a large project?
Can something large be agile at all?
Introduction The problem at hand Possible solutions Summary
The fundamental problem
One thing is sure about software development...
there will be change
Introduction The problem at hand Possible solutions Summary
To do list...
Display product
Products in the cart
Order placement
Vouchers
Introduction The problem at hand Possible solutions Summary
... after 2 weeks
[DONE] Display product
Product comparison
[DONE] Products in the cart
Product sets
[IN PROGRESS] Order placement
Other’s bought also...
Discount codes
Invoices
Vouchers
...
Introduction The problem at hand Possible solutions Summary
Agility limitation
The programming language
Organization culture
Business model
Processes / methodologies / work-flows
Requirements for the product
Implemented solutions
Teams
People
Introduction The problem at hand Possible solutions Summary
Solution dimensions
The dimensions are:
PRODUCT: I want to build the right product
TEAMS: I want to built the software in a right way (from
technical perspective)
INDIVIDUALS: I want to do a great job in a great
environment
Introduction The problem at hand Possible solutions Summary
THE PRODUCT
Introduction The problem at hand Possible solutions Summary
Introduction The problem at hand Possible solutions Summary
Introduction The problem at hand Possible solutions Summary
Introduction The problem at hand Possible solutions Summary
Problems in Scrum
Organizational level:
Weaponization: Whip & Shield
”Dark Scrum” by R. Jeffries [1]
Development level:
Feels like constant deadlines
Narrowed perspective
And many others... [2]
Introduction The problem at hand Possible solutions Summary
THE TEAMS
Introduction The problem at hand Possible solutions Summary
Extreme Programming Practices and values
Practices are divided to two categories:
Primary
Corollary
XP values the following:
Communication
Feedback
Simplicity
Courage
Respect
Introduction The problem at hand Possible solutions Summary
Coding Practices
Code and Design Simply
Refactor Mercilessly
Develop Coding Standards
Develop a Common Vocabulary
Introduction The problem at hand Possible solutions Summary
Developer Practices
Adopt Test-Driven Development
Practice Pair Programming
Adopt Collective Code Ownership
Integrate Continually
Introduction The problem at hand Possible solutions Summary
Business Practices
Add a Customer to the Team
Play the Planning Game
Release Regularly
Work at a Sustainable Pace
Introduction The problem at hand Possible solutions Summary
THE INDIVIDUALS
Introduction The problem at hand Possible solutions Summary
The tools at hand
Various principles
Best practices (coding, development process, publishing,
deployments, automation)
Knowledge of patterns [3, 4, 5, 6]
Powerful programming languages
Literature (starting from previous century)
Manifests ;) [7, 8]
Knowledge of anti-patterns [6, 9]
Initiatives: PHP in the ”right” or ”wrong” way
Introduction The problem at hand Possible solutions Summary
The industry standard acronyms
SOLID
KISS
DRY
YAGNI
Introduction The problem at hand Possible solutions Summary
Summary
There are no silver bullets in software development
Be pragmatic, balance is everything
The tools are already there, learn them
Browse http://www.thedailywtf.com/ ;)
When introducing change, do it step by step, avoid big bangs
Learn, apply, repeat
Stay open minded and always be ready for change
Introduction The problem at hand Possible solutions Summary
But I’m working with legacy
software!
Questions?
Introduction The problem at hand Possible solutions Summary
Thank you!
http://linkedin.com/in/ggodlewski
Mail: grzegorz@sorcerystudio.com
Twitter: @GGodlewski
Introduction The problem at hand Possible solutions Summary
References
[1] R. Jeffries. (last accessed 2016) Dark scrum. [Online]. Available:
http://ronjeffries.com/articles/016-09ff/defense/
[2] (last accessed 2016) 24 common scrum pitfalls summarized. [Online]. Available:
http://www.agileadvice.com/2011/12/05/referenceinformation/24-common-scrum-pitfalls-summarized/
[3] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Addison-Wesley, 1994.
[4] M. Fowler et al., Patterns of Enterprise Application Architecture. Addison-Wesley, 2003.
[5] K. Beck, Implementation patterns. Addison-Wesley, 2006.
[6] (last accessed 2016) Source making website (design patterns, anti-patterns, refactoring). [Online]. Available:
http://sourcemaking.com
[7] (2001) Manifesto for agile software development. [Online]. Available: http://www.agilemanifesto.org/
[8] (2009) Manifesto for software craftmanship. [Online]. Available: http://manifesto.softwarecraftsmanship.org/
[9] Cunningham and Cunningham. (last accessed 2016) Category anti pattern. [Online]. Available:
http://c2.com/cgi/wiki?CategoryAntiPattern

PHP development for large agile projects

  • 1.
    PHP development forlarge agile projects Overview and hints for developers Grzegorz Godlewski PHPCon 2016, Ossa, Poland October 2, 2016
  • 2.
    Introduction The problemat hand Possible solutions Summary Agenda 1 Introduction 2 The problem at hand 3 Possible solutions 4 Summary
  • 3.
    What does agilemean anyway? According to Cambridge Dictionary: Physically: able to move your body quickly and easily Mentally: able to think quickly and clearly Management: used for describing ways of planning and doing work in which it is understood that making changes as they are needed is an important part of the job
  • 4.
    What is alarge project?
  • 5.
    Can something largebe agile at all?
  • 11.
    Introduction The problemat hand Possible solutions Summary The fundamental problem One thing is sure about software development... there will be change
  • 12.
    Introduction The problemat hand Possible solutions Summary To do list... Display product Products in the cart Order placement Vouchers
  • 13.
    Introduction The problemat hand Possible solutions Summary ... after 2 weeks [DONE] Display product Product comparison [DONE] Products in the cart Product sets [IN PROGRESS] Order placement Other’s bought also... Discount codes Invoices Vouchers ...
  • 16.
    Introduction The problemat hand Possible solutions Summary Agility limitation The programming language Organization culture Business model Processes / methodologies / work-flows Requirements for the product Implemented solutions Teams People
  • 17.
    Introduction The problemat hand Possible solutions Summary Solution dimensions The dimensions are: PRODUCT: I want to build the right product TEAMS: I want to built the software in a right way (from technical perspective) INDIVIDUALS: I want to do a great job in a great environment
  • 18.
    Introduction The problemat hand Possible solutions Summary THE PRODUCT
  • 19.
    Introduction The problemat hand Possible solutions Summary
  • 20.
    Introduction The problemat hand Possible solutions Summary
  • 21.
    Introduction The problemat hand Possible solutions Summary
  • 23.
    Introduction The problemat hand Possible solutions Summary Problems in Scrum Organizational level: Weaponization: Whip & Shield ”Dark Scrum” by R. Jeffries [1] Development level: Feels like constant deadlines Narrowed perspective And many others... [2]
  • 25.
    Introduction The problemat hand Possible solutions Summary THE TEAMS
  • 26.
    Introduction The problemat hand Possible solutions Summary Extreme Programming Practices and values Practices are divided to two categories: Primary Corollary XP values the following: Communication Feedback Simplicity Courage Respect
  • 27.
    Introduction The problemat hand Possible solutions Summary Coding Practices Code and Design Simply Refactor Mercilessly Develop Coding Standards Develop a Common Vocabulary
  • 28.
    Introduction The problemat hand Possible solutions Summary Developer Practices Adopt Test-Driven Development Practice Pair Programming Adopt Collective Code Ownership Integrate Continually
  • 29.
    Introduction The problemat hand Possible solutions Summary Business Practices Add a Customer to the Team Play the Planning Game Release Regularly Work at a Sustainable Pace
  • 30.
    Introduction The problemat hand Possible solutions Summary THE INDIVIDUALS
  • 32.
    Introduction The problemat hand Possible solutions Summary The tools at hand Various principles Best practices (coding, development process, publishing, deployments, automation) Knowledge of patterns [3, 4, 5, 6] Powerful programming languages Literature (starting from previous century) Manifests ;) [7, 8] Knowledge of anti-patterns [6, 9] Initiatives: PHP in the ”right” or ”wrong” way
  • 33.
    Introduction The problemat hand Possible solutions Summary The industry standard acronyms SOLID KISS DRY YAGNI
  • 35.
    Introduction The problemat hand Possible solutions Summary Summary There are no silver bullets in software development Be pragmatic, balance is everything The tools are already there, learn them Browse http://www.thedailywtf.com/ ;) When introducing change, do it step by step, avoid big bangs Learn, apply, repeat Stay open minded and always be ready for change
  • 36.
    Introduction The problemat hand Possible solutions Summary But I’m working with legacy software!
  • 38.
  • 39.
    Introduction The problemat hand Possible solutions Summary Thank you! http://linkedin.com/in/ggodlewski Mail: grzegorz@sorcerystudio.com Twitter: @GGodlewski
  • 40.
    Introduction The problemat hand Possible solutions Summary References [1] R. Jeffries. (last accessed 2016) Dark scrum. [Online]. Available: http://ronjeffries.com/articles/016-09ff/defense/ [2] (last accessed 2016) 24 common scrum pitfalls summarized. [Online]. Available: http://www.agileadvice.com/2011/12/05/referenceinformation/24-common-scrum-pitfalls-summarized/ [3] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Addison-Wesley, 1994. [4] M. Fowler et al., Patterns of Enterprise Application Architecture. Addison-Wesley, 2003. [5] K. Beck, Implementation patterns. Addison-Wesley, 2006. [6] (last accessed 2016) Source making website (design patterns, anti-patterns, refactoring). [Online]. Available: http://sourcemaking.com [7] (2001) Manifesto for agile software development. [Online]. Available: http://www.agilemanifesto.org/ [8] (2009) Manifesto for software craftmanship. [Online]. Available: http://manifesto.softwarecraftsmanship.org/ [9] Cunningham and Cunningham. (last accessed 2016) Category anti pattern. [Online]. Available: http://c2.com/cgi/wiki?CategoryAntiPattern