No es necesario aplicar tus nuevos conocimientos al instante


Tenía pensada una entrada un poco más larga sobre el ciclo de vida de Hibernate, pero al finalizar la reunión de AgileCanarias de este viernes entre caña y caña, surgió un tema muy interesante que me gustaría comentar en el blog.

Hay un comportamiento típico en la mayoría de desarrolladores (de software) que conozco, incluyéndome a mi mismo, que es la tendencia a utilizar todo lo que aprenden a la mínima oportunidad. Y esto está bien cuando no se trata de proyectos reales que están en producción. Por ahí se suele decir que si "tu única herramienta es un martillo, todos tus problemas se parecerán sospechosamente a un clavo", pues este es un caso bastante similar pero en la otra cara de la moneda. Si te compras un taladro, estarás como loco buscando donde hacer un agujero, cuando lo que necesitas es apretar un tornillo.

Voy a dar una pequeña lista de razones por las que se debe andar con mucho ojo antes de aplicar una nueva técnica, herramienta, metodología o similar.

  • Cuando utilizas nuevas aproximaciones que acabas de aprender, generalmente no conoces todas sus implicaciones. Siempre es mejor probar en un pequeño toy project (ver Apprenticeship Patterns) o hacer un spike, antes de usar dichas aproximaciones en "la vida real".
  • Como continuación del punto anterior. Las nuevas "herramientas" siempre vienen con su "manual de instrucciones", que deberíamos al menos ojear aunque hayamos visto como la utilizan otras personas, porque puede que la estemos utilizando incorrectamente.
  • Lo normal es buscar entre todas nuestras herramientas cual es la adecuada para hacer un trabajo, no buscar cuál es el problema adecuado para utilizar una determinada herramienta. Si lo hacemos de la segunda manera por norma general llegaremos a lo que se suele denominar sobre-ingeniería y tendremos código que al final nunca se utiliza. En el peor de los casos tendremos una solución que no es la adecuada, no escala bien o no cumple su objetivo con eficacia.

Yo creo que esto sucede porque asoma el pequeño ingeniero/científico, o como lo quieras llamar, que llevamos dentro. A veces necesitamos algo nuevo que nos llame la atención, que nos entretenga, que despierte de nuevo nuestro interés innovador. Pero por el bien de nuestro yo futuro, será mejor hacer algunas pruebas iniciales en un toy project, y pensar con la cabeza fría cuales son las mejores herramientas de las que disponemos para nuestros problemas actuales.

Si es algo que te ha pasado alguna vez, te sientes identificado, piensas que es una tontería o que simplemente este artículo es una chorrada, no dudes en dejar tus comentarios :-D

Comentarios

Juanma ha dicho que…
Lo que comentas en el segundo punto, la no documentación previa, creo que es un problema tan grande como la idea principal del post. Creo que se merece una entrada!!
Muchas veces los jefes, proyectos, o incluso nosotros mismos, nos condicionan a actuar como bomberos, bomberos que sólo se preocupan por apagar fuegos. Esto hace que nos olvidemos de entender lo que hay debajo de las capas en las que estamos trabajando y que nos lancemos a resolver problemas fundamentandonos en la suposición en lugar de en el conocimiento.. 
Y como muchos saben "la suposición es la madre de las cagadas" !! xD

Muy buen post !!
Yeray Darias Camacho ha dicho que…
No es mala idea, esa charla es muy recurrente en nuestro mundillo. Veré si cuando vuelva de la CAS traigo alguna idea concreta para hablar sobre ese tema :-)

Un saludo.
Pablo ha dicho que…
Buen post Yeray, comparto aunque no del todo. Creo que existen proyectos de muchos tipos y en algunos de ellos una nueva tecnología puede determinar su éxito o fracaso. Se me ocurren varios casos de startups cuyo éxito es fruto en gran parte de arriesgarse a adoptar una nueva tecnología que les proporciona una ventaja competitiva.
Diría que una estrategia conservadora será la más beneficiosa en ciertas condiciones y una más arriesgada lo será en otras.
Yeray Darias Camacho ha dicho que…
Bien visto Pablo. Creo que no me he expresado con claridad, tenía una idea en mente y quizás he expresado otra. Desde luego tienes toda la razón, yo me refería más a las ocasiones en las que aprendemos algo y empezamos a usarlo porque es algo que nos gusta y cuando nos damos cuenta lo hemos usado incluso en lugares en los que no tiene sentido, a mi me ha pasado más de una vez :-)

Lo que tu dices tiene todo el sentido del mundo, siempre y cuando nos documentemos adecuadamente sobre esa tecnología antes de empezar a utilizarla.

Un saludo.
Pablo ha dicho que…
Se entiende a qué te refieres, el "calentón" con un nuevo juguete :P
Me pareció apropiado el aporte.

Saludos

Entradas populares de este blog

Log4j - JMS Appender con ActiveMQ

¿Cómo hacer uso de SASS en proyectos Java?

#informáticaSoluciónYA