Guía de supervivencia para programadores modernos

Mucho ha llovido desde los tiempos en que uno se ponía a programar “con lo puesto”. Bastaba llegar a tu lugar de trabajo, abrir un simple editor de texto y empezar a “picar” código. Eran exigencias diferentes en un mundo donde las aplicaciones web eran una tecnología que empezaba a dar sus primeros pasos y no eran necesarios grandes conocimientos al respecto.

La conferencia de marketing digital de referencia en Europa vuelve los días 25 y 26 de abril de 2018 en Madrid con grandes ideas, técnicas y consejos para hacer que tu empresa crezca. 2 días de sesiones avanzadas en el marketing digital del presente y del futuro. Sube a la nave #theInbounder

Aquello pasó y ya no volverá, y aunque algunos lo podamos recordar con cierta nostalgia no fue una época mejor que la actual. Hoy vivimos en un mundo mucho más profesionalizado, con equipos de desarrollo modernos que integran personas con conocimientos multidisciplinares, dando respuesta a requerimientos mucho más altos.

En este artículo vamos a dar un repaso por algunas de las tecnologías y metodologías que todo equipo de desarrollo moderno debería conocer o plantearse utilizar para sobrevivir en el siglo XXI.

 

Uso de Frameworks

Un framework de desarrollo es un conjunto de componentes que implementan funcionalidades para ayudarnos a los programadores a construir aplicaciones.

Los frameworks para desarrollo implementan patrones y técnicas que fomentan los buenos hábitos de programación, la reutilización de código y finalmente la construcción homogénea de las aplicaciones. Hacen que los/las programadores/ras no reinventen la rueda debido a que dentro del framework están solucionadas algunas de las tareas más comunes a cualquier desarrollo, como pueda ser la gestión de las peticiones, el envío de datos a las plantillas, la gestión de la seguridad o la carga de los parámetros en las URL.

En el universo de las aplicaciones de escritorio son muy conocidos y utilizados desde hace años. En el mundo web tardaron más en llegar, pero vinieron para quedarse. Si el equipo utiliza algún framework, su código tenderá a ser más limpio y estructurado, además los frameworks permiten la reutilización de paquetes de código, bien sea propio o realizado por terceros de forma rápida y sencilla. De esta manera, los programadores nos podemos centrar en resolver la problemática del cliente.

Todo esto también hace posible encontrar de manera más sencilla otros profesionales que se puedan sumar al proyecto con una transición más sencilla, ya que dentro del framework hay una estructura unificada y coherente que los profesionales reconocen.

Vamos, que los/las “master chef” de la informática, ahora utilizamos frameworks y lo de “when men were men and wrote their own device drivers” se ha quedado obsoleto, al menos en el desarrollo web ;-).

 

Uso de frameworks

 

Testing y refactorización

La refactorización y el testing deben formar parte del desarrollo de software en cualquier aplicación seria. La refactorización es una fase de mantenimiento en la que se analiza el código, cambiando si hace falta su diseño y eliminando lo innecesario. Con la refactorización se mejora la consistencia y se facilita el mantenimiento, minimizando su coste futuro.

Para que la refactorización y la implementación de nuevas funcionalidades se realice con seguridad, es necesario que el código integre una batería de test que asegure la integridad del mismo.

En mi opinión lo mejor es refactorizar y escribir los test conforme se va desarrollando la aplicación, así tendremos siempre la aplicación en condiciones para ser pasada a producción con total seguridad.

El testing y la refactorización suelen ser los grandes olvidados en los desarrollos actuales, pues no se percibe en muchas ocasiones la importancia que tienen y el valor que aportan al software.

Bueno no se percibe hasta que alguien hace una modificación e introduce un par de bugs en el trabajo de otros compañeros, claro ;-).

 

Despliegue de aplicaciones

El despliegue de las aplicaciones web constituye hoy en día todo un apartado dentro de la gestión del ciclo de desarrollo. En esta fase nos podemos encontrar desde simples despliegues a un sólo servidor hasta escenarios con despliegues a varios servidores, con distintos CDN implicados, balanceo de carga, etc.

Para la gestión de despliegues se utilizan programas específicos que actualizan los cambios necesarios de una forma sencilla y rápida. Si eres de los que todavía actualizan vía ftp, te lo tienes que replantear.

 

