SlideShare a Scribd company logo
1 of 40
Download to read offline
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

More Related Content

Viewers also liked

Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)
Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)
Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)Aswin John
 
Proyecto de expresion oral
Proyecto de expresion oralProyecto de expresion oral
Proyecto de expresion oralClaudia Ramon
 
The roles and function of educational technology in 2
The roles and function of educational technology in 2The roles and function of educational technology in 2
The roles and function of educational technology in 2V1cFranc1s0
 
PhD-course-Reliability-WT-3-5dec2012
PhD-course-Reliability-WT-3-5dec2012PhD-course-Reliability-WT-3-5dec2012
PhD-course-Reliability-WT-3-5dec2012Gaizka Zarraonandia
 
WW TAIPEI Booklet Stephanie Hsu (1)
WW TAIPEI Booklet Stephanie Hsu (1)WW TAIPEI Booklet Stephanie Hsu (1)
WW TAIPEI Booklet Stephanie Hsu (1)Charlotte Peet
 
silla de trabajo desplazable para un estudiante con movilidad reducida
silla de trabajo desplazable para un estudiante con movilidad reducidasilla de trabajo desplazable para un estudiante con movilidad reducida
silla de trabajo desplazable para un estudiante con movilidad reducidaWilmer Marcano
 
Q1
Q1Q1
Q1BBJN
 
Rhinoplasty in indore
Rhinoplasty in indoreRhinoplasty in indore
Rhinoplasty in indoreRaina marmm
 
9781119101987RetailNetworksForDummies_15954 (1)
9781119101987RetailNetworksForDummies_15954 (1)9781119101987RetailNetworksForDummies_15954 (1)
9781119101987RetailNetworksForDummies_15954 (1)Alec Thorkelson
 

Viewers also liked (20)

Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)
Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)
Developing Breakout Models in FEMAP (Includes Tutorial Walk-throughs)
 
Presentazione Club4business
Presentazione Club4businessPresentazione Club4business
Presentazione Club4business
 
Prezentacja ux
Prezentacja uxPrezentacja ux
Prezentacja ux
 
Reza fazeli portfolio
Reza fazeli portfolioReza fazeli portfolio
Reza fazeli portfolio
 
MOPC
MOPCMOPC
MOPC
 
Proyecto de expresion oral
Proyecto de expresion oralProyecto de expresion oral
Proyecto de expresion oral
 
The roles and function of educational technology in 2
The roles and function of educational technology in 2The roles and function of educational technology in 2
The roles and function of educational technology in 2
 
Tecnologie per l'insegnamento
Tecnologie per l'insegnamentoTecnologie per l'insegnamento
Tecnologie per l'insegnamento
 
ALEC+ASIAMAH+DENKYIRAH
ALEC+ASIAMAH+DENKYIRAHALEC+ASIAMAH+DENKYIRAH
ALEC+ASIAMAH+DENKYIRAH
 
PhD-course-Reliability-WT-3-5dec2012
PhD-course-Reliability-WT-3-5dec2012PhD-course-Reliability-WT-3-5dec2012
PhD-course-Reliability-WT-3-5dec2012
 
WW TAIPEI Booklet Stephanie Hsu (1)
WW TAIPEI Booklet Stephanie Hsu (1)WW TAIPEI Booklet Stephanie Hsu (1)
WW TAIPEI Booklet Stephanie Hsu (1)
 
Igot.final
Igot.finalIgot.final
Igot.final
 
silla de trabajo desplazable para un estudiante con movilidad reducida
silla de trabajo desplazable para un estudiante con movilidad reducidasilla de trabajo desplazable para un estudiante con movilidad reducida
silla de trabajo desplazable para un estudiante con movilidad reducida
 
THE PORTFOLIO 2016
THE PORTFOLIO 2016THE PORTFOLIO 2016
THE PORTFOLIO 2016
 
Presentation #3
Presentation #3 Presentation #3
Presentation #3
 
Q1
Q1Q1
Q1
 
Rhinoplasty in indore
Rhinoplasty in indoreRhinoplasty in indore
Rhinoplasty in indore
 
Aguaymanto
AguaymantoAguaymanto
Aguaymanto
 
Md.Hasanuzzaman_CV.N
Md.Hasanuzzaman_CV.NMd.Hasanuzzaman_CV.N
Md.Hasanuzzaman_CV.N
 
