SlideShare una empresa de Scribd logo
1 de 59
Descargar para leer sin conexión
“AL RICO” PHP
    Cositas que deberíais saber y que probablamente
ya sabéis y que en caso contrario deberías saber, porque
               sino lo sabéis, vais a sufrir...

    Carlos Buenosvinos (@buenosvinos)
    Castellón, Universitat Jaume I (decharlas.com)
                16 de Mayo de 2010
                    18:00 - 20:00
CARLOS BUENOSVINOS
Certified Zend PHP and Zend Framework Engineer
          Certified Scrum Master (CSM)
      PHP Barcelona User Group Cofounder
  Scrum Master and Tech Lead at Emagister.com

               @buenosvinos
          carlos@quepimquepam.com
REQUISITOS Y CALENTAMIENTO
       Brazos, Piernas y Vergüenza
PREGUNTILLAS
¡Se admiten en cualquier momento!
NIVEL DE SUFRIMIENTO
 ¿Cuál es vuestro nivel de tolerancia al dolor?
BROKEN WINDOW PARADIGM
      Claaaro, como ya está rota...
TECHNICAL DEBT
  ¡Atención a los intereses!
OBJETIVOS

1.Desarrolladores: Conocer qué se espera de un buen
  profesional del desarrollo web en PHP.

2.Tech Leads y CTOs: Evaluar el nivel de madurez de
  vuestro equipo y ciclo de desarrollo.

3.Todos: Descrubir conceptos nuevos que investigar en casa y
  aplicar en vuestro día a día

4.Yo: Comerme un buen arrocito
CONSEJILLOS DE LA ABUELA
     Remedios, infusiones y cataplasmas
TAGS DE LA CHARLA


• IDE, Coding  Standards, Inline Documentation, Control de
 Versiones, Issue Tracker, Wiki, Metodología, Frameworks,
 Seguridad, Debugging, Performance, Entornos, Deployment,
 Search and Indexing (Solr), Logging
¿POR QUÉ?
    ...
CARACTERÍSTICAS (I)

• Lenguaje    pensado por y para la Web

• Fácil   y Popular

• Hasta    en la sopa

• Pragmático

• Time      to Market
CARACTERÍSTICAS (II)


• Easy   to learn, difficult to master

• Inconsistencia   (a mejorar en PHP 6.0)

• Relación   con otros lenguajes (Ruby, Python, JAVA, .NET,
 Perl)
IDE
Escribiendo código...
IDE

•   ¿Todos los developers el mismo IDE o cada uno el que quiera?

•   Existentes: Eclipse PDT, NetBeans, Zend Studio, Komodo, VIM, etc.

•   A considerar: Cross referencing, Control de Versiones, Search and Replace
    potente (+ integraciones con Check Style, Unit Tests, etc.)

•   Trucos

    •   Intentar unificar al máximo el entorno de desarrollo (menos
        documentación, casos y mejor soporte interno)

    •   Meter en la WIKI todo lo relacionado con la instalación, configuración, etc.
CODING STANDARD
 Vamos a ver si nos aclaramos todos :)
CODING STANDARDS
•   Define reglas de codificación y garantiza la legibilidad del código

•   Uno propio vs. uno ya existente (DRW)

•   Existentes en PHP (PEAR y Zend Framework)

•   Herramientas

    •   phpcs (PHP Code Sniffer): Analiza el código fuente y genera resultados sobre las violaciones

•   Trucos

    •   Documentarlo en la Wiki y crear un responsable

    •   Integrarlo como un precommit hook en vuestro VCS

    •   Integrarlo con vuestro servidor de integración continua para tener informes semanales con la
        evolución de la violaciones en la codificación y tomar acciones
INLINE DOCUMENTATION
     Documentar es un rollo!
INLINE DOCUMENTATION
•   ¿Documentamos el código o no?

    •   A: “No haría falta documentar si los nombre de los métodos son claros”

    •   B: “Lo documentamos todo” (type hinting del IDE)

•   Herramientas

    •   phpDoc

    •   Doxygen

•   Trucos

    •   Política de documentación a la Wiki

    •   Integrarlo con el servidor de integración continua para tener la documentación actualizada con cada build

    •   ¡La documentación no está en el Control de Versiones!
CONTROL VERSION SYSTEM
    ¿Qué ha pasado? ¿La has liado parda?
