Professional PHP web application development faces a multitude of challenges today, especially in case of large and complex applications developed using agile methodologies. Plenty of factors influence the product, its architecture and the developers working on it. During this talk we're going to explore those factors and attempt to build a set of guidelines that will benefit the developers, code, product and business at the same time.
1. PHP development for large agile projects
Overview and hints for developers
Grzegorz Godlewski
PHPCon 2016, Ossa, Poland
October 2, 2016
2. Introduction The problem at hand Possible solutions Summary
Agenda
1 Introduction
2 The problem at hand
3 Possible solutions
4 Summary
3. 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
11. Introduction The problem at hand Possible solutions Summary
The fundamental problem
One thing is sure about software development...
there will be change
12. Introduction The problem at hand Possible solutions Summary
To do list...
Display product
Products in the cart
Order placement
Vouchers
13. 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
...
14.
15.
16. 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
17. 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
23. 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]
26. 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
27. Introduction The problem at hand Possible solutions Summary
Coding Practices
Code and Design Simply
Refactor Mercilessly
Develop Coding Standards
Develop a Common Vocabulary
28. Introduction The problem at hand Possible solutions Summary
Developer Practices
Adopt Test-Driven Development
Practice Pair Programming
Adopt Collective Code Ownership
Integrate Continually
29. 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
32. 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
33. Introduction The problem at hand Possible solutions Summary
The industry standard acronyms
SOLID
KISS
DRY
YAGNI
34.
35. 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
36. Introduction The problem at hand Possible solutions Summary
But I’m working with legacy
software!
39. Introduction The problem at hand Possible solutions Summary
Thank you!
http://linkedin.com/in/ggodlewski
Mail: grzegorz@sorcerystudio.com
Twitter: @GGodlewski
40. 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