9781119101987RetailNetworksForDummies_15954 (1)
9781119101987RetailNetworksForDummies_15954 (1)9781119101987RetailNetworksForDummies_15954 (1)
9781119101987RetailNetworksForDummies_15954 (1)
 

Similar to PHP development for large agile projects

Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open DevelopmentRoss Gardler
 
Agile Experience In Complex Projects
Agile Experience In Complex ProjectsAgile Experience In Complex Projects
Agile Experience In Complex ProjectsBorys Lebeda
 
The Secret, Yet Obvious, Ingredient to Sustainable Agility
The Secret, Yet Obvious, Ingredient to Sustainable AgilityThe Secret, Yet Obvious, Ingredient to Sustainable Agility
The Secret, Yet Obvious, Ingredient to Sustainable AgilityAhmed Sidky
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentSaqib Raza
 
How to become a great developer
How to become a great developerHow to become a great developer
How to become a great developerNetcetera
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Mit109 – software engineering
Mit109 – software engineeringMit109 – software engineering
Mit109 – software engineeringsmumbahelp
 
Mit109 – software engineering
Mit109 – software engineeringMit109 – software engineering
Mit109 – software engineeringsmumbahelp
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonTharindu Weerasinghe
 
Agile Methodology For Software Development
Agile Methodology For Software DevelopmentAgile Methodology For Software Development
Agile Methodology For Software DevelopmentDiane Allen
 
Practices of agile developers
Practices of agile developersPractices of agile developers
Practices of agile developersDUONG Trong Tan
 
Agile Development
Agile DevelopmentAgile Development
Agile Developmentabdpse
 
Open agile is free and open source community agile-
Open agile  is free and open source community agile-Open agile  is free and open source community agile-
Open agile is free and open source community agile-Agile Tour Beirut
 

Similar to PHP development for large agile projects (20)

Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open Development
 
The terminology of methodology
The terminology of methodologyThe terminology of methodology
The terminology of methodology
 
Agile Experience In Complex Projects
Agile Experience In Complex ProjectsAgile Experience In Complex Projects
Agile Experience In Complex Projects
 
The Secret, Yet Obvious, Ingredient to Sustainable Agility
The Secret, Yet Obvious, Ingredient to Sustainable AgilityThe Secret, Yet Obvious, Ingredient to Sustainable Agility
The Secret, Yet Obvious, Ingredient to Sustainable Agility
 
Os Leung
Os LeungOs Leung
Os Leung
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
How to become a great developer
How to become a great developerHow to become a great developer
How to become a great developer
 
Intro to Agile Practices and Values
Intro to Agile Practices and ValuesIntro to Agile Practices and Values
Intro to Agile Practices and Values
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Mit109 – software engineering
Mit109 – software engineeringMit109 – software engineering
Mit109 – software engineering
 
Mit109 – software engineering
Mit109 – software engineeringMit109 – software engineering
Mit109 – software engineering
 
UXBC #26: Lean UX
UXBC #26: Lean UXUXBC #26: Lean UX
UXBC #26: Lean UX
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Andrew Hunt
Andrew HuntAndrew Hunt
Andrew Hunt
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
 
Agile Methodology For Software Development
Agile Methodology For Software DevelopmentAgile Methodology For Software Development
Agile Methodology For Software Development
 
Practices of agile developers
Practices of agile developersPractices of agile developers
Practices of agile developers
 
Agile Development
Agile DevelopmentAgile Development
Agile Development
 
Open agile is free and open source community agile-
Open agile  is free and open source community agile-Open agile  is free and open source community agile-
Open agile is free and open source community agile-
 

Recently uploaded

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogueitservices996
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 

Recently uploaded (20)

Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Ronisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited CatalogueRonisha Informatics Private Limited Catalogue
Ronisha Informatics Private Limited Catalogue
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 

PHP development for large agile projects

  • 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
  • 4. What is a large project?
  • 5. Can something large be agile at all?
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 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
  • 18. Introduction The problem at hand Possible solutions Summary THE PRODUCT
  • 19. Introduction The problem at hand Possible solutions Summary
  • 20. Introduction The problem at hand Possible solutions Summary
  • 21. Introduction The problem at hand Possible solutions Summary
  • 22.
  • 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]
  • 24.
  • 25. Introduction The problem at hand Possible solutions Summary THE TEAMS
  • 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
  • 30. Introduction The problem at hand Possible solutions Summary THE INDIVIDUALS
  • 31.
  • 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!
  • 37.
  • 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