El viaje de la mayoría de las personas hacia el aprendizaje de la programación comienza con una sola búsqueda en Google a altas horas de la noche.
Por lo general, es algo como “Aprender ______”
Pero, ¿cómo deciden qué lenguaje buscar?
“Siempre bromean sobre Java en Silicon Valley. Supongo que debería aprender eso.”
O:
“Haskell. Está tan de moda ahora. Haskell.”
O:
“Ese gopher de Go es simplemente tan adorable.”
Y luego estamos los demás.
Probablemente buscaremos algo como: “¿Qué lenguaje de programación debería aprender primero?”
Pocas preguntas son tan comúnmente formuladas que reciben un tratamiento infográfico completo. Pero esta es una de ellas:
Decidir sobre tu primer lenguaje de programación puede ser un proceso divertido, algo así como uno de esos cuestionarios de personalidad “¿Qué personaje de Quentin Tarantino eres?”
Pero antes de que corras a aprender Ruby porque disfrutabas jugando con plastilina de niño, permíteme recordarte: aquí hay mucho en juego.
Te llevará cientos de horas de práctica volverte siquiera remotamente competente con tu primer lenguaje de programación.
Por lo tanto, deberías considerar los siguientes factores:
- el mercado laboral para el lenguaje
- las perspectivas a largo plazo para el lenguaje
- qué tan fácil es aprender el lenguaje
- qué proyectos puedes construir mientras aprendes (y compartir con amigos para mantenerte motivado)
Cada año trae nuevos lenguajes de programación, y con ellos, nuevos artículos académicos. Y nuevas tiras cómicas en la web.
En serio. Echa un vistazo a esta joya del mes pasado:
Cuando se trata de elegir un primer lenguaje de programación, no faltan opciones. Para reducir un poco la búsqueda, aquí están las búsquedas más comunes en Google relacionadas con el aprendizaje de programación, durante los últimos 12 años:
Java ha tenido sus altibajos.
Python ha ido subiendo gradualmente para convertirse en la opción más popular.
Pero escondido debajo de estos está el Pequeño Motor Que Podía, subiendo lentamente en popularidad en los últimos años. Y ese motor es JavaScript.
Antes de hablar sobre estos lenguajes de programación, permíteme aclarar:
- No estoy argumentando que un lenguaje sea objetivamente mejor que otro
- Estoy de acuerdo en que los desarrolladores eventualmente deberían aprender más de un lenguaje
- Estoy argumentando que primero deberían aprender un lenguaje bien. Y — como probablemente puedes adivinar por el texto al revés en mi titular — ese lenguaje debería ser JavaScript.
Comencemos explorando cómo se enseña actualmente la programación en las escuelas.
Ciencias de la Computación 101
Las universidades tradicionalmente han enseñado programación bajo el paraguas de las ciencias de la computación, que a menudo se ve como una extensión de las matemáticas o como un complemento a un título en ingeniería eléctrica.
Por supuesto, como puede que ya hayas oído:
“La educación en ciencias de la computación no puede hacer que nadie sea un programador experto más de lo que estudiar brochas y pigmento puede hacer que alguien sea un pintor experto.” — Eric S. Raymond
Muchas universidades todavía tratan la programación como si fuera ciencias de la computación, y las ciencias de la computación como si fueran matemáticas.
Como resultado, muchos cursos introductorios de programación se centran en lenguajes de bajo nivel de abstracción como C, o en lenguajes enfocados en matemáticas como MATLAB.
Y los jefes de departamento generalmente se mantienen en la misma línea, señalando las clasificaciones anuales de lenguajes de programación como el Índice TIOBE, o este de la IEEE:
La mayoría de estas tablas de clasificación se ven prácticamente idénticas a como estaban hace 10 años.
Pero el cambio sí ocurre. Incluso en el ámbito académico.
En 2014, Python superó a Java como el lenguaje de enseñanza más popular en los principales programas de Ciencias de la Computación de EE.UU.
Y otro cambio seguramente… eventualmente… ocurrirá.
Porque si miras los lenguajes realmente utilizados por la fuerza laboral, se pinta un cuadro muy diferente:
JavaScript es, con mucho, el lenguaje más popular utilizado por los 49,397 desarrolladores que respondieron a la encuesta de Stack Overflow.
Más de la mitad de todos los desarrolladores utilizan JavaScript. Es vital para el desarrollo web del lado del cliente y cada vez más relevante para el desarrollo del lado del servidor. Y se está expandiendo rápidamente en áreas como el desarrollo de juegos y el Internet de las Cosas.
Las ofertas de trabajo también mencionan JavaScript más que cualquier otro lenguaje de programación, exceptuando Java:
Datos del mayor agregador de ofertas de trabajo del mundo, [Indeed.com]
No es casualidad que hayamos construido el currículo de nuestra comunidad de código abierto en torno a JavaScript. Durante los últimos dos años, más de 5,000 personas han utilizado Free Code Camp para conseguir su primer trabajo como desarrollador.
No estoy abogando por JavaScript porque lo enseñe. Enseño JavaScript porque es el camino más seguro hacia un primer trabajo como desarrollador.
Pero, ¿es JavaScript adecuado para ti? ¿Es digno de ser tu primer lenguaje de programación? Exploremos esos factores que mencioné anteriormente.
Factor #1: El mercado laboral
Si estás aprendiendo a programar puramente por curiosidad intelectual, siéntete libre de omitir este factor. Pero si tú, como la gran mayoría de las personas que aprenden a programar, deseas utilizar esta habilidad para conseguir un trabajo, esta es una consideración importante.
Como mencioné anteriormente, Java es mencionado en más ofertas de trabajo que cualquier otro lenguaje de programación. JavaScript es un cercano segundo.
Pero aquí está el asunto sobre JavaScript: aunque ha existido durante 20 años, solo recientemente se convirtió en una herramienta seria que empresas como Netflix, Walmart y PayPal utilizan para construir aplicaciones completas.
Como resultado, muchas empresas están contratando desarrolladores de JavaScript, pero simplemente no hay tantos en el mercado laboral.
Datos de [Indeed.com]
Hay 2.7 desarrolladores de Java compitiendo por cada puesto abierto de Java. La competencia por trabajos de PHP y iOS es igualmente feroz.
Pero por cada puesto abierto de JavaScript, solo hay 0.6 desarrolladores de JavaScript. Es, de hecho, 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 solicitudes de incorporación que el proyecto promedio de Java, Python o Ruby. Y además, JavaScript está creciendo más rápido que cualquier otro lenguaje popular.
Los lenguajes de programación más utilizados para proyectos de GitHub, que es un buen indicador de la popularidad general de los lenguajes
El ecosistema de JavaScript también se beneficia de una fuerte inversión de dinero y talento ingenieril por parte 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 que reciben remuneración por trabajar en él.
Este tipo de cooperación interempresarial es más difícil de encontrar con Java. Oracle — que efectivamente posee Java a través de su adquisición de Sun Microsystems — a menudo demanda a las empresas que intentan expandirlo.
Factor #3: Dificultad de aprendizaje
Esta es una parodia de un [cómic de XKCD]
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 cae en esta categoría, junto con Python y Ruby.
Aunque las universidades aún enseñan 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 destaca. JavaScript se ejecuta en cualquier dispositivo que tenga un navegador, justo allí en el navegador. Puedes construir prácticamente cualquier cosa con JavaScript y compartirla en cualquier lugar.
Debido a la ubicuidad de JavaScript, el cofundador de Stack Overflow, Jeff Atwood, acuñó su famosa ley:
“Cualquier aplicación que pueda ser escrita en JavaScript, será eventualmente escrita en JavaScript.”
Y con cada mes que pasa, la Ley de Atwood se mantiene firme.
Java también prometió funcionar en todas partes. Puede que recuerdes los Java Applets. Oracle los eliminó oficialmente a principios de este año.
Python sufre de problemas muy similares:
“¿Cómo puedo darle este juego que hice a mi amigo? Aún mejor, ¿hay alguna forma de poner esto en mi teléfono para que pueda mostrárselo a los niños en la escuela sin que tengan que instalarlo? Um.” — James Hague en Retirando Python como Lenguaje de Enseñanza
En contraste, aquí hay algunas aplicaciones que miembros de nuestra comunidad de código abierto construyeron en sus navegadores en CodePen. Puedes hacer clic y usarlas directamente en tu navegador:
Búsqueda de Wikipedia temática de Star Wars
Un juego de mazmorras estilo roguelike
Aprende bien un lenguaje. Luego aprende un segundo.
Si sigues saltando de un lenguaje a otro, no llegarás lejos.
Para avanzar más allá de lo básico, necesitas aprender bien tu primer lenguaje. Entonces, tu segundo lenguaje será mucho más fácil.
A partir de ahí, puedes diversificarte y convertirte en un desarrollador más completo aprendiendo muchos lenguajes:
- C es una excelente manera de aprender cómo funcionan realmente las computadoras en términos de gestión de memoria y es útil en computación de alto rendimiento.
- C++ es genial para el desarrollo de videojuegos.
- Python es fantástico para la ciencia y la estadística.
- Java es importante si deseas trabajar en grandes empresas tecnológicas.
Pero aprende JavaScript primero.
Está bien, ahora voy a intentar lo imposible: voy a tratar de anticipar 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 lenguajes de alto rendimiento como C++, Java y Go.
Aquí están los resultados del más completo benchmark reciente entre lenguajes:
Objeción #2: Pero JavaScript no es estáticamente tipado
Al igual que Python y Ruby, JavaScript es dinámicamente tipado, lo cual es conveniente. Pero puedes meterte en problemas. Aquí pretendo que exampleArray
sea un arreglo. Establezco sus valores y luego verifico su longitud, es decir, el número de elementos que contiene.
exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2
Pero luego accidentalmente lo asigno como una cadena.
exampleArray = “texto”
-> “texto”
exampleArray.length
-> 4
Este tipo de errores ocurre todo el tiempo en lenguajes dinámicamente tipados. La mayoría de los desarrolladores simplemente implementan comprobaciones para prevenirlos y escriben pruebas en consecuencia.
Si absolutamente necesitas tipado estático en tu primer lenguaje de programación, entonces aún recomiendo que aprendas JavaScript primero. Luego podrás aprender TypeScript rápidamente.
“TypeScript tiene una curva de aprendizaje, pero si ya conoces JavaScript, será suave.” — Alex Ewerlöf sobre TypeScript
Objeción #3: Pero realmente quiero hacer una aplicación móvil
Aún recomiendo aprender JavaScript primero.
- JavaScript cuenta con varias herramientas para crear aplicaciones móviles nativas, como Angular Cordova y React Native.
- Para que tu aplicación móvil realmente haga algo interesante, probablemente necesitará un backend 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 estar detrás de nosotros.
Para empezar, a pesar de que la gente utiliza aplicaciones móviles, casi la mitad de todos los trabajos de desarrolladores son en desarrollo web. Compara esto con apenas un 8% de trabajos que implican el desarrollo de aplicaciones móviles.
Desarrolladores por ocupación, según la Encuesta de Stack Overflow 2023. Esta pregunta tuvo 76,872 respuestas de desarrolladores que participaron en la encuesta, por lo que es bastante representativa.
La gran visión de «hay una aplicación para eso» no se ha materializado. En cambio, la mayoría de los propietarios de smartphones han dejado de descargar nuevas aplicaciones.
Claro, todavía utilizan aplicaciones. Principalmente Facebook, Google Maps y algunas otras. Así, gran parte de la demanda de desarrolladores de aplicaciones móviles está concentrada en unos pocos grandes empleadores.
El panorama para esos trabajos de desarrollo móvil es difícil de prever. Muchos aspectos del desarrollo, mantenimiento y distribución de aplicaciones móviles son más fáciles con JavaScript. Por lo tanto, empresas como Facebook y Google están invirtiendo fuertemente en mejores herramientas para construir estas utilizando JavaScript.
Casi todo el desarrollo es desarrollo web. Todo toca esa gran plataforma que es «la web». Y la próxima ola de dispositivos con los que interactuarás en tu hogar, y los coches que recogerán a tus hijos de la escuela, también estarán conectados a través de la web.
Y eso significa JavaScript.
Objeción #4: ¿No es JavaScript un lenguaje de juguete que fue escrito en 10 días?
JavaScript tiene una historia peculiar.
Sin duda, escucharás a la gente hacer chistes a su costa.
Bueno, a la gente también le encanta criticar a C++. Y al igual que JavaScript, C++ ha tenido éxito a pesar de este odio, y ahora está prácticamente en todas partes también.
Así que si alguien alguna vez te hace sentir mal por aprender JavaScript en lugar del lenguaje de élite de la semana, solo recuerda las famosas palabras del creador de C++:
“Solo hay dos tipos de lenguajes de programación: aquellos de los que la gente siempre se queja y aquellos que nadie usa.” — Bjarne Stroustrup
Solo escribo sobre programación y tecnología. Si me sigues en Twitter no te haré perder el tiempo. ?
El contenido de este artículo fue traducido de artículo original.