El viaje de la mayoría de la gente hacia el aprendizaje de la programación comienza con una única búsqueda nocturna en Google.
Normalmente es algo así como «Aprende ______»
¿Pero cómo deciden qué lenguaje buscar?
«Siempre bromean sobre Java en Silicon Valley. Supongo que debería aprenderlo.»
O:
«Haskell. Tan caliente ahora mismo. Haskell.»
Or:
«Ese Go gopher es tan jodidamente mono.»
Y luego estamos los demás. Probablemente busquemos algo como:
«¿Qué lenguaje de programación debería aprender primero?»
Pocas son las preguntas que se hacen con tanta frecuencia que reciben el tratamiento de infografía completa. Pero ésta es una de ellas:
Decidir cuál es tu primer lenguaje de programación puede ser un proceso divertido, algo así como uno de esos test de personalidad «¿Qué personaje de Quentin Tarantino eres?»
Pero antes de que corras a aprender Ruby porque te gustaba jugar con plastilina cuando eras niño, déjame recordarte: hay mucho en juego.
Tardarás cientos de horas de práctica en llegar a ser remotamente competente con tu primer lenguaje de programación.
Así que deberías tener en cuenta los siguientes factores:
- el mercado de trabajo para el lenguaje
- las perspectivas a largo plazo del lenguaje
- qué tan fácil es aprender el lenguaje
- qué proyectos puedes construir mientras aprendes (y compartir con amigos para mantenerte motivado)
- No estoy argumentando que un lenguaje sea objetivamente mejor que otro
- Estoy de acuerdo en que los desarrolladores deberían eventualmente aprender más de un lenguaje
- Estoy argumentando que primero deberían aprender bien un lenguaje. Y -como probablemente puedas adivinar por el texto al revés de mi titular- ese lenguaje debería ser JavaScript.
- C es una gran manera de aprender cómo funcionan realmente los ordenadores en términos de gestión de la memoria, y es útil en la computación de alto rendimiento
- C++ es genial para el desarrollo de juegos.
- Python es impresionante para la ciencia y la estadística.
- Java es importante si quieres trabajar en grandes empresas tecnológicas.
Cada año trae nuevos lenguajes de programación, y con ellos, nuevos artículos académicos. Y nuevos cómics web.
En serio. Mira esta joya del mes pasado:
Cuando se trata de elegir un primer lenguaje de programación, no faltan opciones. Para acotar un poco, aquí están las búsquedas más comunes en Google relacionadas con el aprendizaje de la programación, en los últimos 12 años:
Java ha tenido sus altibajos.
Python ha ido subiendo poco a poco hasta convertirse en la opción más popular.
Pero escondido debajo de estos está el Pequeño Motor que Pudo, subiendo lentamente en popularidad durante los últimos años. Y ese motor es JavaScript.
Antes de hablar de estos lenguajes de programación, permítanme una aclaración:
Comencemos explorando cómo se enseña actualmente la programación en la escuela.
Ciencias de la Computación 101
Las universidades han enseñado tradicionalmente la programación bajo el paraguas de las ciencias de la computación, que a su vez es a menudo visto como una extensión de las matemáticas, o vinculado a un grado de ingeniería eléctrica.
Por supuesto, como ya habrás oído:
«La educación en ciencias de la computación no puede convertir a nadie en un experto programador más de lo que el estudio de los pinceles y el pigmento puede convertir a alguien en un experto pintor.» – Eric S. Raymond
A partir de 2016, muchas universidades siguen tratando la programación como si fuera ciencia de la computación, y la ciencia de la computación como si fuera matemáticas.
Como resultado, muchos cursos de introducción a la programación se centran en lenguajes de bajo nivel de abstracción como C, o lenguajes centrados en las matemáticas como MATLAB.
Y los directores de departamento suelen mantener el rumbo, señalando las tablas de clasificación anual de lenguajes de programación como el Índice TIOBE, o ésta del IEEE:
La mayoría de estas tablas de clasificación son prácticamente idénticas a como eran hace 10 años.
Pero el cambio se produce. Incluso en el mundo académico.
En 2014, Python superó a Java como lenguaje de instrucción más popular en los principales programas de Ciencias de la Computación de Estados Unidos.
Y otro cambio más está destinado a… eventualmente… suceder.
Porque si se miran los lenguajes realmente utilizados por la fuerza de trabajo, se pinta un panorama muy diferente:
Más de la mitad de los desarrolladores utilizan JavaScript. Es vital para el desarrollo web front-end y cada vez más relevante para el desarrollo back-end. Y se está expandiendo rápidamente en áreas como el desarrollo de juegos y el Internet de las cosas.
Las ofertas de empleo también mencionan JavaScript más que cualquier otro lenguaje de programación que no sea Java:
No es casualidad que hayamos construido el plan de estudios de nuestra comunidad de código abierto en torno a JavaScript. En los últimos dos años, más de 5.000 personas han utilizado Free Code Camp para conseguir su primer trabajo de desarrollador.
No estoy defendiendo JavaScript porque lo enseño. Enseño JavaScript porque es el camino más seguro para conseguir un primer trabajo de desarrollador.
¿Pero es JavaScript adecuado para ti? Es digno de ser tu primer lenguaje de programación? Exploremos esos factores que mencioné antes.
Factor #1: El mercado laboral
Si estás aprendiendo a programar puramente por curiosidad intelectual, siéntete libre de omitir este factor. Pero si usted -como la gran mayoría de las personas que aprenden a programar- quiere utilizar esta habilidad para conseguir un trabajo, esta es una consideración importante.
Como mencioné anteriormente, Java se menciona en más ofertas de trabajo que cualquier otro lenguaje de programación. JavaScript es un segundo lugar cercano.
Pero aquí está la cosa acerca de JavaScript: a pesar de que ha sido de alrededor de 20 años, sólo recientemente se convirtió en una herramienta seria que empresas como Netflix, Walmart, y PayPal construiría aplicaciones enteras alrededor.
Como resultado, un montón de empresas están contratando desarrolladores de JavaScript, pero simplemente no hay muchos en el mercado de trabajo.
Hay 2,7 desarrolladores de Java compitiendo por cada puesto vacante de Java. La competencia por los puestos de trabajo en PHP e iOS es igualmente feroz.
Pero por cada puesto de trabajo abierto en JavaScript, sólo hay 0,6 desarrolladores de JavaScript. Es en gran medida un mercado de vendedores para los desarrolladores con habilidades en JavaScript.
Factor #2: Las perspectivas a largo plazo
El proyecto promedio de JavaScript recibe el doble de pull requests que el proyecto promedio de Java, Python o Ruby. Y además de esto, JavaScript está creciendo más rápido que cualquier otro lenguaje popular.
El ecosistema de JavaScript también se beneficia de una fuerte inversión de dinero y talento de ingeniería de empresas como Google, Microsoft, Facebook y Netflix.
Por ejemplo, TypeScript (un superconjunto de JavaScript con tipado estático) cuenta con más de 100 colaboradores de código abierto, muchos de los cuales son empleados de Microsoft y Google a los que se les paga por trabajar en él.
Este tipo de cooperación entre empresas es más difícil de encontrar con Java. Oracle -que efectivamente posee Java a través de su adquisición de Sun Microsystems- suele demandar a las empresas que intentan ampliarlo.
Factor #3: Dificultad de aprendizaje
La mayoría de los programadores estarían de acuerdo en que los lenguajes de scripting de alto nivel son relativamente fáciles de aprender. JavaScript entra en esta categoría, junto con Python y Ruby.
Aunque las universidades siguen enseñando lenguajes como Java y C++ como primeros lenguajes, son considerablemente más difíciles de aprender.
Factor #4: Proyectos que puedes construir con él
Aquí es donde JavaScript realmente brilla. JavaScript se ejecuta en cualquier dispositivo que tenga un navegador, allí mismo en el navegador. Puedes construir básicamente cualquier cosa con JavaScript, y compartirlo en cualquier lugar.
Debido a la ubicuidad de JavaScript, el cofundador de Stack Overflow, Jeff Atwood, acuñó su ahora famosa ley:
«Cualquier aplicación que pueda ser escrita en JavaScript, eventualmente será escrita en JavaScript.»
Y con cada mes que pasa, la Ley de Atwood se mantiene firme.
Java también prometió en su día funcionar en todas partes. Puede que recuerdes los Applets de Java. Oracle los mató oficialmente a principios de este año.
Python sufre de los mismos problemas:
«¿Cómo puedo darle este juego que hice a mi amigo? Mejor aún, ¿hay alguna forma de poder ponerlo en mi teléfono para poder enseñárselo a los niños en el colegio sin que tengan que instalarlo? Um.» – James Hague en Retiring Python as a Teaching Language
Por el contrario, aquí hay algunas aplicaciones que los miembros de nuestra comunidad de código abierto construyeron en sus navegadores en CodePen. Puedes hacer clic y utilizarlas directamente en tu navegador:
Aprende bien un idioma. Luego aprende un segundo.
Si sigues saltando de idioma en idioma, no llegarás muy lejos.
Para ir más allá de lo básico, necesitas aprender bien tu primer idioma. Entonces tu segundo lenguaje será mucho, mucho más fácil.
A partir de ahí, puedes ramificarte, y convertirte en un desarrollador más completo aprendiendo muchos lenguajes:
Pero aprende primero JavaScript.
Ok, ahora voy a intentar lo imposible: voy a intentar anticiparme a las objeciones de la sección de comentarios.
Objeción #1: ¿Pero no es JavaScript lento?
JavaScript es -para la mayoría de los propósitos prácticos- tan rápido como los lenguajes de alto rendimiento.
JavaScript (Node.js) es órdenes de magnitud más rápido que Python, Ruby y PHP.
También es casi tan rápido como los lenguajes de alto rendimiento como C++, Java y Go.
Aquí están los resultados del benchmark más completo y reciente entre lenguajes:
Objeción #2: Pero JavaScript no está tipado estáticamente
Al igual que Python y Ruby, JavaScript está tipado dinámicamente, lo cual es conveniente. Pero puedes tener problemas. Aquí pretendo que exampleArray
sea un array. Establezco sus valores y luego compruebo su longitud, es decir, el número de elementos que contiene.
exampleArray = -> exampleArray.length-> 2
Pero entonces le asigno accidentalmente una cadena.
exampleArray = "text”-> "text”exampleArray.length-> 4
Este tipo de errores ocurren todo el tiempo en los lenguajes de tipado dinámico. La mayoría de los desarrolladores simplemente ponen controles para evitarlos, y escriben pruebas en consecuencia.
Si es absolutamente necesario tener tipado estático en tu primer lenguaje de programación, entonces sigo recomendando que aprendas primero JavaScript. Luego puedes aprender rápidamente TypeScript.
«Typescript tiene una curva de aprendizaje, pero si ya conoces JavaScript, será una curva suave.» – Alex Ewerlöf on TypeScript
Objeción #3: Pero realmente quiero hacer una app móvil
Sigo recomendando aprender primero JavaScript.
- JavaScript cuenta con varias herramientas para hacer apps móviles nativas, como Angular Cordova y React Native.
- Para que tu aplicación móvil haga realmente algo interesante, probablemente necesitará un back-end adecuado, que querrás construir con un marco de desarrollo web adecuado, como Node.js + Express.js.
Además, vale la pena señalar que los mejores días del desarrollo de aplicaciones móviles pueden muy bien haber quedado atrás.
Para empezar, por mucho que la gente use aplicaciones móviles, casi la mitad de todos los puestos de trabajo de desarrolladores son de desarrollo web. Compara esto con un mero 8% de los trabajos que implican el desarrollo de aplicaciones móviles.
La gran visión de «hay una aplicación para eso» no se ha hecho realidad. Por el contrario, la mayoría de los propietarios de smartphones han dejado de descargar nuevas aplicaciones.
Claro: siguen utilizando aplicaciones. Sobre todo Facebook, Google Maps y un puñado de otras. Como tal, gran parte de la demanda de desarrolladores de aplicaciones móviles se concentra en unos pocos grandes empleadores.
La perspectiva de esos puestos de trabajo de desarrollo móvil es difícil de pronosticar. Muchos aspectos del desarrollo, el mantenimiento y la distribución de aplicaciones móviles son más fáciles con JavaScript. Así que empresas como Facebook y Google están invirtiendo mucho en mejores herramientas para construirlas usando JavaScript.
A partir de 2016, prácticamente todo el desarrollo es desarrollo web. Todo toca esa gran plataforma que es «la web». Y la próxima oleada de dispositivos con los que hablarás por tu casa, y los coches que recogen a tus hijos del colegio, también estarán canalizados usando la web.
Y eso significa JavaScript.
Objeción #4: ¿No es JavaScript un lenguaje de juguete que se escribió en 10 días?
JavaScript tiene una historia peculiar.
Indudablemente oirás a la gente hacer bromas a su costa.
Bueno, a la gente también le encanta odiar a C++. Y al igual que JavaScript, C++ ha triunfado a pesar de este odio, y ahora también está prácticamente en todas partes.
Así que si alguna vez alguien te hace pasar un mal rato por aprender JavaScript en lugar del lenguaje de élite de la semana, sólo recuerda las famosas palabras del tipo que creó C++:
«Sólo hay dos tipos de lenguajes de programación: aquellos de los que la gente siempre se queja y aquellos que nadie usa.» – Bjarne Stroustrup
Sólo escribo sobre programación y tecnología. Si me sigues en Twitter no te haré perder el tiempo. ?