CONTROL VERSION SYSTEM
•   SVN, GIT o Mercurial (A poder ser, los dos primeros)

•   Herramienta web de visualización (por ejemplo, websvn)

•   Evitar las branches tanto como sea posible (no inventéis políticas de branching
    especiales)

•   Trucos

    •   Utilizar los hooks para realizar acciones interesantes (Vincular commits con
        tareas en un Bug tracker, php -l, comprobar los errores de conding standard,
        etc.)

    •   Uso de “externals”
ISSUE TRACKER
Quién hizo qué, cuándo y dónde
ISSUE TRACKER

•   Necesitáis un sitio donde gestionar el avance de los proyectos y tener visibilidad del qué,
    quién y cuándo.

•   Opciones

    •   JIRA (Atención con la versión “starter” - 60 $ - Todos los productos hasta 10 usuarios)

    •   Redmine, Mantis, Trac, Bugzilla, etc.

•   Trucos

    •   Buscar soluciones que se integren fácilmente con otros elementos del sistema (Tracker
        + SVN, Tracker + IDE, etc.)

    •   Buscar plugins que faciliten el Code Review siempre que sea posible.
WIKI
¿Cómo se hace...?
WIKI

•   Todas las políticas de Coding Standard, Inline Documentation, Especificaciones, aspectos
    de arquitectura, cómo pedir las vacaciones, etc.

•   Opciones:

    •   Confluence (hermana de JIRA)

    •   Twiki, Mediawiki, etc.

•   Trucos

    •   Cread apartados diferentes y asignadles responsable (es una miniresponsabilidad
        asumible)

    •   Flexibilidad con los permisos (de menos a más)
METHODOLOGY
Uno para todos y todos para uno
METHODOLOGY
•   “Es mejor una metodología de desarrollo mala que no tener metodología”

•   Clasificación

    •   Pesadas: Waterfall, UP, etc.

    •   Ágiles: Scrum, XP, etc.

•   La tendencia del mercado es utilizar Scrum y los resultados presentan incrementos de
    productividad entre el 200% y 300%. Algunos ejemplos: Softonic, Emagister, Infojobs, etc.

•   Cómo empezar:

    •   http://www.scrumalliance.org/pages/scrum_student_resources

    •   “Scrum and XP from the trenches”
PHP FRAMEWORKS
  Había una vez, un circo...
PHP FRAMEWORKS
•   Agrupan algunos principios fundamentales: DRY, DRW, KISS, etc.

•   Ventajas: Desarrollador más competitivo, facilidad de contratación, mejora
    del tiempo de adaptación, reducción de mantinimiento, etc.

•   Opciones: Zend Framework, Symfony, CodeIgniter, CakePHP, etc.

•   Trucos

    •   Usadlos ya! Empezad con nuevos proyectos.

    •   Migrar componentes sueltos (Base de datos, templates, controladores,
        mails, etc.)
LIBRARIES & COMPONENTS
   Que ya existe, que sí, que te lo digo yo...
LIBRARIES & COMPONENTS
•   Don’t reinvent the wheel

•   Not invented here syndrome

•   Extender y participar, no modificar

•   Típicos: ORM (Doctrine, Propel), Templates (Smarty, Twig)

