Las skills de un Ingeniero PHP

Escucho muy seguido gente que no confía en PHP por que dice que es una lenguaje que no escala, que es cochino y que no provee elementos “avanzados de programación” como threads, tipos de datos y otras cosas así. Si bien esto tiene algo de cierto no todo es tan negro. PHP es un lenguaje sencillo pero poderoso dado que provee una API gigantesca para interactuar casi con cualquier estandard de manera muy sencilla; provee una flexibilidad asombrosa ante los cambios, los deploys no son una tarea preocupante y la compatibilidad con las plataforma de Hardware es asombrosa (hasta corre sobre iSeries (ex AS400)).

Esta sencillez provista por PHP a su vez impacta en que gente no especializada en el desarrollo de aplicaciones se involucre en el mundo del desarrollo web y haciendo sites funcionales pero utilizando solo el 10% de las herramientas provistas por PHP; cuando un verdadero ingeniero de software se cruza con esta gente y comienza a preguntar cosas sobre POO, Escalabilidad, Extensibilidad, Reutilización llega a la conclusión de que la gran mayoría de los desarrolladores PHP no saben mucho de desarrollo en general y que no pueden implementar soluciones grandes.

Me duele decirlo pero en gran parte esta conclusión no es tan errada. La mayoría de los desarrolladores PHP que conozco todavía siguen programando proceduralmente, con scripts aislados, utilizando mysql_connect y olvidándose de millones de buenas prácticas. Esto es algo que me preocupa por que veo poca madurez de los desarrolladores PHP en general (hablando de la región y la gente con la que habitualmente me cruzo).

Que debería conocer un Desarrollador PHP hoy en día?, si de verdad quieren hacer desarrollos profesionales, escalables y de gran embergadura. Bueno deberíamos estar hablando para empezar de POO, estos conceptos tienen que ser moneda corriente en la vida del desarrollador, cuestiones que no pueden escaparse son:

– Análisis y Modelado
– Herencia
– Clases Abstractas
– Interfaces
– Polimorfismo

Necesitan crear componentes de software basado en estos conceptos (mas allá de nombrar la definición del libro). PHP provee una implementación de Objetos muy copada, piola y sencilla, es un desperdicio no aprovecharla.

De la mano a la POO viene el tema de los patrones de Diseño, esto es otro tema en el que reiteradamente insisto a mis conocidos que aprendan y apliquen. Empezando desde el MVC, siguiendo por los ORM y hasta el que se les ocurra, pero es necesario que manejen estos conceptos para desarrollar una verdadera implementación flexible en sus aplicaciones con PHP.

Para facilitar su camino en el aprendizaje en estas cuestiones les recomiendo siempre comenzar a utilizar algún Framework y analizar su Core. Como siempre el framework que recomiendo estudiar es Symfony, pero si este no es de su agrado puedo ver Zend, Cake, Code Igniter o Kohana.

Ademas de estas cuestiones tenemos otra cosas para ver como las librerías típicas de PHP, PDO, Xdebug, GD, ImageMagic, SimpleXml, Curl, PHPUnit entre otras … estas librerías debe conocerse.

Otras skills que un desarrollador PHP debe tener en su maletín son;

– Administración de Apache, levantar Virtual Hosts, Analizar logs, Mod Rewrite, etc.
– Administración del SO, Networking, Firewalls, Permisos, etc.
– Manejo de un CVS, Subversion o Git son buenas opciones
– Dominio de SQL, queries, vistas, subqueries, permisos, triggers, sql optimization, etc.
– Caching (Memcache, Varnish, Squid, Mod Proxy)

Y podríamos seguir la lista, pero no quiero asustarlos 😛 … esto es lo mínimo que un verdadero Ingeniero PHP debe conocer y saber; sino no dejan de saber hacer un par de simple scripts.

Adicionalmente a todo esto, los devs PHP siempre están muy relacionados con las UI (PHP es un lenguaje muy usado para el frontend de las aplicaciones), por ello también se busca conocimientos en HTML, CSS y JS, pero eso lo dejo para otro día :).

Share

3 comments

  1. Muchas de estas cosas yo recomiendo a la gente que empieza con cualquier tecnología (Flash en mi caso :D), no solo PHP, es lo básico de lo básico para poder empezar a desarrollar verdaderas aplicaciones no solo blogs y foros enlatados.
    Muy bueno el post Agus, espero lo lean chicos de la facu, no se queden con lo que les dan que lamentablemente todavia no llega a lo básico de lo básico ni de cerca 🙁

  2. Tengo más de las “últimas cosas” que pusiste en el maletín que de las primera… je je. Vamos a ver que se puede mejorar.
    Buenas recomendaciones.
    Gracias

  3. Muy buen artículo Agustín. Mucha verdad en tus palabras y grandes consejos. Es muy importante que los que ya han recorrido un trayecto tengan la humildad, si se quiere, de convidar con tips a los que vienen recolectando experiencias. También es importante saber escuchar (leer en este caso) las críticas que haces al nivel que tienen los desarrolladores del medio local, para ser realistas y aprender a alimentarnos de buenas prácticas y conceptos. Muchas gracias, un abrazo

Leave a Reply

Your email address will not be published. Required fields are marked *