Between the Wires: una entrevista con el creador de Vue.js, Evan You

Entrevisté a Evan You, el creador de vuejs.org, que es un popular framework de JavaScript progresivo. Evan trabaja en Vue a tiempo completo con la financiación de la campaña de Patreon. Anteriormente, trabajó en Google y Meteor.

Este artículo se publicó originalmente en Between the Wires, una serie de entrevistas que presenta a quienes están creando productos para desarrolladores.

Cuéntanos un poco sobre tu infancia y dónde creciste.

Bien, nací en China, mi ciudad natal se llama Wuxi. Es una ciudad de tamaño mediano, que está justo al lado de Shanghai. De hecho, fui a Shanghái a la escuela secundaria durante tres años y me fui y volví. Después de la secundaria, fui a los Estados Unidos para la universidad. Supongo que obtuve acceso temprano a las computadoras, pero realmente no me metí demasiado en la programación. Estaba más interesado en los juegos, y jugué mucho con Flash cuando estaba en la escuela secundaria, porque realmente disfruté creando esas experiencias interactivas de narración.

¿Cuál fue tu primera experiencia de programación?

“Me atrajo JavaScript por la capacidad de simplemente crear algo y compartirlo instantáneamente con el mundo. Lo pones en la web y obtienes una URL, puedes enviarlo a cualquier persona con un navegador. Esa fue la parte que me atrajo de la web y de JavaScript ".

Cuando fui a la universidad en los Estados Unidos, honestamente, no sabía lo que quería hacer y me estaba especializando en arte de estudio e historia del arte. Cuando estaba a punto de graduarme, me di cuenta de que era bastante difícil encontrar un trabajo en estudio de arte e historia del arte.

Pensé que tal vez podría ir a un programa de maestría que se adaptara mejor a mis intereses y desarrollara más habilidades. Fui a Parsons y estudié la Maestría en Bellas Artes para Diseño y Tecnología. Fue un programa realmente genial porque todos eran mitad diseñadores y mitad desarrolladores. Te enseñaron cosas como OpenFrameworks, procesamiento, animaciones algorítmicas y también tenías que diseñar aplicaciones e interfaces.

Parsons realmente no enseñó mucho JavaScript, pero me atrajo JavaScript debido a la capacidad de simplemente construir algo y compartirlo instantáneamente con el mundo. Lo pones en la web y obtienes una URL, puedes enviarlo a cualquier persona con un navegador. Esa fue la parte que me atrajo de la web y de JavaScript.

En ese momento, los experimentos de Chrome acababan de ser lanzados y estaba totalmente impresionado. Inmediatamente salté a JavaScript y comencé a aprenderlo yo mismo, y comencé a construir cosas similares a los experimentos de Chrome. Puse esas cosas en mi cartera y luego de alguna manera fue recogido por el reclutador en Google Creative Lab. Me uní como parte del programa Five. Cada año, Creative Lab contrata a cinco nuevos graduados. Es básicamente un equipo pequeño con un redactor, un tecnólogo creativo, un diseñador gráfico, un estratega y un comodín.

Bien, ¿cuándo o cómo descubrió el problema actual que está tratando de resolver con Vue.js?

Mi trabajo en Google implicó una gran cantidad de prototipos en el navegador. Tuvimos esta idea y queríamos conseguir algo tangible lo más rápido posible. Algunos de los proyectos usaban Angular en ese momento. Para mí, Angular ofreció algo genial que es el enlace de datos y una forma basada en datos de lidiar con un DOM, por lo que no tiene que tocar el DOM usted mismo. También incorporó todos estos conceptos adicionales que lo obligaron a estructurar el código de la manera que quería. Simplemente se sentía demasiado pesado para el caso de uso que tenía en ese momento.

Pensé, ¿qué pasaría si pudiera extraer la parte que realmente me gustó de Angular y construir algo realmente liviano sin todos los conceptos adicionales involucrados? También tenía curiosidad por saber cómo funcionaba su implementación interna. Comencé este experimento tratando de replicar este conjunto mínimo de características, como el enlace de datos declarativos. Así fue básicamente como empezó Vue.

Trabajé en él y sentí que tenía potencial, porque disfruté usándolo. Le dediqué un poco más de tiempo y empaqué correctamente, le di un nombre, lo llamé Vue.js. Eso fue en 2013. Más tarde pensé: “Oye, he dedicado mucho tiempo a esto. Tal vez debería compartirlo con otros para que al menos puedan beneficiarse de él, o tal vez lo encuentren interesante ".