•   Recomendaciones

    •   PEAR

    •   PHP Extensiones

    •   Github (http://github.com)
SECURITY
 Ohmmm...
SECURITY
•   Mantra: “Filter your input, scape your output” + Filter extension enabled

•   Problemas típicos (80/20):

    •   SQL Injection (prepared statements)

    •   XSS (escapar la salida)

•   Recomendaciones:

    •   “Essential PHP Security” (Chris Shiflett)

    •   “Guide to PHP Security” (Ilia Alshanetsky)
DEBUGGING & PROFILING
        Paso a paso...
DEBUGGING

•   Sobre Alt-tab debugging, Echo-debugging

•   Recomendaciones:

    •   Xdebug (http://www.xdebug.org)

    •   Zend Debugger

•   Profiling:

    •   Xdebug + Visualizador: (KCacheGrind, Webgrind, Xdebugtoolkit)
UNIT TESTS
Que te digo yo que funciona...
UNIT TEST
•   Una tarea no está acabada sino tiene los unit tests escritos, en verde y con una cobertura
    de > 80%

•   Mantras: “Red, Green, Red, Green”, “Test, Code, Test, Refactor, Test”

•   Coupling / Decoupling

•   Herramientas

    •   phpUnit + (Db: commit/rollback | fixtures | DbUnit)

•   Recomendaciones:

    •   Integrar los unit tests con el servidor de integración continua (*)

    •   La ejecución ha de durar del order de segundos
AUTOMATED TESTS
  Está vivo! Está viiiiiiivooooo!!
AUTOMATED TESTS
•   Selenium RC + Selenium Grid (http://seleniumhq.org/projects/)

•   Dentro del Control de Versiones

•   Utilizar el package “Selenium” que hay dentro de phpUnit.

•   Vais a necesitar hierro! (Virtualización!)

•   Recomendaciones:

    •   Integrar los tests funcionales con el servidor de integración continua (que los
        ejecute por la noche)

    •   Empezad por la funcionalidades críticas de vuestro negocio
CONTINUOUS INTEGRATION
      5 minutos de ejercicio al día!
CONTINUOUS INTEGRATION

•   Opciones:

    •   Jenkins (antes conocido como Hudson)

    •   Cruise Control + phpUnderControl

    •   Xinc

•   Recomendaciones

    •   Respetar el tempo de los jobs (unit tests = segundos, métricas = minutos, etc.)

    •   Mantener los builds estables lo máximo posible (si el build se rompre, la
        prioridad es arreglarlo)
METRICS
En ocasiones... veo...
METRICS
•   Algunas métricas fáciles de generar y disponer:

    •   phpmd (Mess detection)

    •   phpcpd (Copy detection)

    •   pdepend (Dependencia entre paquetes)

    •   phpcs (Coding Standards)

•   Recomendaciones

    •   Integrarlo con la herramienta de integración continua y evaluarlo
        semanalmente para poder tomar acciones al respecto.
PERFORMANCE
  Que se las pela!
PERFORMANCE
•   Cache

    •   APC + Memcached (Output y Datos)

•   Background Processing (Colas)

    •   Gearman, ActiveMQ, etc.

•   Sharding

    •   Entornos de alta escritura (redes sociales)

•   Client Side: CDN + YSlow and PageSpeed Suggestion
DEPLOYMENT
Vamos que nos vamos...
DEPLOYMENT
•   Características de un buen deployment

    •   Puedo eligir que versión y en qué servidor

    •   Automático (100%) - Código, CDN, BBDD, etc.

    •   Menos de 15 min. aprox. para aplicaciones grandes

•   Recomendaciones

    •   Generaos un script de deployment

    •   Automatizarlo usando “ant” o “phing”

    •   Capistrano (https://github.com/capistrano)
ENVIRONMENTS
   ¿Dónde estoy?
DEPLOYMENT
•   Asegurar que los entornos son lo más parecidos (también dentro del mismo nivel)

    •   php.ini, extensiones, apaches, usuarios, versiones, etc.

•   Combinaciones

    •   Desarrollo, Test, Producción

    •   Desarrollo, Test, Acceptance, Producción

    •   Desarrollo, Test, Acceptance, Producción, Debug

•   Recomendaciones

    •   Virtualización (VMWare Workstation)

    •   Puppet (https://github.com/puppetlabs/puppet)
LOGGING
¿Qué ha pasao’?
DEPLOYMENT

•   Utilizad el E_STRICT siempre que sea posible (¿nivel de
    sufrimiento?)

•   No os compliquéis la vida: Syslog

•   Logad en asíncrono con time out cortos

•   Recomendaciones

    •   Syslog

    •   Splunk
SEARCH
¿Dónde está Wally?
SEARCH
•   ¿Necesitaréis FULL-TEXT searches?

•   Soluciones nativas PHP son de bajo rendimiento

•   Sphinx

    •   cliente propio dentro de la documentación

•   Solr

    •   php-solr

    •   Solarium
EQUIPO
El motor que mueve todas las cosas
EQUIPO


• Formación     interna semanal

• “Exigir” certificaciones

• Delegar    y hacer que asuman responsabilidades por igual

• Positive   thinking (ayudar a los demás)
CONCLUSIONES
   Y para acabar...
CONCLUYENDO

• Estandarización significa que todo sea más sencillo (sobretodo
 en el largo plazo)

• Innovación   significa “momentum”

• Cumplir   los basics

• Crecer   como empresa, equipo y profesional
PREGUNTILLAS
    Ánimo!
MUCHÍSIMAS GRACIAS
               “AL RICO” PHP
    Cositas que deberíais saber y que probablamente
ya sabéis y que en caso contrario deberías saber, porque
               sino lo sabéis, vais a sufrir...

    Carlos Buenosvinos (@buenosvinos)
        carlos@quepimquepam.com
    Castellón, Universitat Jaume I (decharlas.com)
                16 de Mayo de 2010
                    18:00 - 20:00

Más contenido relacionado

La actualidad más candente

Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaRoberto Segura
 
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016Pablo Arias
 
Lineamientos acompañamiento para la creación de prototipos mvp dentro del...
Lineamientos acompañamiento para la creación de prototipos   mvp dentro del...Lineamientos acompañamiento para la creación de prototipos   mvp dentro del...
Lineamientos acompañamiento para la creación de prototipos mvp dentro del...Nayib Abdala
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...César Hernández
 
Introducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .NetIntroducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .NetAbel Quintana Lopez
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónKleer Agile Coaching & Training
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
 
Argentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting
 
Cómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebasCómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebasAbel Quintana Lopez
 
scrum developer certified expert - sdce
scrum developer certified expert - sdcescrum developer certified expert - sdce
scrum developer certified expert - sdceCristinaMenesesMonte
 
Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Roberto Segura
 
E2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feoE2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feoAbel Quintana Lopez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Capistrano drupalcamp-jerez-2015
Capistrano drupalcamp-jerez-2015Capistrano drupalcamp-jerez-2015
Capistrano drupalcamp-jerez-2015David Gil Sánchez
 
Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019Carlos Buenosvinos
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomlaRoberto Segura
 

La actualidad más candente (20)

Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomla
 
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
Joomla como plataforma de eCommerce - Joomla Day La Rioja 2016
 
Lineamientos acompañamiento para la creación de prototipos mvp dentro del...
Lineamientos acompañamiento para la creación de prototipos   mvp dentro del...Lineamientos acompañamiento para la creación de prototipos   mvp dentro del...
Lineamientos acompañamiento para la creación de prototipos mvp dentro del...
 
Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...Java mission control para monitoreo, administración y profilig de aplicacione...
Java mission control para monitoreo, administración y profilig de aplicacione...
 
Introducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .NetIntroducción a la automatización de pruebas con tecnologías .Net
Introducción a la automatización de pruebas con tecnologías .Net
 
Dev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producciónDev ops e infraestructura – acompañando nuestro software a producción
Dev ops e infraestructura – acompañando nuestro software a producción
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
Argentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework Automatización
 
Cómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebasCómo iniciarme en el mundo de la automatización de pruebas
Cómo iniciarme en el mundo de la automatización de pruebas
 
scrum developer certified expert - sdce
scrum developer certified expert - sdcescrum developer certified expert - sdce
scrum developer certified expert - sdce
 
Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!Introduccción a la programación en Joomla!
Introduccción a la programación en Joomla!
 
E2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feoE2E testing frameworks:lo bueno, lo malo y lo feo
E2E testing frameworks:lo bueno, lo malo y lo feo
 
El coste de no usar integración continua
El coste de no usar integración continuaEl coste de no usar integración continua
El coste de no usar integración continua
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Skipfish
Skipfish Skipfish
Skipfish
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
The path to automation heaven
The path to automation heavenThe path to automation heaven
The path to automation heaven
 
Capistrano drupalcamp-jerez-2015
Capistrano drupalcamp-jerez-2015Capistrano drupalcamp-jerez-2015
Capistrano drupalcamp-jerez-2015
 
Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019Eventos, mensajería y otras fábulas - PulpoCon 2019
Eventos, mensajería y otras fábulas - PulpoCon 2019
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 

Similar a "Al rico" PHP

Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales atSistemas
 
Herramientas para la medicion de desempeño PHPConMX 2012
Herramientas para la medicion de desempeño  PHPConMX 2012Herramientas para la medicion de desempeño  PHPConMX 2012
Herramientas para la medicion de desempeño PHPConMX 2012Carlos Nacianceno
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaCSA Argentina
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptxDyllanBastidas
 
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Antonio Ognio
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoLuciano Moreira da Cruz
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
NoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfNoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfRicard Clau
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 

Similar a "Al rico" PHP (20)

Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
 
Herramientas para la medicion de desempeño PHPConMX 2012
Herramientas para la medicion de desempeño  PHPConMX 2012Herramientas para la medicion de desempeño  PHPConMX 2012
Herramientas para la medicion de desempeño PHPConMX 2012
 
Flujo de desarrollo para drupal (PFC)
Flujo de desarrollo para drupal (PFC)Flujo de desarrollo para drupal (PFC)
Flujo de desarrollo para drupal (PFC)
 
Scrum y craftsmanship
Scrum y craftsmanshipScrum y craftsmanship
Scrum y craftsmanship
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Presentacion DevSecOps Argentina
Presentacion DevSecOps ArgentinaPresentacion DevSecOps Argentina
Presentacion DevSecOps Argentina
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx01 T1 2021 Sistemas Embebidos.pptx
01 T1 2021 Sistemas Embebidos.pptx
 
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
Desarrollo ágil de sistemas distribuidos con Python empleando la arquitectura...
 
Devsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivoDevsecops superstar un movimiento masivo
Devsecops superstar un movimiento masivo
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Introducción a microservicios
Introducción a microserviciosIntroducción a microservicios
Introducción a microservicios
 
Comenzando a usar el Continuous Delivery
 Comenzando a usar el Continuous Delivery Comenzando a usar el Continuous Delivery
Comenzando a usar el Continuous Delivery
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
NoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdfNoEresTanEspecial-PulpoCon22.pdf
NoEresTanEspecial-PulpoCon22.pdf
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 

Más de Carlos Buenosvinos

Kit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering ManagersKit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering ManagersCarlos Buenosvinos
 
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)Carlos Buenosvinos
 
Road From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event SourcingRoad From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event SourcingCarlos Buenosvinos
 
De Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event SourcingDe Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event SourcingCarlos Buenosvinos
 
Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018Carlos Buenosvinos
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017Carlos Buenosvinos
 
A Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event SourcingA Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event SourcingCarlos Buenosvinos
 
Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Carlos Buenosvinos
 
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Carlos Buenosvinos
 
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / MedioDesarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / MedioCarlos Buenosvinos
 
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)Carlos Buenosvinos
 
PHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHPPHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHPCarlos Buenosvinos
 
Desarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otrosDesarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otrosCarlos Buenosvinos
 
Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)Carlos Buenosvinos
 
Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011Carlos Buenosvinos
 
Scrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanasScrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanasCarlos Buenosvinos
 
Zend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification TestZend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification TestCarlos Buenosvinos
 

Más de Carlos Buenosvinos (20)

Kit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering ManagersKit de Supervivencia para CTOs y Engineering Managers
Kit de Supervivencia para CTOs y Engineering Managers
 
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
Deliveritis Crónica - CAS Spain 2020 (Agile Is The New Normal)
 
Road From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event SourcingRoad From Hex. Architecture to Event Sourcing
Road From Hex. Architecture to Event Sourcing
 
De Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event SourcingDe Arquitectura Hexagonal a Event Sourcing
De Arquitectura Hexagonal a Event Sourcing
 
Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018Primeros Pasos Liderando Equipos Técnicos - Techne 2018
Primeros Pasos Liderando Equipos Técnicos - Techne 2018
 
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
A Journey from Hexagonal Architecture to Event Sourcing - SymfonyCon Cluj 2017
 
A Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event SourcingA Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event Sourcing
 
Scrum, no eres tú, soy yo
Scrum, no eres tú, soy yoScrum, no eres tú, soy yo
Scrum, no eres tú, soy yo
 
Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016Integrating Bounded Contexts Tips - Dutch PHP 2016
Integrating Bounded Contexts Tips - Dutch PHP 2016
 
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
 
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / MedioDesarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
 
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
 
PHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHPPHP 2014/15 - Visión global del ecosistema PHP
PHP 2014/15 - Visión global del ecosistema PHP
 
Desarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otrosDesarrollo móvil con Titanium, PhoneGap y otros
Desarrollo móvil con Titanium, PhoneGap y otros
 
Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)Introducción a Agile y Scrum (BetaBeers.com)
Introducción a Agile y Scrum (BetaBeers.com)
 
Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011Team Engagement PHP Barcelona 2011
Team Engagement PHP Barcelona 2011
 
Scrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanasScrum al Detalle: Revision práctica y perversiones humanas
Scrum al Detalle: Revision práctica y perversiones humanas
 
Zend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification TestZend PHP 5.3 Demo Certification Test
Zend PHP 5.3 Demo Certification Test
 
Scrum en Grupo Intercom
Scrum en Grupo IntercomScrum en Grupo Intercom
Scrum en Grupo Intercom
 
Comparativa Zend vs Symphony
Comparativa Zend vs SymphonyComparativa Zend vs Symphony
Comparativa Zend vs Symphony
 

Último

Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 

Último (20)

Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 

"Al rico" PHP

  • 1. “AL RICO” PHP Cositas que deberíais saber y que probablamente ya sabéis y que en caso contrario deberías saber, porque sino lo sabéis, vais a sufrir... Carlos Buenosvinos (@buenosvinos) Castellón, Universitat Jaume I (decharlas.com) 16 de Mayo de 2010 18:00 - 20:00
  • 2. CARLOS BUENOSVINOS Certified Zend PHP and Zend Framework Engineer Certified Scrum Master (CSM) PHP Barcelona User Group Cofounder Scrum Master and Tech Lead at Emagister.com @buenosvinos carlos@quepimquepam.com
  • 3. REQUISITOS Y CALENTAMIENTO Brazos, Piernas y Vergüenza
  • 4. PREGUNTILLAS ¡Se admiten en cualquier momento!
  • 5. NIVEL DE SUFRIMIENTO ¿Cuál es vuestro nivel de tolerancia al dolor?
  • 6. BROKEN WINDOW PARADIGM Claaaro, como ya está rota...
  • 7. TECHNICAL DEBT ¡Atención a los intereses!
  • 8. OBJETIVOS 1.Desarrolladores: Conocer qué se espera de un buen profesional del desarrollo web en PHP. 2.Tech Leads y CTOs: Evaluar el nivel de madurez de vuestro equipo y ciclo de desarrollo. 3.Todos: Descrubir conceptos nuevos que investigar en casa y aplicar en vuestro día a día 4.Yo: Comerme un buen arrocito
  • 9. CONSEJILLOS DE LA ABUELA Remedios, infusiones y cataplasmas
  • 10. TAGS DE LA CHARLA • IDE, Coding Standards, Inline Documentation, Control de Versiones, Issue Tracker, Wiki, Metodología, Frameworks, Seguridad, Debugging, Performance, Entornos, Deployment, Search and Indexing (Solr), Logging
  • 11. ¿POR QUÉ? ...
  • 12. CARACTERÍSTICAS (I) • Lenguaje pensado por y para la Web • Fácil y Popular • Hasta en la sopa • Pragmático • Time to Market
  • 13. CARACTERÍSTICAS (II) • Easy to learn, difficult to master • Inconsistencia (a mejorar en PHP 6.0) • Relación con otros lenguajes (Ruby, Python, JAVA, .NET, Perl)
  • 15. IDE • ¿Todos los developers el mismo IDE o cada uno el que quiera? • Existentes: Eclipse PDT, NetBeans, Zend Studio, Komodo, VIM, etc. • A considerar: Cross referencing, Control de Versiones, Search and Replace potente (+ integraciones con Check Style, Unit Tests, etc.) • Trucos • Intentar unificar al máximo el entorno de desarrollo (menos documentación, casos y mejor soporte interno) • Meter en la WIKI todo lo relacionado con la instalación, configuración, etc.
  • 16. CODING STANDARD Vamos a ver si nos aclaramos todos :)
  • 17. CODING STANDARDS • Define reglas de codificación y garantiza la legibilidad del código • Uno propio vs. uno ya existente (DRW) • Existentes en PHP (PEAR y Zend Framework) • Herramientas • phpcs (PHP Code Sniffer): Analiza el código fuente y genera resultados sobre las violaciones • Trucos • Documentarlo en la Wiki y crear un responsable • Integrarlo como un precommit hook en vuestro VCS • Integrarlo con vuestro servidor de integración continua para tener informes semanales con la evolución de la violaciones en la codificación y tomar acciones
  • 18. INLINE DOCUMENTATION Documentar es un rollo!
  • 19. INLINE DOCUMENTATION • ¿Documentamos el código o no? • A: “No haría falta documentar si los nombre de los métodos son claros” • B: “Lo documentamos todo” (type hinting del IDE) • Herramientas • phpDoc • Doxygen • Trucos • Política de documentación a la Wiki • Integrarlo con el servidor de integración continua para tener la documentación actualizada con cada build • ¡La documentación no está en el Control de Versiones!
  • 20. CONTROL VERSION SYSTEM ¿Qué ha pasado? ¿La has liado parda?
  • 21. CONTROL VERSION SYSTEM • SVN, GIT o Mercurial (A poder ser, los dos primeros) • Herramienta web de visualización (por ejemplo, websvn) • Evitar las branches tanto como sea posible (no inventéis políticas de branching especiales) • Trucos • Utilizar los hooks para realizar acciones interesantes (Vincular commits con tareas en un Bug tracker, php -l, comprobar los errores de conding standard, etc.) • Uso de “externals”
  • 22. ISSUE TRACKER Quién hizo qué, cuándo y dónde
  • 23. ISSUE TRACKER • Necesitáis un sitio donde gestionar el avance de los proyectos y tener visibilidad del qué, quién y cuándo. • Opciones • JIRA (Atención con la versión “starter” - 60 $ - Todos los productos hasta 10 usuarios) • Redmine, Mantis, Trac, Bugzilla, etc. • Trucos • Buscar soluciones que se integren fácilmente con otros elementos del sistema (Tracker + SVN, Tracker + IDE, etc.) • Buscar plugins que faciliten el Code Review siempre que sea posible.
  • 25. WIKI • Todas las políticas de Coding Standard, Inline Documentation, Especificaciones, aspectos de arquitectura, cómo pedir las vacaciones, etc. • Opciones: • Confluence (hermana de JIRA) • Twiki, Mediawiki, etc. • Trucos • Cread apartados diferentes y asignadles responsable (es una miniresponsabilidad asumible) • Flexibilidad con los permisos (de menos a más)
  • 26. METHODOLOGY Uno para todos y todos para uno
  • 27. METHODOLOGY • “Es mejor una metodología de desarrollo mala que no tener metodología” • Clasificación • Pesadas: Waterfall, UP, etc. • Ágiles: Scrum, XP, etc. • La tendencia del mercado es utilizar Scrum y los resultados presentan incrementos de productividad entre el 200% y 300%. Algunos ejemplos: Softonic, Emagister, Infojobs, etc. • Cómo empezar: • http://www.scrumalliance.org/pages/scrum_student_resources • “Scrum and XP from the trenches”
  • 28. PHP FRAMEWORKS Había una vez, un circo...
  • 29. PHP FRAMEWORKS • Agrupan algunos principios fundamentales: DRY, DRW, KISS, etc. • Ventajas: Desarrollador más competitivo, facilidad de contratación, mejora del tiempo de adaptación, reducción de mantinimiento, etc. • Opciones: Zend Framework, Symfony, CodeIgniter, CakePHP, etc. • Trucos • Usadlos ya! Empezad con nuevos proyectos. • Migrar componentes sueltos (Base de datos, templates, controladores, mails, etc.)
  • 30. LIBRARIES & COMPONENTS Que ya existe, que sí, que te lo digo yo...
  • 31. LIBRARIES & COMPONENTS • Don’t reinvent the wheel • Not invented here syndrome • Extender y participar, no modificar • Típicos: ORM (Doctrine, Propel), Templates (Smarty, Twig) • Recomendaciones • PEAR • PHP Extensiones • Github (http://github.com)
  • 33. SECURITY • Mantra: “Filter your input, scape your output” + Filter extension enabled • Problemas típicos (80/20): • SQL Injection (prepared statements) • XSS (escapar la salida) • Recomendaciones: • “Essential PHP Security” (Chris Shiflett) • “Guide to PHP Security” (Ilia Alshanetsky)
  • 34. DEBUGGING & PROFILING Paso a paso...
  • 35. DEBUGGING • Sobre Alt-tab debugging, Echo-debugging • Recomendaciones: • Xdebug (http://www.xdebug.org) • Zend Debugger • Profiling: • Xdebug + Visualizador: (KCacheGrind, Webgrind, Xdebugtoolkit)
  • 36. UNIT TESTS Que te digo yo que funciona...
  • 37. UNIT TEST • Una tarea no está acabada sino tiene los unit tests escritos, en verde y con una cobertura de > 80% • Mantras: “Red, Green, Red, Green”, “Test, Code, Test, Refactor, Test” • Coupling / Decoupling • Herramientas • phpUnit + (Db: commit/rollback | fixtures | DbUnit) • Recomendaciones: • Integrar los unit tests con el servidor de integración continua (*) • La ejecución ha de durar del order de segundos
  • 38. AUTOMATED TESTS Está vivo! Está viiiiiiivooooo!!
  • 39. AUTOMATED TESTS • Selenium RC + Selenium Grid (http://seleniumhq.org/projects/) • Dentro del Control de Versiones • Utilizar el package “Selenium” que hay dentro de phpUnit. • Vais a necesitar hierro! (Virtualización!) • Recomendaciones: • Integrar los tests funcionales con el servidor de integración continua (que los ejecute por la noche) • Empezad por la funcionalidades críticas de vuestro negocio
  • 40. CONTINUOUS INTEGRATION 5 minutos de ejercicio al día!
  • 41. CONTINUOUS INTEGRATION • Opciones: • Jenkins (antes conocido como Hudson) • Cruise Control + phpUnderControl • Xinc • Recomendaciones • Respetar el tempo de los jobs (unit tests = segundos, métricas = minutos, etc.) • Mantener los builds estables lo máximo posible (si el build se rompre, la prioridad es arreglarlo)
  • 43. METRICS • Algunas métricas fáciles de generar y disponer: • phpmd (Mess detection) • phpcpd (Copy detection) • pdepend (Dependencia entre paquetes) • phpcs (Coding Standards) • Recomendaciones • Integrarlo con la herramienta de integración continua y evaluarlo semanalmente para poder tomar acciones al respecto.
  • 44. PERFORMANCE Que se las pela!
  • 45. PERFORMANCE • Cache • APC + Memcached (Output y Datos) • Background Processing (Colas) • Gearman, ActiveMQ, etc. • Sharding • Entornos de alta escritura (redes sociales) • Client Side: CDN + YSlow and PageSpeed Suggestion
  • 47. DEPLOYMENT • Características de un buen deployment • Puedo eligir que versión y en qué servidor • Automático (100%) - Código, CDN, BBDD, etc. • Menos de 15 min. aprox. para aplicaciones grandes • Recomendaciones • Generaos un script de deployment • Automatizarlo usando “ant” o “phing” • Capistrano (https://github.com/capistrano)
  • 48. ENVIRONMENTS ¿Dónde estoy?
  • 49. DEPLOYMENT • Asegurar que los entornos son lo más parecidos (también dentro del mismo nivel) • php.ini, extensiones, apaches, usuarios, versiones, etc. • Combinaciones • Desarrollo, Test, Producción • Desarrollo, Test, Acceptance, Producción • Desarrollo, Test, Acceptance, Producción, Debug • Recomendaciones • Virtualización (VMWare Workstation) • Puppet (https://github.com/puppetlabs/puppet)
  • 51. DEPLOYMENT • Utilizad el E_STRICT siempre que sea posible (¿nivel de sufrimiento?) • No os compliquéis la vida: Syslog • Logad en asíncrono con time out cortos • Recomendaciones • Syslog • Splunk
  • 53. SEARCH • ¿Necesitaréis FULL-TEXT searches? • Soluciones nativas PHP son de bajo rendimiento • Sphinx • cliente propio dentro de la documentación • Solr • php-solr • Solarium
  • 54. EQUIPO El motor que mueve todas las cosas
  • 55. EQUIPO • Formación interna semanal • “Exigir” certificaciones • Delegar y hacer que asuman responsabilidades por igual • Positive thinking (ayudar a los demás)
  • 56. CONCLUSIONES Y para acabar...
  • 57. CONCLUYENDO • Estandarización significa que todo sea más sencillo (sobretodo en el largo plazo) • Innovación significa “momentum” • Cumplir los basics • Crecer como empresa, equipo y profesional
  • 58. PREGUNTILLAS Ánimo!
  • 59. MUCHÍSIMAS GRACIAS “AL RICO” PHP Cositas que deberíais saber y que probablamente ya sabéis y que en caso contrario deberías saber, porque sino lo sabéis, vais a sufrir... Carlos Buenosvinos (@buenosvinos) carlos@quepimquepam.com Castellón, Universitat Jaume I (decharlas.com) 16 de Mayo de 2010 18:00 - 20:00