Los hypes y la especialización

¿Qué aprendo ahora?

Ser desarrollador no es nada fácil. Y no lo digo por la complejidad que pueda tener la profesión, si no porque es muy difícil saber en qué especializarse. El desarrollo de software tiene muchas variantes, y aunque hay gente muy buena, es imposible saber de todo (los siento DevOps del mundo). Así que al final hay que especializarse en algo. Por ejemplo uno puede hacerse desarrollador backend, desarrollador frontend, o incluso administrador de bases de datos.

Pero ahí no acaba la especialización. Dentro de cada ramo, puedes especializarte aun más. Si eres desarrollador backend puedes especializarte en C#, Java, o PHP (hay gustos para todo). Si eres desarrollador frontend, probablemente morirás antes de especializarte en algo, pero mientras tanto podrás aprender React, Angular o incluso elm. El mundo de las bases de datos parecía más tranquilo, pero no contentos con tener SQL Server, MySQL u ORACLE (léelo al revés, verás que risa), ahora están de moda las bases de datos no relacionales. Así que puedes ser especialista en MongoDB, Redis o Neo4j. Nadie dijo que la vida fuera fácil ¿verdad?

Meme del hype

El caso es que el tiempo de cualquier persona es finito, así que al final te quedan dos opciones: utilizar algún lenguaje/tecnología/plataforma mainstream o intentar adivinar cual será el lenguaje/tecnología/plataforma que partirá la pana en el futuro. Y eso queridos amigos, no es nada fácil. Porque los desarrolladores somos tan volubles como los tertulianos de los programas balompédicos. Lo que hoy es lo más, mañana es lo menos. Y con esos hypes continuos, tenemos que vivir.

El hype

En Internet un hype es cuando las expectativas sobre algo se elevan tanto, que todo el mundo habla de ello. Ese algo, que puede ser una película, un libro, o un lenguaje de programación, está en boca de todo el mundo. No se oyen críticas. Todo es bueno, divertido, y si hablamos de TI, seguramente estaremos ante la tecnología que va a acabar con el resto de tecnologías del mismo tipo. Ahí tú piensas que has encontrado algo en lo que puedes centrarte. Si aprendes esa tecnología o lenguaje, vas a ser un profesional demandado y vas a ganar mucho dinero. ¡Pero cuidado! Igual estás siguiendo una moda, y esa moda no tiene porque perdurar en el tiempo.

El ciclo de sobreexpectación

Imagen del gráfico de Gartner

Este fenómeno es bastante común, y ha sido explicado en numerosas ocasiones. Gartner, una empresa de consultoría especializada en TI, acuñó el término ciclo de sobreexpectación normalmente se aplica a tecnologías o conceptos como Big Data, Internet de las cosas etc. Yo creo que el fenómeno es más social, y puede aplicarse a muchas cosas. Por ejemplo al desarrollo de software.

Este ciclo se compone de cinco fases bien diferenciadas. La primera es el lanzamiento. Una tecnología llama la atención cuando es lanzada. La prensa especializada, que en desarrollo serían los blogs empiezan a propagar sus bondades. Las redes sociales se llenan de información sobre la tecnología. Las personas que usan esa tecnología empiezan a entusiasmarse. Cada vez es más fácil encontrar fuentes en Internet hablando sobre lo bien que funciona la tecnología, de lo fácil que es usarla, y de como les ha cambiado la vida. La bola va creciendo hasta llegar a la fase dos: el pico de expectativas sobredimensionadas.

Ahí mucha gente empieza a darse cuenta de que no es oro todo lo que reluce. La tecnología no es tan fácil de usar como se prometía. Además tiene fallos (seguramente propios de una versión temprana), o resulta que otra tecnología más antigua ya hacía lo mismo, y además mejor. O que simplemente no tiene ninguna utilidad práctica. Recibe muchas críticas, algunas muy fuertes. Al final acaba llegándose a la siguiente fase: el abismo de desilusión. La moda ha pasado, y ya no es cool, utilizar esa tecnología. ¿Quién iba a usar algo tan malo?

