Introducción

En el Máster Front End Online Lemoncode, participamos un equipo de 12 de profesores, y tambíen una serie de empresas que están adheridas a nuestra bolsa de trabajo. ¿Alguna vez te ha picado la curiosidad de saber de donde venimos o qué hacemos? Abrimos serie de posts con entrevistas al equipo y empresas que colaboradon en este máster.

Empezamos entrevistando a Erik Rasmussen, el desarrollador de proyectos tales como Redux-Forms, o guías como Redux Ducks.

La Entrevista

erik.jpg

 

Erik, para los que no te conozcan podrías darnos una pequeña introducción de quien eres y a que te dedicas...

Soy estadounidense, de Carolina del Norte, y llevo 13 años ya viviendo en Cantabria. Empecé a programar con 9 años (lo básico de BASIC con GOTO etc.). La mayoria de mi carrera ha sido con Java, pero hace unos años me enamoré con Javascript, sobre todo con sus aspectos funcionales.

Naciste en North Carolina, pasaste varios años en UK y ahora estás afincado en Cantabria, ¿Qué te movió a esta región? 

Nací en Tennessee, estado vecino de Carolina del Norte, pero con un añito me mudé a NC. Mi respuesta habitual a esta pregunta de "¿Qué haces en España?" es corta, "Por una española. " Conoci a mi mujer en Dinamarca (ella de Erasmus y yo de un programa de intercambios de ingieneros de IAESTE) en el 1999, y fuimos buscando cómo estar juntos. Ella encontró trabajo en Inglaterra, y yo, como controlaba ya el idioma, salté el charco. Después de unos años encontró ella un trabajo con anchoas, la industria principal de mi zona actual, y venimos a Cantabria. A la vez, la empresita que habia iniciado con unos amigos antes de salir del EEUU se convertió a un trabajo permanente con la opción de trabajar en remoto.

¿Como llevas ser una expat? ¿Hay algo que hechas de menos de North Carolina o tienes espíritu nómada?

La verdad es que cuando vuelvo, no hay muchas cosas de que tengo antojo...igual la comida Mexicana, que aquí no existe. Como mi mujer también ha vivido en el extranjero, tenemos los dos "espíritu nómada" – ¡por si mañana nos toca ir a otro país! – que llevamos 12 años en nuestra casa y acabamos de comprar unas lámparas. 

Trabajas en remoto, ¿Qué tal lo llevas? ¿Notas diferencia a trabajar sentado físicamente con compañeros?

Siempre digo que lo de remoto requiere cierta personalidad. Hay gente que no puede aguantar un día entero sin hablar cara a cara con otra persona, y otra gente que este encantada sin ver a ninguna persona. También está el tema del autocontrol, de no pasar toda la tarde en el sofá o buscando en el frigorifico. Y tercero, demarcar la linea entre el trabajo y el ocio. Yo creo que lo llevo bien. Hay días que no hago casi nada, y otros que me cunde y hago como una semana de trabajo, pero por mi experiencia, pasa lo mismo en una oficina.

Las pocas veces que aparezco fisicamente en la oficina de mi trabajo, siempre pasa que un compañero me llama para que me siente a su lado y ver lo que está haciendo, y siempre pienso lo mismo: "¿Por qué no me compartes la pantalla como cuando estamos a miles de kilometros de distancia que lo veo mejor?"

Cómo experto en React / Redux ¿Porqué has elegido React / Redux y no Angular o Vuejs? ¿Qué ventajas le ves?  

He trabajado muchísimo con Angular 1.x, tanto que más o menos soy experto. Pero es cien veces más complicado que React. Templates, controladores, servicios, directivos, etc.... ¿pa' qué? También la idea del flujo de datos unidireccional tenia tanto sentido después de haberme pegado cabezazos trabajando con el $scope etc...

No tengo mucha experiencia con Vue.js, así que no puedo comentar, pero aún no he visto una razón para saltar del barco de React.

Eres un rockstar del mundo OSS, el desarrollador con más estrellas en Github de España ¿Cómo empezaste a colaborar en el mundo Open Source y cómo has llegado hasta aquí?

Yo empecé con React al momento que Facebook lo anunció, siempre como "side project", y mi conocimiento creció a su lado, dandome cuenta que lo de "state management" enseguida llegaba a ser un problema gordo. Cuándo sacaron la "Flex architecture", me parecia que tenia todo el sentido del mundo, y yo hice mi propia implementación con mis stores, etc. Así que estaba perfectamente situado para entender la magia – ¡y era magia en aquel momento! – de Redux.

