JavaScript. Java. Python. C++. C#. Hasta a los que no somos desarrolladores nos suenan estos nombres. Son algunos de los lenguajes de programación más usados. Pero en el ecosistema desarrollador español también hay profesionales que, por un motivo u otro, apostaron por uno menos frecuente.
Es cierto que, con el paso del tiempo, algunos de esos lenguajes han pasado de ser “rara avis” a, simplemente, menos frecuentes. Pero les hemos preguntado qué les llevó en su momento a apostar por un lenguaje poco común así como lo mejor y lo peor de estar especializado en algo diferente.
Lara Martín, Flutter y Dart
Lara Martín es Ingeniera Android y Google Developer Expert en Flutter y Dart. “No estudié Ingeniería Informática, sino soy licenciada en Biología y tengo un máster en Biotecnología. Pero acabé dedicándome a hacer aplicaciones para móvil”, nos cuenta desde Berlín, donde vive.
Para su trabajo, usa principalmente Kotlin al ser desarrolladora Android, pero también emplea Dart cuando hace aplicaciones Flutter, un framework para el desarrollo de aplicaciones tanto móvil para Android y iOS, como para aplicaciones desktop y también páginas web. Este framework usa un lenguaje de programación llamado Dart. A parte de Kotlin, también ha programado mucho en Java. “En el pasado también hice algunos proyectos en Python y Javascript”, recuerda.
¿Cómo llegó hasta Dart? “Cuando Google presentó Flutter, me picó la curiosidad porque después de años haciendo aplicaciones Android de forma nativa (es decir usando Java/Kotlin), vi que Flutter simplificaba mucho el trabajo de desarrollar aplicaciones”, nos cuenta. Eso, sumado a que le permitía crear aplicaciones para iOS, acabaron llamando la atención de esta desarrolladora.
Reconoce que aprender un nuevo lenguaje “me daba un poco de miedo”. Además, en aquel momento Dart le parecía menos atractivo que Kotlin, “que justamente en esos momentos Google declaró que oficialmente soportaba Kotlin”, rememora. Pero a renglón seguido añade que cuando empezó a aprender Dart “me pareció muy accesible. Es un lenguaje sencillo, sin poca magia, que cualquier persona que conozca Java o Javascript, no va a tener ningún problema aprendiéndolo”.
Sin embargo, para ella especializarse en un lenguaje poco frecuente ha sido algo lógico. “No puedes elegir el lenguaje cuando estás creando aplicaciones móvil, sino que depende del framework que uses. En el caso de Flutter, Dart es el único lenguaje que puedes usar”, sentencia. Sin embargo, es consciente de que Dart es un lenguaje “poco atractivo para muchos porque no se utiliza fuera de Flutter. Existe la posibilidad de hacer backend con Dart, y así como programar páginas web con AngularDart, pero no es popular”.
En cualquier caso, lo que le gusta de Dart es que es “un lenguaje creado por Google para Google. Ésto les permite adaptar el lenguaje a sus necesidades y a las necesidades de Flutter”. Además “permite añadir nuevas funcionalidades de forma más rápida. Por ejemplo, se han añadido "extension functions" después de que la comunidad pidiera esa funcionalidad”, detalla.
"Dart permite añadir nuevas funcionalidades de forma rápida, aunque es una comunidad pequeña"
Lara Martín, no obstante, sí que echa de menos que la comunidad no sea tan numerosa como otras. “Empieza a haber algunas pequeñas conferencias sobre Flutter”, añade, como el Flutter Conf Marbella, “una de las primeras conferencias de Flutter en Europa” que se llevó a cabo en 2019. En enero del 2020 “estuve en Flutter Europe, con otros 500 entusiastas de Flutter y Dart en Polonia”. ¿Lo bueno de ser tan pocos? Que se conocen bastante entre ellos. “Formamos parte de un colectivo en el cual nos ayudamos los unos a los otros”, asegura
Sin embargo, cree que “por suerte Google está trabajando mucho en crear una comunidad. Yo pertenezco a un comité llamado Flutter Ecosystem Committee, en el que estamos evaluando bibliotecas creadas por la comunidad, para recomendarlas a los programadores de Flutter”. También Google tiene mucha documentación, el programa Google Developer Expert, además de muchos tutoriales (codelabs).
Esta desarrolladora cree que Google está apostando fuerte por Flutter. Tanto que “parece que será la forma preferida para crear aplicaciones en el nuevo sistema operativo en el que están trabajando”, llamado Fucsia. “Pero nunca se sabe”, añade. Reconoce que por ahora hay poca demanda de desarrolladores que conozcan este lenguaje y, cuando la hay, generalmente buscan freelancers “ya que muchas empresas de momento están probando la tecnología primero, antes de lanzarse a crear un equipo entero”. Sin embargo , cree que poco a poco se ven más ofertas de trabajo, aunque cree que “es incierto todavía cuál va a ser el futuro”. En cuanto a los salarios, no hay diferencia con desarrolladores Android o iOS, según esta experta.
Lara Martín asegura que tanto Flutter como Dart son fáciles de aprender y, en su opinión, muy atractivos para desarrolladores Android y iOS, ya que “desarrollar aplicaciones con Flutter es mucho más rápido y sencillo”. Sin embargo, advierte que “a veces es necesario tener un poco de conocimiento de la plataforma nativa Android o iOS, con lo cual para alguien que no tenga experiencia creando aplicaciones móvil, puede que lo encuentre un poco más difícil”.
Para aquellos que les pique el gusanillo, les anima a visitar la web de Flutter y clicar en "Get started", para instalar Flutter y Dart, y crear la primera aplicación. “Ahí veréis que tienen tutoriales específicos para gente que viene de otras plataformas y lenguajes, como React Native, Xamarin y web”.
Rafa Paez, Elixir
Rafa Paez es desarrollador de software y “un apasionado del crecimiento personal y la educación financiera”. Actualmente trabaja como Principal Software Engineer en Cabify y lo hace en remoto desde Mallorca.
Trabaja principalmente con Elixir, aunque también toca un poco de Ruby y actualmente está aprendiendo Go. “Elixir, Go y Ruby son los 3 lenguajes de programación principales que utilizamos en Cabify para el back-end de nuestra plataforma”, nos explica.
Cuando empezó a programar lo hizo en C# y en .NET, de Microsoft. Pero a los 7 años le llegó la oportunidad para trabajar en una startup londinense usando Ruby. “Hace poco más de 3 años descubrí Elixir y me enamoré de este lenguaje de programación. Antes de ser contratado por Cabify, estuve casi un año desarrollando un producto con Elixir para mi propia startup”, nos cuenta. “Quedé muy positivamente sorprendido con la elegancia del lenguaje Elixir, la solidez de su plataforma Erlang y la productividad que conseguí con Phoenix, el framework web más popular de Elixir”, asegura Paéz, quien también conoce Java, VB.NET, Javascript, Ada y C entre otros, “aunque nunca profundicé en ellos”.
Pero Elixir fue su gran apuesta personal y, de hecho, fue la opción que escogió para crear el producto de su propia startup. “Su creador, José Valim, era contribuidor de Ruby on Rails y un día, trabajando en una nueva “feature”, quedó frustrado por un problema de concurrencia que el lenguaje Ruby no podía resolver de forma natural, por diseño del lenguaje. Tras una larga investigación, descubrió el lenguaje Erlang que es concurrente por naturaleza. Pero había un pequeño problema, el lenguaje era poco atractivo - nada que ver con la agradable sintaxis de Ruby. Así que él creó Elixir, un lenguaje funcional basado en Erlang pero con una sintaxis elegante influenciada por Ruby”, nos cuenta.
Para Rafa Paez, hay varias ventajas en Elixir. “Es un lenguaje funcional, concurrente, elegante, moderno, robusto, fiable y rápido”, sentencia. “Está diseñado para crear aplicaciones escalables y mantenibles. Además se ejecuta sobre la máquina virtual de Erlang (BEAM). Por ponerte un ejemplo, WhatsApp se desarrolló en Erlang. Muchos programadores Ruby se han pasado Elixir por estas ventajas y cada vez hay más empresas adoptándolo”.
Son tantas las cosas buenas que, en su opinión, tiene Elixir que apenas ve algunos defectos. “Hace 3 años, cuando yo empecé a usarlo, era un lenguaje relativamente nuevo y quizás no había tantas herramientas y librerías, como por ejemplo había en Ruby. Pero hoy en día esto ha cambiado y el ecosistema de Elixir es muy estable y avanzado”, asegura. Quizá por eso tampoco nota dificultades para trabajar con Elixir. “Hay muchos plugins para Elixir en los principales editores, como Visual Studio Code, por ejemplo. Tenemos incluso conferencias anuales muy importantes como la ElixirConf EU y a la cual solemos ir algunos de Cabify, ya que la empresa nos invita a ir a este tipo de eventos”, asegura.
"Elixir es un lenguaje funcional, concurrente, elegante, moderno, robusto, fiable y rápido"
Este aumento de la popularidad de Elixir también hace que, en su experiencia, cada vez haya más puestos de trabajo para desarrolladores de Elixir, tanto en España como a nivel mundial. “En este último año, he notado un incremento de trabajos para Elixir, por las ofertas constantes que recibo a través de LinkedIn”. Además, asegura que, en términos generales, las ofertas tienen una buena variable económica. “Sí están bien pagados los programadores Elixir”, asegura, aunque cree que en España no hay suficientes programadores Elixir para suplir toda la demanda. Pero, en su experiencia en Cabify, si eres un buen ingeniero “con un poco de ayuda” se aprende el lenguaje “bastante rápido y sin problema”.
Por todo ello, Rafa Paez remarca que “Elixir es un lenguaje funcional que está en auge y debido a sus ventajas lo seguirá estando por muchísimos años”, por lo que “veo mucho futuro a Elixir y los ingenieros que lo utilizan. A Go también le veo futuro”.
José Antonio Riaza Valverde, Prolog y Haskell
José Antonio Riaza Valverde es graduado en Ingeniería Informática con mención en Computación por la Universidad de Castilla-La Mancha. Actualmente es investigador predoctoral en la Universidad de Castilla-La Mancha, donde realiza su tesis doctoral en el grupo de investigación DEC-TAU (“Declarative Programming and Automatic Program Transformation”).
“En nuestro grupo diseñamos lenguajes de programación declarativos y técnicas automáticas para optimizar programas, y creamos herramientas para trabajar con ellos. Actualmente estamos trabajando en FASILL (“Fuzzy Aggregators and Similarity Into a Logic Language”), un lenguaje de programación lógico difuso que extiende las capacidades de Prolog al permitir tratar con información imprecisa incorporando grados de verdad y conectivas difusas en las reglas del programa”, nos explica.
Además, Riaza es el creador y desarrollador principal de Tau Prolog, un intérprete de Prolog de código abierto para navegadores, enteramente escrito en JavaScript.
En su grupo de investigación trabajan fundamentalmente con## Prolog, “ya que nuestra principal línea de investigación es la programación lógica. No obstante, también me declaro acólito de Haskell y de la programación funcional”.
¿Cómo entró en contacto con Haskell y Prolog? Durante el tercer año de carrera. “Cuando ves todo lo que puedes hacer con unas pocas líneas de código, te entran ganas de seguir aprendiendo sobre estos lenguajes, y cuando te acostumbras a programar en ellos, te da mucha pereza tener que volver a trabajar con lenguajes imperativos”, explica. Hasta ese momento conocía los lenguajes que se suelen utilizar en la carrera: C, Java, Python y JavaScript.
Riaza explica que un programa se compone de una parte lógica y otra de control. “El componente lógico determina el significado del programa (qué hace), mientras que el componente de control solamente afecta a su eficiencia (cómo lo hace)”. Y, en su opinión, “cuando trabajas con un lenguaje declarativo, estás dejando de lado la parte de control, que se asume automática al sistema, para centrarte en la parte lógica. Por lo tanto, si a la hora de programar me puedo desentender de la mitad de la ecuación, ¡estupendo!”.
"En los lenguajes declarativos no existen los estados, no le indicas al ordenador cómo tiene que computar las cosas, y esto es algo que al principio puede resultar extraño"
En el caso de Haskell, las ventajas que encuentra son “el orden superior, el polimorfismo y las clases de tipos te proporcionan una capacidad increíble de abstracción”. Además, el hecho de que el lenguaje sea puramente funcional “le proporciona propiedades muy útiles para su estrategia de evaluación, ya que una expresión no tiene porqué computarse hasta que realmente es necesario. Esto te permite, entre otras cosas, manejar estructuras de datos infinitas”, asegura. Si a ello le sumamos la “currificación de las funciones y al uso de estructuras comunes como funtores y mónadas, hace que sea muy cómodo y elegante construir nueva funcionalidad a base de aplicar parcialmente y componer otras funciones”.
Mientras, de Prolog destacaría “la reversibilidad, la vuelta atrás automática y el no determinismo, que te permiten explorar un gran espacio de búsqueda con muy poco código”. Riaza defiende que los argumentos de los predicados en Prolog no tienen una dirección, no son de entrada o de salida, y por lo tanto “un predicado que concatena listas también te sirve para separarlas, por ejemplo. Por otra parte, es un lenguaje homoicónico, es decir, las reglas del programa pueden ser manipuladas como datos del propio lenguaje, lo que te permite modificar fácilmente el comportamiento del programa en tiempo de ejecución. Además cuenta con gramáticas de cláusulas definidas, que proporcionan una forma conveniente y efectiva de expresar gramáticas, resultando especialmente útiles en el procesamiento de lenguajes naturales y de lenguajes formales”.
Para este ingeniero, la peor parte de estos lenguajes es la curva de aprendizaje y el cambio de mentalidad que requieren si estás acostumbrado a otros paradigmas de programación. “En los lenguajes imperativos, lo normal es especificar un programa como una secuencia de acciones que van mutando estados (asignando datos a variables que pueden cambiar de valor) hasta producir un resultado final, y poseen estructuras de control para modificar el flujo de las acciones. En los lenguajes declarativos no existen los estados, no le indicas al ordenador cómo tiene que computar las cosas, y esto es algo que al principio puede resultar extraño”, explica.
En su experiencia, en el caso de los lenguajes lógicos como Prolog es conveniente conocer ciertos aspectos formales de la lógica de predicados antes de empezar a programar, como son la unificación sintáctica o la resolución SLD, “ya que su semántica se apoya fuertemente en estos conceptos”.
Pero, más allá de eso, cree que no es difícil aprender ni trabajar con estos lenguajes menos corrientes. “En la web hay documentación y recursos suficientes para aprender, listas de correo y foros para resolver dudas, etcétera”, asegura. Además, explica que le han ayudado mucho otros programadores que trabajan con lenguajes lógicos o que mantienen las principales implementaciones de los mismos. “Siempre hacen todo lo posible por dar visibilidad a los lenguajes declarativos y ayudar a otros desarrolladores”, asegura.
Y, aunque no piensen trabajar con ellos directamente, Riaza sí que anima a otros desarrolladores a conocer estos lenguajes de programación “El avance de la programación requiere de la invención continua de nuevos paradigmas, y por lo tanto el avance de los programadores pasa por ampliar su repertorio de paradigmas”.
No tan raros, pero menos “mainstream”
Además, hay otros desarrolladores que, si bien no se han decantado por un lenguaje raro, están especializados en otro que no es tan frecuente y que, en cierto modo, en su momento sí eran lenguajes extraños.
Es el caso, por ejemplo, de Alex González, Ingeniero Informático que trabaja en BBVA Next como Head of Backend para un proyecto de BBVA en el que colabora como team lead y cuyo código está está escrito principalmente en Go. Él mismo reconoce que Go no es un lenguaje poco frecuente actualmente. Pero “sí lo era cuando comencé a usarlo (finales de 2013) y comencé a usarlo principalmente por necesidades de proyecto”.
Recuerda que, en sus inicios, su ecosistema “era bastante pobre. Cada vez que tratabas de buscar una librería para algo “típico” tenías que acabar picándote algo que te sacase las castañas del fuego”. Pero, curiosamente, lo que antes era una desventaja (el ecosistema pobre) ahora es algo a su favor “ya que muchos -por no decir todos- los proyectos OpenSource con los que debo trabajar o bien están escritos en Go o tienen librerías para Go. Además, el hecho de que sea un lenguaje estático fuertemente tipado nos ahorra sorpresas en producción”, asegura.
Mientras, Bea Hernández, matemática de formación, es Data Sctientis de Olympic Channel. Reconoce que no es programadora por vocación pero que, además de Python y R, también ha aprendido cosas en Julia, un lenguaje para Data Science “que está de moda y funciona muy bien pese a que no está en versión 1”, asegura. También ha probado Haskel “por curiosidad, no por necesidad de trabajo”.
Para su trabajo, utiliza R y Python dependiendo del proyecto en el que esté. Reconoce que R es complicado de primeras, sobre todo en la sintaxis. “Me costó entender el cambio de mentalidad de pasar de Python a R”. Algo que, en su opinión, se debe a que R, en su origen, está hecho de estadistas para estadistas y no es un lenguaje como Python, más de software. Pero, una vez que empiezas a trabajar con R, es sencillo. Dado que es muy utilizado por profesionales para los que “programar no es su primera opción” (como biólogos y otros perfiles de ciencias naturales), hay librerías para todo. “Si te sales R base o clásico y te vas a otros paquetes que te mejoran la sintaxis no es difícil de entender”. Algo que, sin embargo, no pasaba cuando Hernández empezó a aprender R hace ya algunos años. “No había tantos recursos”, recuerda.
Por su parte, Rafael Bernal Bermúdez es Grado Superior de sistemas y desarrollador full stack aunque lo que más le gusta es el front end. Trabajo para Autentia en proyectos para diferentes bancos y aerolíneas. Se ha especializado de unos años a esta parte en TypeScript. “Había leído sobre él pero no había profundizado” hasta que un compañero de trabajo “muy fanático me sumergió en él”. Desde entonces, lo tuvo claro. “Es muy bueno para trabajar en equipo. Da una capa de extra de seguridad”, asegura. Y le gusta “mucho” tanto a nivel profesional como personal.
“Hay pocas cosas que no me gusten de TypeScript”, asegura. Entre otras cosa porque, pese a no ser un lenguaje mayoritario, sí que hay mucha información. Pero, como punto negativo, sí hay algo que destacaría. “El transpilado del código typescript a javasript nos ayuda mucho, pero el archivo javascript que este genera, es en la mayoría de los casos, es ininteligible, hay que confiar en la magia del transpilado”. Y ésta es, precisamente, una de las razones por la cual cree que es importante tener una buena base javascript para dominar typescript.
Ver 16 comentarios