En febrero de 2014, así fue como lo lancé por primera vez como un proyecto real. Lo publiqué en Github y envié un enlace a Hacker News, y de hecho fue votado para la portada. Allí permaneció unas horas. Más tarde, escribí un artículo para compartir los datos de uso de la primera semana y lo que aprendí.

Esa fue mi primera experiencia al ver gente yendo a Github y protagonizando un proyecto. Creo que obtuve varios cientos de estrellas en la primera semana. Estaba súper emocionado en ese entonces.

Si tuviera que enumerar algunas cosas centrales que definieron a Vue en comparación con otros marcos, ¿qué diría?

Creo que, en términos de todos los marcos que existen, Vue es probablemente el más similar a React, pero en un sentido más amplio, entre todos los marcos, el término que acuñé yo mismo es un marco progresivo. La idea es que Vue se compone de este núcleo que es solo enlace de datos y componentes, similar a React. Resuelve un conjunto limitado de problemas muy centrados. En comparación con React, Vue se centra un poco más en la accesibilidad. Asegurarse de que las personas que conocen conceptos básicos como: HTML, JavaScript y CSS puedan aprenderlo lo más rápido posible.

A nivel de marco, tratamos de construirlo con un núcleo muy reducido y mínimo, pero a medida que crea aplicaciones más complejas, naturalmente necesita resolver problemas adicionales. Por ejemplo, el enrutamiento, o cómo maneja la comunicación entre componentes, comparte estados en una aplicación más grande, y luego también necesita estas herramientas de compilación para modularizar su base de código. ¿Cómo organizas los estilos y los diferentes activos de tu aplicación? Muchos de los frameworks más completos, como Ember o Angular, intentan tener opiniones sobre todos los problemas con los que te vas a encontrar y tratan de que todo esté integrado en el framework.

Es una especie de compensación. Cuantas más suposiciones haga sobre el caso de uso del usuario, menos flexibilidad podrá permitirse el marco. O deje todo al ecosistema como React: el ecosistema React es muy, muy vibrante. Están surgiendo muchas ideas geniales, pero también hay mucha rotación. Vue intenta elegir el término medio donde el núcleo todavía está expuesto como un conjunto de características mínimo, pero también ofrecemos estas piezas que se pueden adoptar gradualmente, como una solución de enrutamiento, una solución de administración de estado, una cadena de herramientas de compilación y la CLI. Todos se mantienen oficialmente, están bien documentados y están diseñados para funcionar juntos, pero no es necesario que los uses todos. Creo que eso es probablemente lo más importante que hace que Vue sea un marco, diferente de los demás.

¿Cómo se las arregló para volverse financieramente sostenible con Vue.js?

"Estoy creando valor para estas personas, así que, en teoría, si de alguna manera puedo recolectar estos valores en forma financiera, entonces debería ser capaz de mantenerme".

Estoy creando valor para estas personas, por lo que, en teoría, si de alguna manera puedo recolectar estos valores en forma financiera, entonces debería poder mantenerme. Esto se complica porque el marco de JavaScript es relativamente difícil de pagar por adelantado, dado cómo ha estado funcionando el ecosistema de JavaScript.

Vue tiene una base de usuarios muy dinámica. Muchos de los usuarios de Vue son de Laravelcommunity y también son personas muy entusiastas y agradables. Pensé, ¿funcionaría el crowdfunding? Solo quería probar esta idea en Patreon. En realidad, Dan Abramov, el creador de React-Hot-Loader y Redux, también hizo una pequeña campaña en Patreon antes. Eso es realmente lo que me interesa. Tengo una idea aproximada de cuántas personas están usando Vue. Digamos que hay 10,000 usuarios. Si tal vez el 1% de ellos está dispuesto a darme diez dólares al mes, eso es algo.

En febrero, comencé una campaña de Patreon, y es una cosa de dos partes. Una parte está dirigida a personas que utilizan Vue. Por lo general, solo están dispuestos a renunciar a una pequeña suma, algo así como comprarme un café. Luego está el otro campo con entidades comerciales reales, como nuevas empresas o tiendas de consultoría, que han creado cosas con Vue. Es importante para ellos ver que Vue se mantiene a largo plazo. Les brinda la tranquilidad de saber que su apoyo financiero hará que Vue sea más sostenible y pueden sentirse seguros usándolo a largo plazo.

Otro aspecto son las recompensas de Patreon. Si las empresas están dispuestas a patrocinarnos, entonces podría poner su logotipo en una página de patrocinadores en vuejs.org. Aumenta la conciencia de la comunidad. La mitad de los fondos de Patreon provienen de individuos y uno de ellos patrocinó $ 2000 al mes. No tenía idea de si funcionaría cuando lo probé, pero resulta que funciona. Creo que hice el salto a tiempo completo cuando tenía $ 4000 al mes en Patreon, y ahora ha aumentado a más de $ 9800 al mes.

