SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
“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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie PHP AL RICO - Consejos para desarrolladores 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.. ..
 

Ähnlich wie PHP AL RICO - Consejos para desarrolladores 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Kürzlich hochgeladen (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

PHP AL RICO - Consejos para desarrolladores 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