Control de versiones

La gestión de versiones es un “must have” en cualquier equipo de desarrollo. Aunque dicho departamento estuviera compuesto por una sola persona, sería necesario que todo el código estuviera bajo alguno de los sistemas de control de versiones disponibles.

La gestión de versiones nos permite revertir nuestro trabajo a un estado anterior, comparar los cambios, ver las modificaciones que ha realizado cada usuario, así como trabajar en equipos desde distintas ubicaciones, utilizar múltiples ramas de desarrollo, compartir código etc.

El objetivo es tener un control total sobre el proyecto y las diferentes versiones del mismo para dejar de ver a los programadores tirándose del pelo y gritando “¿¿Quién ha machacado mi código??”.
 


Metodologías ágiles


En un entorno altamente competitivo y cambiante es muy importante que los desarrollos de software se adapten a estas circunstancias. Las metodologías de desarrollo ágil promueven la comunicación con el cliente, la adaptación al cambio y la entrega de software funcionando.

Con una metodología ágil integrada en el equipo de desarrollo te aseguras tener un detalle claro de las funcionalidades a desarrollar con una valoración realizada por el equipo. Finalmente se avanza con seguridad en la dirección indicada por el cliente, que es el encargado de ir validando los entregables que se liberan de forma periódica.

Si no estás convencido, la alternativa es un grupo de programadores trabajando durante meses, sin unas especificaciones detalladas y sin ninguna validación del cliente. Entonces en la última semana verás la famosa “dead march” en la que, como en las grandes pelis de zombies, verás deambular a los programadores abatidos, con ojeras y preguntándose por qué no se dedicaron a vender pan o servir cafés. Mientras tanto el cliente insistirá impasible: “Esto no es lo que yo había pedido”. Te lo aseguro, ninguna película de terror que hayas visto te dará tanto miedo.

 

 

Virtualización

En los equipos de desarrollo actuales es muy frecuente trabajar con distintas tecnologías y aplicaciones, con distintas dependencias y requerimientos. Se hacen necesarios sistemas que permitan trabajar con todo este ecosistema de una manera unificada. Para poder dar solución a algunos de estos problemas contamos con los sistemas de virtualización.

Las principales ventajas de un entorno virtualizado para el desarrollo del software son:

            ●  Separación del entorno de desarrollo de la configuración de la máquina anfitrión. 


            ●  Facilita el trabajo en proyectos con distintas dependencias. 


            ●  Permite a otros profesionales incorporarse al proyecto independientemente del sistema operativo 
que utilicen. 


            ●  Unifica el entorno de ejecución de la aplicación a desarrollar para todos los integrantes del 
equipo. 
Utilizando esta tecnología somos capaces de afrontar diversos proyectos con distintos requerimientos e incorporar a profesionales al equipo de manera rápida y sencilla. Si no utilizas ninguna de estas herramientas no pasa nada, pero prepárate a escuchar sin quejarte eso de “¡Oye, pues en mi equipo funciona!”.

 

Como hemos visto, los equipos de desarrollo modernos deben manejar múltiples tecnologías y metodologías. Tareas antes realizadas por roles como administradores de sistemas o gestores de proyectos, ahora son asumidas en muchos casos por los personas dentro del equipo de programación. El coste de no utilizar herramientas modernas en el desarrollo de software implica aumentar la deuda técnica del equipo, que finalmente desemboca siempre en menor calidad y efectividad.

Hemos visto algunas de las características de los equipo de desarrollo modernos, en futuros post iremos desarrollando cada uno de estos aspectos de manera más profunda, indicando el software que utilizamos con ejemplos reales del día a día.

 

¿Aún no te has suscrito a nuestra Newsletter?

¡Tenemos un montón de cosas que contarte! Actualidad, entrevistas, artículos de interés, herramientas imprescindibles, curiosidades… Todo, cada dos semanas en tu buzón.

mvilata
mvilata
26/12/2014

¿Te interesa nuestra newsletter?

NO

OMG

¿Aún no te has suscrito a nuestra Newsletter?

¡Tenemos un montón de cosas que contarte! Actualidad, entrevistas, artículos de interés, herramientas imprescindibles, curiosidades… Todo, cada dos semanas en tu buzón.