¿Te tomó mucho tiempo convencerlos de que te patrocinaran? ¿Eran escépticos en absoluto, como, eres solo un marco joven, es posible que no dure seis meses?

Cuando comencé la campaña de Patreon, Vue ya estaba mostrando un crecimiento realmente fuerte. A principios de 2015, Vue seguía siendo en gran parte un proyecto de código abierto aleatorio, pero la comunidad de Laravel comenzó a seguir adelante con Vue. Sentí que si no pudiera ganar dinero con eso, no tendría sentido.

Tengo que agradecer especialmente a Strikingly, que es una empresa emergente con sede en Shanghai. Realmente participan activamente en las comunidades de JavaScript y Ruby en China. En realidad, no usan mucho Vue, pero tienen este fondo mensual que usan para patrocinar proyectos de código abierto. Fueron los primeros patrocinadores de $ 2000 al mes durante seis meses.

Eso ayudó significativamente en la fase inicial. Además, Taylor Otwell, creador de Laravel, también patrocina a Vue. Comenzó con 100 y lo incrementó hasta 200 y 500 con el tiempo.

Mencionaste que pudiste ser patrocinado porque creció muy rápido. ¿Tuviste que hacer marketing? ¿O creció orgánicamente?

Yo diría que no hay dinero real involucrado en marketing. No compré anuncios ni nada. En su mayoría, es solo escribir algunas publicaciones de blog. Muchas veces solo administraba la cuenta de Twitter. Creo que eso es todo. De vez en cuando escribía una publicación en Medium.

Terminó obteniendo una gran tracción en los mercados internacionales, lo que probablemente sea bastante único. Nos encantaría saber cómo sucedió y algunos de los desafíos y las mejores prácticas para involucrar a los desarrolladores fuera de los EE. UU.

El mercado chino es único. Soy chino y estoy bastante involucrado en la comunidad china de JavaScript. Mucha gente conocía a Vue porque me conocían a mí. Tuvimos toda esta traducción de la documentación de Vue a un chino muy bien escrito, por lo que ayudó mucho con la adopción de Vue en China. Muchos usuarios también saben: "Oye, el autor de esta biblioteca es chino". Naturalmente, se sienten inclinados a al menos comprobarlo, pero creo que eso ayudó bastante en las primeras fases. Vue acaba de comenzar a ser utilizado por más y más empresas en China, incluidos los equipos de Alibaba, Tencent y Baidu. Todas esas son empresas valoradas en miles de millones de dólares en China. React también tiene una gran participación en China.

Hay un clon de Quora en China llamado Zhihu, la gente hace todo tipo de preguntas aleatorias allí y yo respondo muchas preguntas relacionadas con JavaScript y Vue.js.

¿Tiene alguna sugerencia para empresas, nuevas empresas o proyectos de código abierto que no pueden interactuar o comunicarse fácilmente con las comunidades internacionales?

Supongo que la barrera del idioma es probablemente la parte más difícil. La idea es que si realmente no pones un esfuerzo dedicado en impulsar algo en China, nadie se dará cuenta, a menos que seas tan grande como React. Necesita a alguien que pueda hablar chino, alguien que pueda hablar chino nativo para hacerlo.

Otra cosa interesante es que en realidad hay muchos otros usuarios de otras regiones del mundo como Italia, España, Portugal y Japón. Algunos de los contribuyentes más activos son de Japón. Son muy, muy meticulosos a la hora de traducir las documentaciones.

¿Cometió algún error al crear Vue que espera no volver a cometer nunca más?

"Tengo que repensar por completo el problema de cierta manera, pero creo que así es como funciona el desarrollo de software porque nunca conseguirías nada bien desde el primer intento".

Hm, lo sé, probablemente hay bastantes. Hasta la fecha, Vue se ha reescrito desde cero dos veces. Obviamente, lo reescribí porque la implementación original tenía problemas que simplemente no podían resolverse gradualmente refractaria. Es como si cada seis meses miro el código base de hace seis meses. Seré como, guau. ¿Cómo funcionó esto?

Tengo que repensar por completo el problema de cierta manera, pero creo que así es como funciona el desarrollo de software porque nunca se logra nada bien desde el primer intento.

El viaje de construir Vue también es un viaje de crecimiento como desarrollador, porque con el tiempo tuve que agregar nuevas funciones, mantenerlo, corregir errores y asegurarme de que todo el ecosistema funcionara correctamente en conjunto. Naturalmente, lo expone a todos los problemas con los que se encontraría como ingeniero de software. Es solo un proceso de aprendizaje.