Pero algunas tecnologías, son capaces de salir de este pozo y empiezan la siguiente fase. Esta fase es la rampa de consolidación. Y es que tras una nueva versión que corrige algunos de los problemas existentes, se puede ver que la tecnología es capaz de aportar valor. Es cierto que no va a solucionar la vida de nadie, ni tampoco va a cambiar el mundo tal y como lo conocemos, pero para según qué cosas, es una tecnología útil. Poco a poco la adopción de esa tecnología va creciendo hasta que se llega a la fase de meseta de productividad. Ahora estamos ante una tecnología madura, con actualizaciones constantes y que aporta beneficio a clientes, partners y desarrolladores.

En este enlace, se pueden ver algunas de las tecnologías más novedosas, y el estado en el que se encuentran actualmente, según Gartner y en el año 2016. Por ejemplo conceptos tan de moda como Internet of Things o Machine learning están en la fase de sobreexpectación y tirando hacia el abismo de desilusión.

El ciclo del hype aplicado a la programación

Este curioso ciclo, puede aplicarse a cualquier tecnología de desarrollo, ya sean lenguajes de programación, plataformas de desarrollo o frameworks. Por ejemplo hace unos años empezó a hablarse de Node. JavaScript en el servidor iba a ser el nuevo paradigma. Es rápido y fácil de utilizar. Se es mucho más productivo y puedes hacer aplicaciones como churros. Pero pronto se empezaron a escuchar críticas. Es difícil de usar en proyectos grandes. No siempre es tan rápido. JavaScript es un mal lenguaje. Node dejó de ser lo más, para pasar a ser lo menos. Lo mismo pasó con Angular, ya que hubo un momento en el que parecía que todo el mundo iba a acabar desarrollando SPA. Últimamente he escuchado cosas similares de los microservicios y Docker. Es agotador, porque si estás pensando aprender alguna de esas tecnologías, es probable que acabes dejándolo para otro momento.

Siempre aprendiendo. ¿Pero qué aprendo?

Una de las cosas que más me agobian, es que tengo la sensación de que siempre voy varios pasos por detrás. Por mucho que quiera, no puedo estar al día de todo. Hay días en los que eso es una losa que me pesa bastante, porque me quedo con el run run de no ser lo ser lo bastante bueno. Pero por suerte para los que nos dedicamos a esto, es fácil acceder a los recursos necesarios para poder formarse. No se puede aprender todo, pero puedes aprender muchas cosas, así que yo para elegir que aprender sigo las siguientes pautas:

  • Aprender cosas atemporales y aplicables a diferentes tecnologías. Por ejemplo patrones de diseño, buenas prácticas de programación, técnicas de refactoring, testing etc.
  • Salir de la zona de confort. Yo por ejemplo me dedico principalmente a programar en C#. Podría seguir con el stack .NET, pero eso sería demasiado aburrido. Así que intento aprender cosas que abran mi mente, como Elixir usando Spacemacs. O aprender cosas dónde sé que a día de hoy estoy más flojo, como es la parte de frontend.
  • Más hacer y menos pensar. Reconozco que este punto lo estoy aplicando más recientemente. Yo suelo tener ideas para algún proyecto o aplicación, pero nunca las llevo a cabo. Le doy tantas vueltas a la idea, que dejan de parecerme interesantes con el tiempo y las abandono antes de empezar a hacer algo. Estoy cambiando en chip en ese sentido: Learn by doing. Probablemente lo que haga será inútil, feo y será un churro, pero habré conseguido el objetivo principal: aprender algo.

No sé si será la mejor manera, pero al menos puedo centrarme. Así la sensación de no estar aprendiendo lo suficiente se marcha, y puedo concentrarme en seguir creciendo como desarrollador de sofware ¿Qué esas cosas no tienen utilidad práctica? Bueno, pero al menos me lo habré pasado bien.



¿Quiéres que te avisemos cuando se publiquen nuevas entradas en el blog?

Suscríbete por correo electrónico o por RSS