Transcript
Page 1: PHP development for large agile projects

PHP development for large agile projectsOverview and hints for developers

Grzegorz Godlewski

PHPCon 2016, Ossa, Poland

October 2, 2016

Page 2: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Agenda

1 Introduction

2 The problem at hand

3 Possible solutions

4 Summary

Page 3: PHP development for large agile projects

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 anddoing work in which it is understood that making changes asthey are needed is an important part of the job

Page 4: PHP development for large agile projects

What is a large project?

Page 5: PHP development for large agile projects

Can something large be agile at all?

Page 6: PHP development for large agile projects
Page 7: PHP development for large agile projects
Page 8: PHP development for large agile projects
Page 9: PHP development for large agile projects
Page 10: PHP development for large agile projects
Page 11: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

The fundamental problem

One thing is sure about software development...there will be change

Page 12: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

To do list...

Display product

Products in the cart

Order placement

Vouchers

Page 13: PHP development for large agile projects

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

...

Page 14: PHP development for large agile projects
Page 15: PHP development for large agile projects
Page 16: PHP development for large agile projects

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

Page 17: PHP development for large agile projects

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 (fromtechnical perspective)

INDIVIDUALS: I want to do a great job in a greatenvironment

Page 18: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

THE PRODUCT

Page 19: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Page 20: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Page 21: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Page 22: PHP development for large agile projects
Page 23: PHP development for large agile projects

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]

Page 24: PHP development for large agile projects
Page 25: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

THE TEAMS

Page 26: PHP development for large agile projects

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

Page 27: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Coding Practices

Code and Design Simply

Refactor Mercilessly

Develop Coding Standards

Develop a Common Vocabulary

Page 28: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Developer Practices

Adopt Test-Driven Development

Practice Pair Programming

Adopt Collective Code Ownership

Integrate Continually

Page 29: PHP development for large agile projects

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

Page 30: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

THE INDIVIDUALS

Page 31: PHP development for large agile projects
Page 32: PHP development for large agile projects

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

Page 33: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

The industry standard acronyms

SOLID

KISS

DRY

YAGNI

Page 34: PHP development for large agile projects
Page 35: PHP development for large agile projects

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

Page 36: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

But I’m working with legacysoftware!

Page 37: PHP development for large agile projects
Page 38: PHP development for large agile projects

Questions?

Page 39: PHP development for large agile projects

Introduction The problem at hand Possible solutions Summary

Thank you!

http://linkedin.com/in/ggodlewskiMail: [email protected]

Twitter: @GGodlewski

Page 40: PHP development for large agile projects

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