A veces, a los programadores principiantes se les dan consejos opuestos a la hora de aprender a programar. Algunos dicen que es mejor trabajar los primeros años con un solo lenguaje antes de meterte con otras herramientas. Por otro lado, hay quien dice que es mejor trabajar con varias herramientas cuanto antes. ¿A quién le hacemos caso?
Lo cierto es que cojas el camino que cojas no te vas a equivocar. Fin del post. Bueno, ya que estamos, podemos discutir más a fondo las virtudes y los inconvenientes de cada método, para que puedas decidir cuál se ajusta mejor a tu forma de aprender.
Lo primero, poner de manifiesto que estamos ante un ejemplo de falsa dicotomía. Puedes aplicar una mezcla de ambos. Puedes tener una tecnología central, y trabajar de vez en cuando con otras para ver de qué van. O al revés, puedes saltar de una cosa a otra pero tener siempre una tecnología de fondo que haga de pegamento.
Veamos cada enfoque por separado
Master of one
Aquí la idea es concentrar toda tu energía en aprender a utilizar un lenguaje y usarlo bien. La principal ventaja de aprender solo uno es que te permitirá adquirir un conocimiento más profundo de la tecnología que elijas, de modo que es más probable que te apartes de la «zona de principiantes» y explores elementos más avanzados de la misma.
Al dedicar todo tu tiempo a una única herramienta, perderás menos tiempo peleándote con aspectos básicos de la misma tales como la sintaxis, y podrás centrarte en asentar aquellos aspectos que consideres más importantes.
Además, te permitirá mejorar más rápidamente la calidad del código que escribes en cuanto a legibilidad y rendimiento. Cuando estás aprendiendo a programar es frecuente que el código que escribías hace unos pocos meses te dé vergüenza, y podrás ver que el más reciente es mucho mejor.
También te puede pasar cuando coges una herramienta nueva. Si te ves en ésta situación, es buena señal, pues implica que tus habilidades han mejorado mucho desde que empezaste.
A medida que acumulas experiencia con un lenguaje, además de mejorar el aspecto del código también mejorará mucho su rendimiento. Mientras vas descubriendo las funcionalidades del lenguaje verás formas más eficientes de realizar las tareas. Un buen ejercicio es volver al código que has escrito antes y ver qué mejoras eres capaz de hacer.
Como punto negativo tenemos que trabajar con un único lenguaje puede hacer que desarrolles una visión estrecha de la programación. Cada tecnología plantea una serie de ideas sobre cómo podemos resolver los problemas, podríamos decir que tienen una “filosofía” propia. Si pasas demasiado tiempo utilizando una tecnología, puede ocurrir que te vuelvas un fanático de su filosofía.
Cuando la única herramienta que sabes utilizar es un martillo, todos los problemas parecen un clavo. Por ello, es posible que intentes utilizar ésta herramienta para resolver problemas cuando a lo mejor existen otras alternativas más adecuadas.
Jack of all trades
Trabajar con varios lenguajes evitará que asocies demasiado la sintaxis particular de uno de ellos a los diferentes constructos de la programación (bucles, condicionales, etc…). Ver las diferencias entre varias sintaxis te puede ayudar a tener una visión más «abstracta» del código, y te puede servir también para comprenderlo mejor.
Además, muchos conceptos que se utilizan en unos lenguajes te pueden ayudar a entender otros, aunque no se utilicen directamente. Por ejemplo, todo lo relacionado con la gestión de memoria en lenguajes como C. Aunque muchos lenguajes se ocupan de todo ésto por ti, saber cómo se gestiona la memoria te puede ayudar a entender mejor muchos errores.
Al trabajar con múltiples lenguajes y herramientas diferentes entrarás en contacto con muchas ideas, lo cual puede resultar abrumador pero es muy positivo, ya que te permitirá obtener una visión general de para qué sirve cada cosa y podrás elegir la mejor herramienta para cada problema, pudiendo profundizar siempre en las tecnologías conforme lo vas necesitando.
Además, si las tecnologías están relacionadas entre sí, estarás en una posición mucho mejor para entender los proyectos que quieres desarrollar de principio a fin.
Como punto negativo, tenemos que lógicamente tardarás más en coger buen nivel con las tecnologías, y es muy fácil que te veas atrapado en el infierno de los tutoriales [enlace al artículo sobre el infierno de los tutoriales].
Si empiezas cogiendo varias tecnologías, serás principiante en ellas durante mucho más tiempo, y ésta es quizás la fase más dura del proceso de aprendizaje.
En resumen
Entonces, cuál es la mejor estrategia: ¿aprender a dominar unas pocas tecnologías o saber manejar muchas?.
Quizás la respuesta sea la tercera opción secreta, empezar por una hasta dominarla y cuando seas capaz de resolver los retos que te propongas en ese lenguaje puedes empezar a incorporar otras a tu repertorio.
De ésta forma, tendrás lo mejor de los dos mundos. En muchos puestos de programador se requiere lo que se llama un especialista generalista. Ésto significa que dominas una cantidad reducida de tecnologías, pero te defiendes en muchas más, de modo que si un proyecto lo requiere, rápidamente puedes aprender lo que te falta de ellas e incorporarlas en tus desarrollos.
Autor
Manuel Torres
Selección de talento en OXYGEN