SlideShare una empresa de Scribd logo
1 de 69
Descargar para leer sin conexión
Developing
sustainable projects
with PHP
Michele Orselli

            CTO@Ideato

            @_orso_
            mo@ideato.it




Who am I?
developing web projects is hard




a lot of web projects fail
Changing requirements
  Inconsistent demands
  Insufficient time or budget
  http://www.zdnet.com/blog/projectfailures/research-25-percent-of-web-projects-fail/665




a lot of web projects fail
can we develop in a
       sustainable way?


a lot of web projects fail
light weight processes


a lot of web projects fail
already heard about that?
this is NOT a talk about X
    where X IN (‘Agile’, ‘Lean’, ‘Scrum’, <insert buzzword>, ...)




already heard about that?
don’t make assumptions




how I (we?) develop soft ware
don’t make assumptions
                automate




how I (we?) develop soft ware
don’t make assumptions
                 automate
               communicate




how I (we?) develop soft ware
don’t make assumptions
                 automate
               communicate
           code is the easy part



how I (we?) develop soft ware
Thank you!


that’s all folks!
Documentation



a better workflow
Documentation
              Sucks!

a better workflow
User Stories FTW!


a better workflow
AS <role>
 I WANT <do something>
 SO THAT <benefit>



a better workflow
there’s no magic




a better workflow
there’s no magic
                whole team




a better workflow
there’s no magic
                whole team
               focus on value




a better workflow
there’s no magic
            whole team
           focus on value
   comunication vs documentation



a better workflow
no assumptions
on what the client thinks


a better workflow
prioritization
                 &
           estimation

a better workflow
no assumptions
     on what is valuable


a better workflow
GDocs FTW!


a better workflow
a better workflow
work in small batches



a better workflow
work in small batches
      and iterate


a better workflow
no assumptions
on what the client wants


a better workflow
visualize flow


a better workflow
Trello FTW!


a better workflow
a better workflow
release often


a better workflow
“if you aren’t ashamed [...] you’ve
        released too late”



a better workflow
no assumptions
on what the user wants


a better workflow
short cycles
                  rapid releases
                     iterate



let’s do that in PHP!
from stories to tests


let’s do that in PHP!
Behat


let’s do that in PHP!
Behat
Behat
Behat
Behat
libraries


libraries and frameworks
ASSETIC: asset management
DOCTRINE: ORM
TWIG: templating engine

Sf2 components: HttpKernel, Console, Process, ...
Zf2 components: Mvc, Db, Authentication, ...
...




don’t reinvent the wheel
don’t reinvent the wheel
don’t reinvent the wheel
microframeworks


libraries and frameworks
Silex


libraries and frameworks
libraries and frameworks
full-stack frameworks


libraries and frameworks
libraries and frameworks
libraries and frameworks
libraries and frameworks
testing
testing
no assumptions
           on the design


testing
no regressions


testing
Deploy


deploy
putting it all together
continuous
               integration


putting it all together
putting it all together: CI
wrap up


Wrap up
PHP is good enough


Wrap up
Code is the easy part


Wrap up
Focus on value


Wrap up
Visualize flow


Wrap up
Automate


Wrap up
Communicate


Wrap up
Thank you!
                      @_orso_                 mo@ideato.it


      Pics Credits

      Plant: http://commons.wikimedia.org/wiki/File:L4C_small.png

      Capt Obvious: http://uncyclopedia.wikia.com/wiki/File:Captain-obvious.jpg




that’s all folks!

Más contenido relacionado

La actualidad más candente

Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
DevOpsDays Tel Aviv
 

La actualidad más candente (20)

DevOps Not A Toolbox
DevOps Not A ToolboxDevOps Not A Toolbox
DevOps Not A Toolbox
 
The StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPBThe StartUp Agency - A Case Study on CFPB
The StartUp Agency - A Case Study on CFPB
 
Building effective dev ops engineering culture new
Building effective dev ops engineering culture newBuilding effective dev ops engineering culture new
Building effective dev ops engineering culture new
 
Scrum소개
Scrum소개Scrum소개
Scrum소개
 
Anti anti patterns
Anti anti patternsAnti anti patterns
Anti anti patterns
 
Agile learning with projects
Agile learning with projectsAgile learning with projects
Agile learning with projects
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
Nascenia -- company profile
Nascenia -- company profile Nascenia -- company profile
Nascenia -- company profile
 
Java sutra
Java sutraJava sutra
Java sutra
 
Promises in JavaScript with jQuery
Promises in JavaScript with jQueryPromises in JavaScript with jQuery
Promises in JavaScript with jQuery
 
I did IT my way
I did IT my wayI did IT my way
I did IT my way
 
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
 
РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021
РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021
РОМАН ЯКИМЧУК «Оптимізація QA процесів» Kyiv QADay 2021
 
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
 
The art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow testThe art of not being too good at the Marshmallow test
The art of not being too good at the Marshmallow test
 
Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015Deploy & Continunous Integration - TDC Floripa 2015
Deploy & Continunous Integration - TDC Floripa 2015
 
Nascenia: Road to Software Industry
Nascenia: Road to Software IndustryNascenia: Road to Software Industry
Nascenia: Road to Software Industry
 
Tech writing in a continuous deployment environment
Tech writing in a continuous deployment environmentTech writing in a continuous deployment environment
Tech writing in a continuous deployment environment
 
what's blocking our way
what's blocking our waywhat's blocking our way
what's blocking our way
 

Similar a Developing sustainable php projects

