Recientemente comencé un trabajo nuevo, y nada más llegar me encontré con lo que me encuentro por lo general en todas las empresas del sector web aquí en Canarias: un entorno de desarrollo ineficiente, donde se realizaban un montón de tareas repetitivas manualmente, todo el mundo trabajaba sobre la misma copia de código ubicada en un servidor central (Windows) y la información sobre los proyectos se hallaba dispersa (carpetas de claves, carpetas de proyectos, correos de usuarios, etc...).
Todo el código era desarrollado en PHP; todos los proyectos llevaban un gestor desarrollado por la propia empresa, cuya interfaz es muy buena, con una usabilidad excelente, pero la implementación no permite su generalización para cualquier proyecto sin tener que modificar un montón de ficheros a mano.
Me gusta hacer bien mi trabajo, que mi tiempo sea productivo en lugar de perderlo haciendo tareas que podría hacer un mono entrenado. He comprobado las bondades del desarrollo agil, el control de versiones y el TDD (Test Driven Development); he paladeado las mieles del trabajo creativo mientras una serie de scripts se encargan de realizar las tareas rutinarias, asi que me propuse realizar cambios en todo el sistema productivo de la empresa.
Me fijé como objetivo final trabajar en un entorno de desarrollo robusto, seguro y flexible, en el que pueda ser feliz trabajando y mejore la productividad de la empresa. Esto último le encantó a mis empleadores, por lo que he tenido via libre a la hora de implementar los cambios.
Para ello los pasos a seguir son:
- instalar un servidor de desarrollo basado en un SO más estable (Linux).
- contratar un servidor dedicado para en la medida de lo posible alojar los trabajos realizados y no estar con las miserias y desventuras de los hosting compartidos.
- implementar un workflow basado en control de versiones.
- implantar metodologías ágiles ("Getting Real").
- implantar el desarrollo orientado a tests (TDD).
- automatizar todas las tareas rutinarias.
- progresivamente crear un sistema generador de proyectos para realizar con él las "típicas webs" y dejar el esfuerzo mental para los proyectos realmente interesantes.
- para las aplicaciones basadas en PHP, implementar el CakePHP, framework clon del Rails que me resulta cómodo por mi afinidad con el RoR.
- desarrollar los proyectos en Ruby on Rails preferentemente, sin descartar en cada momento usar otras tecnologías si son más adecuadas.
- cambiar la relación de la empresa con los clientes.
En sucesivos artículos, iremos viendo todos los pasos que he ido (estoy) dando para cumplir estos objetivos y así automatizar mi dia a día, dedicando mi esfuerzo mental a la parte más compleja y/o creativa de la programación.
Espero que estas recetas puedan automatizar tu día a día también.
Siguiente: Instalación del servidor de desarrollo (I)

0 comentarios:
Publicar un comentario en la entrada