Xuaps

Herramientas

Elige bien tus herramientas y aprende a usarlas

En los últimos años he tenido la posibilidad de afrontar algunos desarrollos en los que tenía libertad para tomar prácticamente todas las decisiones técnicas. No estoy hablando del rol que desempeñaba en estos proyectos, las decisiones se tomaron en equipo, sino del contexto.

Ecosistema, frameworks, librerías, paradigmas, lenguajes, arquitectura… son todas esas decisiones que prefiero tomar de una forma consciente y no dejarme llevar por la inercia de la compañía o por preferencias personales. Por tanto éste es, para mí, uno de los primeros pasos al inicio del proyecto, tener en cuenta todos los requisitos no funcionales y algunos funcionales que condicionan todas estas decisiones y empezar a eliminar opciones, pero aún después de aplicar el filtro de los requisitos seguimos teniendo muchas, ¿cómo elegir entre estas?

Elegir

Lo primero es entender qué tipo de software estás desarrollando. Por novedoso que parezca seguro que alguien ya ha hecho algo parecido, intenta no cometer sus errores. Mira su código si está disponible y ponte en contacto con él para saber que le ha funcionado y qué cambiaría.

Mira el ecosistema que rodea a la herramienta, lenguaje… ¿Hay comunidad? ¿Es fácil encontrar info? ¿Quién lo mantiene?

¿Cómo de difícil te hace escribir los tests? Esta es una de las importantes, he participado en demasiados proyectos en los que hacer un test era más difícil que implementar la funcionalidad, es un mal olor.

¿Condiciona la forma en la que escribes el resto de tu código? Para mi es vital que las herramientas no me condicionen, y no perder flexibilidad a la hora de diseñar. Tampoco aspiro a acertar con todas mis decisiones a la primera, se que algunas cambiarán conforme el proyecto avance así que en la medida de lo posible evito este tipo de soluciones.

¿Qué pierdes y qué ganas? Toda herramienta te da algo y te limita en otro algo. Piensa si te compensa.

Seguro que puedes ayudarme a ampliar esta lista, ¡deja un comentario!

Eliminar incertidumbre

Te digan lo que te digan, en la vida real hay decisiones que hay que tomar al principio y que serán difíciles de cambiar después. Por ejemplo podemos elegir hacer nuestra aplicación en Ruby on Rails y después descubrir que no escala en base a tus necesidades, o cosas más obvias. Por eso otro paso en este proceso de decisión consiste en convertir incertidumbre en certidumbre. Las pruebas de concepto son una herramienta ideal para este cometido. No supongas, aprende. Aprender a usar las herramientas que te van a acompañar en tu viaje es de vital importancia. No se trata de ser un experto, eso sería lo ideal pero es difícil tener el tiempo en esta etapa y lo normal es ir aprendiendo los detalles con el proyecto. Sin embargo tienes que entender la herramienta desde un punto de vista conceptual. Tienes que comprender como su diseñador espera que la uses y en algunos casos tienes que estudiar la teoría que subyace bajo la tecnología. No menosprecies las herramientas pregúntate si las estás usando bien.

El caso de MongoDB

Había una vez un programador que echaba la culpa de todos sus males a MongoDB y a NodeJS. ¿Había elegido mal sus herramientas o no? Bueno después de hablar un rato con él me quedó claro que elegir javascript cuando no te has molestado en aprender cómo organizar el código o cómo funciona la herencia de prototipos es una pésima idea. Y si te vas a pasar por el arco del triunfo la teoría sobre bases de datos NoSQL y las vas a tratar como relacionales elegir MongoDB no es la mejor elección. No hacer tus deberes no es lo mismo que escoger mal y mucho menos que Javascript, MongoDB y todo lo que te rodea es una mierda.