Tecnologías para desarrollar un proyecto. Prohibido olvidar la productividad.
¿Producto o aprendizaje?
¿Querés crear un producto? Si las tecnologías que conocés son viables para desarrollar el producto, usálas. Sino aprendé aquellas que lo sean.
¿Querés aprender una nueva tecnología? Aprendéla.
¿Qué carajo estás queriendo decir? No estoy seguro, dame un minuto que todavía no sé si puse bien los acentos en los verbos.
La cuestión es la siguiente, los programadores pasamos mucho tiempo desarrollando por placer, curiosidad, dinero y fama, la gloriosa fama de crear el nuevo PopCorn Time o el próximo Snapchat. Probamos nuevas tecnologías y emprendemos nuevos proyectos, convirtiendo nuestras ideas en código.
Ahora, cuando queremos aprender una nueva tecnología lo mejor siempre es hacerlo programando algo de modo de trabajar con la misma, resolver un caso practico para ganar experiencia. Esa es una de las mejores formas de aprender en este rubro. Y en general consiste en realizar algún proyecto que realizamos con el solo objetivo de fijar conocimiento.
Lo que hay que resaltar del párrafo anterior es que el objetivo del proyecto es aprender esa nueva tecnología.
Seguramente se habrán dado cuenta de que no siempre el objetivo es aprender algo nuevo. Hay veces que el objetivo es llevar una idea al mundo real, y el proyecto es la forma de convertir nuestra idea en un producto, siendo éste ultimo el fin que perseguimos. Es en éste caso cuando al momento de plantear que tecnologías utilizar debemos considerar no solo la viabilidad de desarrollar el producto con un lenguaje u otro, un framework u otro, un stack u otro, sino también es fundamental considerar la productividad como una variable clave.
¿Y qué hago con la productividad? Yo solo quiero crear el Uber del contrabando ilegal por la frontera, y lo quiero hacer con el xJS, el nuevo framework/librería de moda.
Con productividad me refiero a que si en las tecnologías x e y se puede desarrollar el producto sin mayores inconvenientes, y tenemos experiencia utilizando x, si nuestro verdadero objetivo es el producto debemos elegir la tecnología en la que seamos mas productivos, siempre y cuando sea factible para el alcanzar aquello que se persigue. Y si bien es algo trillado, y que prácticamente todos conocemos en el ambiente, no se debe perder tiempo realizando optimizaciones para un producto que ni siquiera sabemos si va a tener usuarios. Distinto sería el caso en el que estén trabajando en un producto que se sabe como requerimiento no funcional la posibilidad de soportar grandes cargas de trabajo.
Este post no soporta corner cases.