How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
jazoon13
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
Stein Inge Morisbak
 

Similar a Developing sustainable php projects (20)

How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
 
10 practices that every developer needs to start right now
10 practices that every developer needs to start right now10 practices that every developer needs to start right now
10 practices that every developer needs to start right now
 
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software DevelopmentJAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
JAZOON'13 - Sven Peters - How to do Kick-Ass Software Development
 
What DevOps Isn't
What DevOps Isn'tWhat DevOps Isn't
What DevOps Isn't
 
How To Do Kick-Ass Software Development
How To Do Kick-Ass Software DevelopmentHow To Do Kick-Ass Software Development
How To Do Kick-Ass Software Development
 
Atlassian - Software For Every Team
Atlassian - Software For Every TeamAtlassian - Software For Every Team
Atlassian - Software For Every Team
 
DevOps The Cultural revolution
DevOps The Cultural revolutionDevOps The Cultural revolution
DevOps The Cultural revolution
 
Better and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and EnjoymentBetter and Faster: A Journey Toward Clean Code and Enjoyment
Better and Faster: A Journey Toward Clean Code and Enjoyment
 
Jr devsurvivalguide
Jr devsurvivalguideJr devsurvivalguide
Jr devsurvivalguide
 
Paris Web - Javascript as a programming language
Paris Web - Javascript as a programming languageParis Web - Javascript as a programming language
Paris Web - Javascript as a programming language
 
Visualizing Work: If you can't see it, you can't manage it
Visualizing Work: If you can't see it, you can't manage itVisualizing Work: If you can't see it, you can't manage it
Visualizing Work: If you can't see it, you can't manage it
 
DevOps With Chef and Azure
DevOps With Chef and AzureDevOps With Chef and Azure
DevOps With Chef and Azure
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
ROOTS2011 Continuous Delivery
ROOTS2011 Continuous DeliveryROOTS2011 Continuous Delivery
ROOTS2011 Continuous Delivery
 
Agile Software Development for Non-Developers
Agile Software Development for Non-DevelopersAgile Software Development for Non-Developers
Agile Software Development for Non-Developers
 
OSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de PauwOSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
OSDC 2019 | Feature Branching considered Evil by Thierry de Pauw
 
DevOps for Managers
DevOps for ManagersDevOps for Managers
DevOps for Managers
 
How To Make Dev Ops Work @ Netlight Edge X Berlin
How To Make Dev Ops Work @ Netlight Edge X BerlinHow To Make Dev Ops Work @ Netlight Edge X Berlin
How To Make Dev Ops Work @ Netlight Edge X Berlin
 
How (can) Scrum and DevOps Walk Together to Build a High-Quality Product Deli...
How (can) Scrum and DevOps Walk Together to Build a High-Quality Product Deli...How (can) Scrum and DevOps Walk Together to Build a High-Quality Product Deli...
How (can) Scrum and DevOps Walk Together to Build a High-Quality Product Deli...
 
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as CodeConfoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
Confoo-Montreal-2016: Controlling Your Environments using Infrastructure as Code
 

Más de Michele Orselli

Más de Michele Orselli (20)

Tackling Tech Debt with Rector
Tackling Tech Debt with RectorTackling Tech Debt with Rector
Tackling Tech Debt with Rector
 
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
Comunicare, condividere e mantenere decisioni architetturali nei team di svil...
 
A dive into Symfony 4
A dive into Symfony 4A dive into Symfony 4
A dive into Symfony 4
 
A recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion amsA recommendation engine for your applications codemotion ams
A recommendation engine for your applications codemotion ams
 
A recommendation engine for your applications phpday
A recommendation engine for your applications phpdayA recommendation engine for your applications phpday
A recommendation engine for your applications phpday
 
Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17Hopping in clouds - phpuk 17
Hopping in clouds - phpuk 17
 
A recommendation engine for your php application
A recommendation engine for your php applicationA recommendation engine for your php application
A recommendation engine for your php application
 
Symfony e micro (non così tanto) services
Symfony e micro (non così tanto) servicesSymfony e micro (non così tanto) services
Symfony e micro (non così tanto) services
 
Hopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to anotherHopping in clouds: a tale of migration from one cloud provider to another
Hopping in clouds: a tale of migration from one cloud provider to another
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Migrare a Symfony 3
Migrare a Symfony 3Migrare a Symfony 3
Migrare a Symfony 3
 
Vagrant for real
Vagrant for realVagrant for real
Vagrant for real
 
Implementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconfImplementing data sync apis for mibile apps @cloudconf
Implementing data sync apis for mibile apps @cloudconf
 
Server side data sync for mobile apps with silex
Server side data sync for mobile apps with silexServer side data sync for mobile apps with silex
Server side data sync for mobile apps with silex
 
Continuous, continuous, continuous
Continuous, continuous, continuousContinuous, continuous, continuous
Continuous, continuous, continuous
 
Deploy a PHP App on Google App Engine
Deploy a PHP App on Google App EngineDeploy a PHP App on Google App Engine
Deploy a PHP App on Google App Engine
 
Implementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile AppsImplementing Server Side Data Synchronization for Mobile Apps
Implementing Server Side Data Synchronization for Mobile Apps
 
Deploy a php app on Google App Engine
Deploy a php app on Google App EngineDeploy a php app on Google App Engine
Deploy a php app on Google App Engine
 
Sf2 wtf
Sf2 wtfSf2 wtf
Sf2 wtf
 

Developing sustainable php projects