¿Ha tenido dificultades emocionales o no técnicas que haya enfrentado con Vue?

“No va a haber un marco único que simplemente haga felices a todos. La parte más importante es hacerlo mejor para las personas que realmente disfrutan de su marco. Concéntrese en lo que cree que es lo más valioso en su marco y asegúrese de estar haciendo un gran trabajo, en lugar de preocuparse por cómo se compara con los demás ".

Definitivamente los ha habido. Hay mucha presión en términos de competencia. Cuando Vue todavía era relativamente desconocido, esa presión no existe porque cualquier exposición es buena. La gente no te va a exigir un cierto nivel. Pero a medida que Vue se ha hecho más y más grande, naturalmente la gente comenzó a comparar Vue con cosas como Angular o React, y señalaron cosas como, “oye, React hace esto mejor. Angular hace esto mejor ".

Eso te pone mucha presión y puede ser estresante tener que competir con todos los grandes. Especialmente ahora que estoy haciendo esto a tiempo completo. La viabilidad de Vue en el ecosistema básicamente está directamente relacionada con lo bien que lo estoy haciendo.

Pero recientemente, acabo de ver una charla de Evan Czaplicki, el autor de Elm, donde habló sobre cómo tuvo una presión similar cuando estaba trabajando en Elm. Estaba Om, la interfaz ClojureScript encima de React. Había PureScript, hay otras compilaciones funcionales para lenguajes JavaScript, también le preocupaba cómo Elm podría competir con esas bibliotecas.

Más tarde, habló con Guido, autor de Python, y Guido le dio un consejo, dijo, "haz un buen trabajo". La idea detrás de eso es que Python también tenía este problema. Compite con muchos lenguajes dinámicos, como Ruby, JavaScript, Perl, y también está en el mismo dominio de problemas. Al final, todos estos idiomas tienen éxito por derecho propio, y tienen su propia comunidad dedicada que los usa, disfrutando de esos idiomas.

La gente prefiere diferentes idiomas por una razón. Al igual que los marcos de JavaScript, la gente preferiría marcos diferentes por una razón. No va a haber este marco único que simplemente haga felices a todos. La parte más importante es hacerlo mejor para las personas que realmente disfrutan de su marco. Concéntrese en lo que cree que es lo más valioso en su marco y asegúrese de estar haciendo un gran trabajo, en lugar de preocuparse por cómo se compara con los demás.

¿Qué consideraría un resultado exitoso para Vue.js?

Esa es una pregunta difícil porque el alcance de Vue.js definitivamente ha aumentado con el tiempo. Ahora tenemos todo este ecosistema de marco y también nos estamos expandiendo para explorar cosas como Weex, que está procesando componentes de Vue en una interfaz de usuario nativa.

También me importa mucho la parte de accesibilidad de Vue, que se basa en la creencia de que la tecnología debería permitir que más personas construyan cosas.

Las siguientes son preguntas divertidas fuera de la programación. ¿Qué otros pasatiempos o intereses tienes fuera de la programación?

Anime, leo mucho manga. En caso de que no lo hayas notado, los lanzamientos de Vue tienen nombres en código con nombres de anime. Comenzó en .09, cada nombre de código de lanzamiento grande se incrementa con una letra. 2.0 es G, que es Ghost in the Shell. En realidad, F está reservado para 1.1. 1.0 fue Evangelion.

Realmente disfruto el karaoke.

¿Cuáles son algunas de las principales tecnologías o tendencias que más le entusiasman?

Tecnología general. Es extraño porque no estoy muy emocionado con las cosas de AR o VR. Realmente quiero hablar sobre algo que esté más cerca de los desarrolladores. Algo parecido a lo que está haciendo Guillermo con Now. Los desarrolladores crean herramientas para los desarrolladores, y la experiencia del desarrollador de estas herramientas es también la experiencia del usuario pero para las herramientas del desarrollador.

¿Quiénes son algunos de tus héroes de la programación? Si tienes algún.

Obviamente TJ Holowaychuck y Guillermo Rauch. No soy un estudiante de ciencias de la computación. Básicamente, aprendí programación a través de libros y recursos en línea aleatorios, pero una forma importante de aprender fue leyendo el código de otras personas. Cuando leo el código de TJ, siempre siento que es realmente elegante. Esa es la palabra que me viene a la mente y eso me afectó mucho. TJ es definitivamente un héroe para mí.

Este proyecto es posible gracias a los patrocinios de frontendmasters.com, egghead.io, Microsoft Edge y Google Developers.

Dona para apoyar este proyecto.

Para sugerir un fabricante del que le gustaría tener noticias, complete este formulario.

También puede enviar comentarios a Amongthewires en Twitter.