Haz algo y hazlo ya

Recientemente me he dado cuenta que tengo que cambiar la forma en la que empiezo mis proyectos personales. La mayoría de los proyectos que empiezo no llegan a salir a la luz, porque me canso de ellos o porque ya no son útiles ya que he tardado demasiado tiempo en publicarlos.

Lo que pasa es que siempre busco la forma mas estándar (la que otros programadores usan) y mas optima (en mi punto de vista) para hacer las cosas, tardando demasiado tiempo en cosas que deberían decidirse sobre la marcha en vez de programar.

Total, que la mayoría del tiempo no llegan a nada porque me quedo bloqueado en tonterías que podrían ser mejoradas a lo largo del tiempo.

A lo que me refiero es que no pasa nada porque al principio del desarrollo no tengas todo al 100%, lo importante es tener un prototipo y que funcionen las cosas, en ese momento es cuando puedes limpiar y mejorar lo que has hecho, para luego agregar mas funcionalidad.

Si estoy preocupado de publicar código no refinado, no pasa nada, lo dejo en código cerrado, lo publico y cuando se hace código abierto cuando se vea que es apto para ello. No desde el punto cero.

Muchas veces esto también me lleva a no usar código mio y mirar las soluciones de otros programadores evaluando cada solución que veo para decidir como hacer la mía. Esto no quiere decir que yo no sepa como hacerlo, simplemente que asumo que otros programadores ya tienen código perfecto.

Pongo un ejemplo, recientemente hice un skill de Alexa que consultaba con el CRTM el estado de las tarjetas de transporte, para el skill solo necesitaba la fecha en la que podía utilizar por ultima vez la tarjeta sin recargarla.

Pues bien, como nadie había hecho nada parecido antes, hice una API que no solo te daba esa información, te daba cualquier dato disponible en la tarjeta, y no empecé con el skill hasta tener ese proyecto en el estado que yo quería. Tras terminar esa parte, empecé a desarrollar el skill y poco antes de terminarlo, encontré una alternativa para hablar con el CRTM mas optima pero que cambiaría radicalmente la estructura de mi API. Pues en vez de terminar el skill, lanzarlo y después intentar mejorar la API, volví a empezar desde cero con la API, borrando todo el progreso que había hecho previamente.

La version anterior funcionaba, sin muchas desventajas a la nueva forma que encontré, pero no, pensé que era mejor quedarme haciendo algo innecesario que podría hacer en otros ciclos de desarrollo, para nada, porque al gastar tanto tiempo en algo innecesario alguien se adelantó a mi, con un skill mejor y que funciona muy bien sin tener tanta complejidad ni dar una API que de todos los datos de la tarjeta.

En resumen; si tienes una idea, hazla realidad y mejorala a lo largo del tiempo, no hagas optimización prematura.

comments powered by Disqus