Cuando alguien piensa en una empresa amante de la programación funcional en general, y de Scala en particular, es muy fácil que se nos cruce por la mente 47 Degrees.
Una compañía que nació a mitad de camino entre Cádiz y Seattle, y que a día de hoy se ha convertido por méritos propios en uno de los mayores exponentes del software libre y de la evangelización del paradigma funcional sobre la JVM.
47 Degrees ha participado en eventos tan importantes como el Typelevel Summit en Philadelphia pero, si algo les caracteriza, es la organización de eventos de talla mundial en la maravillosa ciudad de Cádiz.
Tras dos ediciones del Lambda World, ya están calentando motores para la de este año 2017, que podremos disfrutar el 26 y 27 de octubre.
Pero en esta ocasión les hemos pedido que nos hablen de cómo aprender Scala gracias a una herramienta de e-learning libre que han desarrollado: los Scala Exercises.
¿Por qué 47 Degrees ha apostado por Scala?
Es una serie de factores que se alinearon en un momento en concreto.
Una compañía que se ha convertido por méritos propios en uno de los mayores exponentes del software libre y del paradigma funcional
A nivel empresarial, siempre nos hemos considerado como una empresa enfocada a nichos de mercado. Empezamos a desarrollar para móvil cuando Android sólo era una beta y vimos como poco a poco el sector del desarrollo móvil se empezaba a colapsar, así que buscamos otro nicho en el que situarnos.
Scala es un lenguaje utilizado por empresas que tienen necesidades muy especificas (sobre todo orientadas a dar salida al tratamiento de grandes cantidades de datos), por lo que, nuestro nicho y target de clientes esta muy centrado.
A nivel tecnológico, llevábamos mucho tiempo desarrollando en Java y nos dimos cuenta que el mismo lenguaje (y nosotros mismos) necesitábamos una evolución. Es por eso que buscamos un cambio de paradigma, algo que se adaptara tanto a nuestra forma de pensar como a nuestro entendimiento de como deberían de ser los lenguajes de programación.
Es por eso, que apostamos por la programación funcional y con el lenguaje Scala, que te permite una transición amigable desde Java, ya que funciona en la JVM y permite cohabitar con ese lenguaje.
¿Qué ventajas le veis sobre el resto de lenguajes?
Trabajamos en el mundo del software desde hace tiempo y hemos aprendido lo suficiente para saber que no hay mejores lenguajes, si no, lenguajes que se adaptan mejor que otros a tus necesidades o las necesidades de tu proyecto.
Nosotros utilizamos y evangelizamos sobre Scala porque creemos que tanto la comunidad como esa tecnología esta alineada con nuestros intereses.
¿Cuál es la mejor forma de aprender Scala desde cero?
Una de las partes de la empresa en donde invertimos más tiempo y esfuerzo es en el desarrollo de Open Source y en la evangelización del lenguaje.
En nuestra página de proyectos Open Source puedes acceder a más de 100 repositorios de distinta tipología y puedes utilizar para ver cómo aplicamos ese lenguaje a distintos proyectos, librerías o plataformas.
Uno de esos proyectos, de hecho, es una plataforma de e-learning basada en ejercicios, llamada Scala Exercises, donde puedes aprender como desarrollar en Scala y sobre librerías del ecosistema.
¿Cómo surgió la idea de los Scala Exercises?
Como muchos de los proyectos Open Source, parte inicialmente de una necesidad. Debido al carácter joven del lenguaje (sobre todo en los inicios, ya que llevamos en Scala cuatro años), dentro de 47 Degrees realizamos formación y trainings a nuestro equipo.
Parte de esa formación que hacíamos en el principio, era trabajar en los Scala Koans (una recopilación de lecciones y ejercicios que empiezan en un nivel básico y poco a poco van incrementando de dificultad).
Uno de los integrantes del equipo, Rafa Paradela, se dio cuenta de que el potencial de estos ejercicios era automatizarlo, gamificarlo y darle un componente social. De esa manera, la misma comunidad podría retroalimentarse y crear un proyecto vivo y en evolución.
¿Cómo lo hicisteis realidad? ¿Quién participó en su desarrollo?
Nuestra política con proyectos Open Source de este tipo es que, si quieres plantear tu idea conjuntamente con 47 Degrees, nosotros apoyamos, financiamos y hacemos todo lo posible para hacerla realidad.
Vimos que lo que nos planteaba Rafa, no sólo era algo que necesitábamos, era algo con potencial que podía ayudar a mucha gente de la comunidad, por eso, decidimos invertir muchos esfuerzos en ello.
En los años de evolución del proyecto, ha participado en Scala Exercises casi la totalidad del equipo de las tres oficinas.
¿Cuál ha sido vuestra experiencia, qué habéis aprendido de todo esto?
Era algo con potencial que podía ayudar a mucha gente de la comunidad, por eso, decidimos invertir muchos esfuerzos en ello
Scala Exercises nos ha dado muchísimo más de lo que esperábamos. Por un lado, lo seguimos utilizando activamente para nuestras formaciones, pero por otro, la comunidad lo ha convertido en una pieza clave dentro del ecosistema Scala.
Es un caso práctico de cómo una idea, si la planteas Open Source y la desarrollas por y para la comunidad, puede hacerte crecer como empresa en muchos aspectos.
¿Cómo ha sido la aceptación de la comunidad?
La primera versión de Scala Exercises era una plataforma web que validaba los ejercicios basados en los Koans mediante Javascript.
En cambio, con la segunda versión, nosotros intentamos resolver uno de los muros más difíciles que se encontraban las personas que querían aprender el lenguaje por primera vez. Instalar el entorno necesario para poder compilar por primera vez (IDE, SBT, Scala, etc.).
Es un caso práctico de cómo una idea, si la planteas Open Source y la desarrollas por y para la comunidad, puede hacerte crecer como empresa en muchos aspectos.
Trabajamos duro para hacer una plataforma que permitiera embeber un compilador real dentro de Scala Exercises, de esa manera, los ejercicios que vas realizando, no sólo se validan, si no que se compilan.
La comunidad reaccionó muy bien en la primera versión, pero fue en la segunda cuando la comunidad valoró todo el trabajo invertido. Actualmente Scala Exercises forma parte de las guías oficiales de Scala, en GitHub tenemos más de 900 estrellas y 218 forks y cada vez hay más librerías que usan Scala Exercises como forma de evangelización y aprendizaje.
¿Cualquiera puede colaborar añadiendo ejercicios?
Si. La plataforma esta viva y cualquiera puede mandar un Pull Request al repositorio para añadir o modificar ejercicios de los packs actuales.
Es más, una de las posibilidades que añadimos a la V2 de Scala Exercises, es que cualquiera puede añadir un pack de ejercicios. De esa forma, si tienes una librería basada en Scala, puedes utilizar Scala Exercises para añadir una serie de ejercicios que sirvan a los desarrolladores para entender como implementarla.
¿Recomendáis la experiencia a otras personas para que hagan lo mismo con otros lenguajes?
Sin duda. Los mismos lenguajes deberían de tener como prioridad, trabajar para que la curva de aprendizaje sea lo menos compleja posible. Por eso, Scala Exercises es una gran herramienta, permite empezar desde cero y tener una valoración previa antes de lanzarte a la piscina con el desarrollo del lenguaje.
- Scala Exercises | scala-exercises.org
- Sitio Web de 47 Degrees | 47deg.com
- Proyectos open-source | 47deg.github.io