8 cosas que he aprendido sobre los equipos de desarrollo

Read this article in english

Llevo muchos años programando en equipo y, a veces, liderándolos. Hay muchísimas cosas que aún aprenderé en el futuro, pero … mi años no han pasado en vano. 😉

1. La calidad es importante

Sí, la calidad del código es importante, tanto en cómo lo escribes y en cómo lo mantienes. No eres un buen programador hasta que no seas capaz de garantizar que tu código es bueno, y eso significa sin bugs, testeable y limpio (volveré sobre esto más tarde). Y cuando hablamos de calidad hay dos puntualizaciones a hacer: 1) el uso de patrones de diseño es prácticamente obligatorio, y 2) el código debe ser SOLID. No voy a profundizar en estos dos puntos en este artículo, pero lo haré en el futuro.

Consejo: si eres programador y no sabes qué es esto de patrones y SOLID… empieza hoy. Créeme.

2. Lenguaje ubicuo

No solamente entre los miembros del equipo, sino también con el Product Owner y el negocio. Es necesario que usemos las mismas palabras para referirnos a los mismos conceptos. Esto evitará malentendidos y, consecuentemente, costes añadidos. Empieza por tener un buen ‘DoD’ (Definition of Done, Definición de ‘Hecho’).

Y esto no sólo es aplicable a nuestro lenguaje natural. Lee el siguiente punto.

3. Código limpio, limpio, limpio

«¿Código limpio? ¿Para qué? ¡Esto es la vida real!». No cometas este error. ¡El código limpio es prácticamente obligatorio! Di la verdad: ¿cuántas veces has tenido que releer tu código, escrito sólo unas semanas antes, porque no entendías nada? Esto se puede evitar si haces las cosas bien.

La mejor manera de escribir código limpio desde cero es adoptando algún standard. En PHP, sigue *al menos* lo que indica PSR-2 y ya estarás en el buen camino.

Y una cosa más… código limpio también significa darle nombres correctos a clases, métodos, variables, etc. Por ejemplo, no pongas el nombre ‘ClientBasket’ a una clase cuando claramente es ‘Order’. (sin bromas; esto lo he visto).

Y hazte esta pregunta: ¿Has tenido alguna vez un jefe que te diera tiempo para limpiar tu código? 😉

4. Testear es esencial

Obviamente no podía dejar de mencionar PHPUnit, Jasmine, Mocha, Ghost Inspector, Cucumber, … Cuando creas una aplicación, tener testeo automatizado es el pasaporte a la tranquilidad. Si quieres dormir por las noches (o ir a tomar algo, o lo que sea), testea tu código. Este punto es tan importante que incluso tenemos un acrónimo. Bueno, tenemos acrónimos para casi todo. En este caso, TDD – Test Driven Development. Por favor, créeme. Testear todos tus métodos [públicos] desde el principio mantendrá tu código perfecto. Créeme (a mí, no a tu código) y testea. 😉

5. La formación no es esencial, pero a nosotros, los programadores, nos encanta.

Nuestro sector evoluciona a un ritmo altísimo, y siempre queremos estar al día. En mi caso, me gustaría tener la certificación de AWS Solutions Architect. Otros querrán certificarse como Scrum Master o Product Owner. Otros querrán dominar Docker. Cualquiera que sea su objetivo, dales esa formación. Eso es motivación «de la buena» para ellos (para nosotros).

6. Escucha a los miembros del equipo

Tus compañeros de equipo tienen cosas que decir. Pueden tener inquietudes, otros puntos de vista y, aunque algunos de estos puntos no serán aplicables, otros seguro que sí. Pueden tener dificultades en explicar con exactitud cuáles son sus necesidades, pero escúchales igualmente, o lee entre líneas. Me han sorprendido (agradablemente) tantas veces que simplemente no podía dejar este tema sin mencionar.

7. Usa metodologías ágiles

Las metodologías ágiles me encantan, pero hay una que destaca sobre las demás: Scrum. Esta metodología le aporta diferentes beneficios al equipo de desarrollo: confiabilidad, reducido tiempo de deploy, mejor ROI, y mi favorito: calidad.

En el uso de Scrum, pide a tu equipo que además haga revisión cruzada de código. Esto les hará interactuar aún más. Me encanta Scrum.

8. Usa herramientas de colaboración/automatización

Nosotros, los programadores, tenemos un montón de buenas herramientas a nuestra disposición. Sólo por mencionar unos cuántos: git, Bitbucket/Github, PHPUnit, gulp, grunt, composer, Jira, Trello, Jenkins, Docker, Kubernetes, …

Como programador, no los uso todos en cada uno de mis proyectos, pero puedo asegurar algo: el uso de estas herramientas hace que mi vida sea mucho, mucho, mucho más fácil. Algunas de estas herramientas son gratis, y otras no. Cuando sea necesario, paga por ella. Punto.

Comentario extra: Desacoplamiento

¿Alguna vez has oído aquello de “El programador resolvió un problema, pero estropeó otra cosa”? Seguro.

Si quieres impresionar a alguien cuando hables de programación, usa la palabra «desacoplamiento«. Esto puede sonar muy «top», pero significa simplemente que una determinada funcionalidad de tu código está encapsulada en pequeños métodos, de manera que cuando necesites modificar o añadir algo, probablemente no vayas a romper nada más.

Y si a esto le añades testeo automatizado, patrones de diseño, SOLID y código limpio… ¡Boom!  ¡Súper código!