Entonces no habia compartido casi nada en Github/NPM, pero empecé juntar un "boilerplate" de todas las tecnologias más nuevas, entre React, Redux, Hot Reloading, Webpack, SSR, etc. Más orientado a mi propio aprendizaje, pero con la espiritu de "yo estoy chupando esto de la comunidad...igual le beneficia a alguien copiar esto...". En poco tiempo cogió mucha velocidad y fama mi "boilerplate", con PR's (Pull Requests) mejorandolo de varias maneras.

A la vez, estaba trabajando con un proyecto con muchos formularios. En aquellos tiempos estaba activo en el Slack de Reactiflux (que luego se topo con el límite de usuarios de Slack, y se trasladó a Discord) y charlaba a menudo con unos chavales brillantes: Dan Abramov y Andrew Clark, que por aquel entonces no eran muy conocidos (ahora son parte del equipo de React de Facebook), eran los creadores de Redux, y pregunté a Dan, "¿Sería demasiado despachar una acción de Redux con cada pulsación de teclado en un formulario para mantener el estado en Redux?" Me dijo, "Bueno, ¡inténtalo!" Y así nació Redux Form.

Y, desde luego, el éxito de Redux Form tiene mucho que ver con el éxito previo de mi "boilerplate", porque lo metí como parte del mismo,  cómo indicando que... "si quieres hacer formularios, se hacen así".

¿Qué proyecto open source de los que has hecho es el que más te gusta y por qué?

Hombre, pues estoy muy orgulloso de Redux Form, que tiene ahora más de un millón de descargas al mes. Pero creo que su sucesor, Final Form, está mejor diseñado, es más flexible, y "future proof".

Mucho que empiezan ven imposible llegar a publicar o colaborar en librerías o proyectos de primer nivel, ¿Qué les aconsejas para crecer como desarrolladores?

Llegar a mi nivel de éxito ha sido una combinación de dos cosas, por un lado, tener mucha suerte, estar en el sitio adecuado en el momento adecuado (hacer surf sobre la ola de Redux), y también mucho trabajo y sudor. He metido muchísimas horas mejorando Redux Form, tirandolo abajo y empezando de nuevo, añadiendo mejoras y cambios para que fuera útil a una audiencia lo más amplia posible.. Como todo en esta vida, hace falta una combinación de las dos factores: suerte y trabajo. Con sólo uno no te vale, pero al menos uno de ellos sólo depende de ti.

Aconsejo proponer pull requests de tus librerías favortias,  sin tener  miedo al "que dirán" o al "se van a reir de mí". Incluso a grandes como React mismo. Si realmente estás solucionando un problema real, los dueños de las librerias acceptarán tus cambios enseguida.

Y también si se te ocurre una solución chula a un problema que tienes en tu proyecto que ves que puede valer para muchos, ahí tienes tu semilla para crear to proyecto open source. Te aseguro que hay más gente con el mismo problema. Si lo publicas en NPM con buena documentación otros desarrolladores lo encontrarán. Yo tengo unas librerias muy pequeñas que han sido soluciones a problemas concretos que tuve que solcionar hace años, librerías de las que ya casi ni me acuerdo del problema que venía solucionar, pero la gente las encuentra y está muy agradecia.

Por cierto, si tienes una libreria y quieres más ojos, tuiteame a @erikras, y te lo retuiteo.

Además la satisfacción personal, ¿Crear y colaborar en proyectos Open Source te ha ayudado en tu carrera profesional?

Como comenté en la ultima pregunta... es dificil explicar la satisfacción que da recibir un mensaje de, "¡¡Jooo!! ¡¡Llevo 3 días con este problema y instalar tu libreria me lo soluciona todo!!!" Porque todos los desarolladores hemos vivido lo mismo.

Pues ayudar en mi carrera.... Me ha conseguido una entrevista, con vuelo pagado, en Menlo Park, y luego una oferta muy buena con Facebook. Pero al final el coste de la vida en Silicon Valley comparado con el sueldo tremendo de Facebook no era mejor que lo que ya tengo viviendo en un pueblo pesquero de Cantabria con un sueldo medio normal del EEUU y lo rechacé.

Así que, no me ha avanzado nada mi carrera, pero a mi sentido de ayudar al mundo, sí. Saber que grandes empresas estan ejecutando mi codigo da una satisfacción que no se mide (desafortunadamente :-)) con dolares ni euros.

Cómo profesor del máster ¿Qué sesión vas a impartir este año? 

Creo que mi proximo curso va a ser sobre Styled Components y CSS-in-JS en general.

Por último te gustaría compartir algo adicional con los lectores.

No elijas librerias por cantidad de estrellas. Algunas de las mejores aún no son famosas. Happy coding!

Muchas gracias por tu tiempo Erik