Xavier Noria on Rails 6, consultoría y más

Ya este sábado, nos reuniremos con todos los rubistas en la conferencia principal dedicada a esta tecnología: RubyRussia 2019 . El 28 de septiembre está muy cerca, y en esta entrevista las preguntas para Xavier Noria fueron preparadas por el desarrollador de Evrone, Pavel Argentov , y los estudiantes y maestros con quienes trabaja en el curso "Lenguajes de programación de Internet" en MSTU lo ayudaron.

imagen
Una foto rara de la última visita de Chavier a Rusia - en RailsClub Moscú 2012

¿Qué consideras lo más interesante e importante de lo que ha sucedido recientemente en el mundo de RoR?

Creo que Rails 6 fue un lanzamiento impresionante. Nuevos componentes principales, soporte para múltiples bases de datos, pruebas paralelas; Un nuevo gestor de arranque que "envía a la historia" el famoso rastrillo con carga automática.

Se gana la vida con Rails consulting. ¿Qué te dio esto como programador?

Sobre todo, me dio experiencia y conciencia de que el trabajo ordinario no puede proporcionar. Enriquecimiento de consultoría. Cada empresa y cada equipo son diferentes. Te encuentras con varias áreas de negocios, culturas, flujos de trabajo, arquitectura, características y preferencias. La adaptación a los entornos móviles, las tareas que deben abordarse, conservan las habilidades para resolver problemas agudizados.

Continuando con la pregunta anterior, según su experiencia, ¿qué deben tener en cuenta los desarrolladores de Rails?

Los desarrolladores primero deben conocer Ruby y Rails lo más profundo posible. Esto significa leer libros y documentación, en lugar de publicaciones de blog dispersas. El maestro debe poseer su instrumento. Por ejemplo, debe comprender bien SQL para que Active Record sea un catalizador para el proceso, no un cuadro negro. Utilice Active Record, para generar de manera fácil y segura SQL que de otro modo se escribiría a mano, y procese fácilmente los conjuntos de datos resultantes. Una comprensión decente de HTTP es importante porque es el idioma que la aplicación habla al mundo exterior (incluido el recuerdo de WebSockets). Hay muchas otras cosas a tener en cuenta, pero mencionaría especialmente el rendimiento. Necesita saber cómo conducir puntos de referencia, necesita saber sobre GVL en MRI y todo eso. Busque recursos sobre este tema, estudíelos, desarrolle una intuición informada.

¿Es Ruby realmente el lenguaje que mejora la mente del programador? ¿Cómo aprovechar al máximo esto?

Personalmente soy escéptico de tales generalizaciones. Ruby me emociona, y Scala entusiasma a los programadores de Scala. He estado haciendo Perl durante algunos años y lo amo mucho, pero a muchos no les gusta. Diferentes cerebros encuentran placer en diferentes formalismos, incluso sus propias preferencias pueden cambiar con el tiempo. Como programador, es mejor usar tantos lenguajes como sea posible y tantos paradigmas como sea posible. El lenguaje que me rompió la mente fue Prolog. El paradigma que más me influyó fue la "programación literaria" en el estilo Knuth. Pasar por estos métodos de programación completamente diferentes te hace mejor. Encuentro a Ruby particularmente flexible y de alto nivel.
Alto nivel ayuda a discutir "más cerca de la tarea". Esto me atrae a los lenguajes de súper alto nivel (VHLL). Soy matemático por educación, y puedo trabajar con cualquier formalismo que plantarán; Los lenguajes de programación aquí son juguetes para niños. La integridad de Turing, por ejemplo, no coincide con la equivalencia práctica. Para resolver problemas reales, es difícil encontrar algo mejor que VHLL. Te sientes realmente poderoso y productivo, porque hay menos complejidad artificial y puedes concentrarte mejor en la solución real del problema. Resolver problemas reales fue lo que me hizo seguir una carrera en programación. En términos generales, "donde se necesita C, tome C".

Estamos haciendo que la conferencia sea más "Ruby" que "on Rails". ¿Qué aplicaciones Ruby existen además de Rails, o incluso además de webdev?

Si la memoria me funciona bien, el primer programa de Ruby que utilicé fue el FreeBSD Port / Package Manager. Eso fue a principios de la década de 2000 antes de Rails. El software Ruby popular que no está directamente relacionado con el desarrollo web es Vagrant, Metasploit, Jekyll, Chef, Puppet o Homebrew. Además, los sistemas en las compañías de Rails rara vez consisten únicamente en una interfaz web. Por lo general, hay todo un ecosistema de software. Una compañía cuyo idioma principal es Ruby generalmente también tiene un software de back-end limpio de Ruby (quizás en combinación con otras tecnologías).

Por ejemplo, en la empresa que actualmente estoy consultando con Stuart Delivery, acabo de implementar un servicio que acepta mensajes de Kafka a Redis para que los procesen los trabajadores de Sidekiq. También trabajamos en un proyecto de migración de datos no trivial y en un emulador empresarial súper interesante. Todo está escrito en puro rubí. El frontend del lado del servidor de la compañía es Rails, pero detrás de escena y en toda la plataforma hay muchos más programas e idiomas diferentes. Este es un hecho común en mi práctica.

Spoiler time: ¿de qué se tratará su informe en RubyRussia 2019?

Hablaré sobre Zeitwerk, la nueva gema de Ruby que implementa carga automática, reinicio y arranque activo para proyectos de Ruby. Rails 6 delega estas características a Zeitwerk por defecto.

¿Cuál es tu mejor impresión del mundo de Ruby? ¿Quizás código, tecnología, conocimiento o actitud?

Esta es una impresión subjetiva, pero creo que el mundo de Ruby fue sorprendentemente innovador. Hablamos de esto con Terence Lee hace algún tiempo. Para empezar, creo que es difícil estar en desacuerdo con la afirmación de que Rails representa una verdadera revolución en el desarrollo web. Empresas como Heroku, New Relic, Shopify o GitHub fueron simplemente revolucionarias. Sin embargo, en mi experiencia, las personas que gravitan principalmente hacia ciertas comunidades son parcialmente ciegas a lo que está sucediendo en las comunidades del vecindario. Estoy seguro de que la innovación se puede encontrar en cualquier comunidad, ya sea Scala, Haskell o incluso Brainfuck. Por lo tanto, si pudiera observar globalmente a cada comunidad, encontraría que la comunidad Ruby no es particularmente innovadora porque todas son innovadoras de una manera u otra.

En su opinión, ¿necesita Rails algo así como una biblioteca de componentes CMS estándar? ¿Como andamios para construir piezas CMS estándar?

En mi opinión, esto es un poco fuera de tema para Rails. Permítanme también usar esta pregunta para comentar que los andamios son solo una forma asequible de hacer una demostración rápida en una conferencia o generar una aplicación para verificar algo, reproducir un error, ver cómo funciona una función en particular. Nunca he visto andamios "en batalla", no son adecuados para uso práctico.

Las soluciones modernas son generalmente heterogéneas: podemos usar Julia para ML, Java para cargas de trabajo comerciales pesadas. ¿Ruby proporciona herramientas para la interacción lingüística suficiente? ¿Hay alguna herramienta para facilitar esto?

JRuby se comunica con Java de forma nativa. Puede escribir extensiones C para MRI, puede envolver bibliotecas C de manera portátil usando FFI, y Helix le permite escribir extensiones en Rust. En términos generales, es más fácil comunicarse con los procesos de manera estándar utilizando el sistema de archivos, sockets, HTTP, bases de datos, gRPC, corredores de mensajes.

Como muchos han notado, Ruby ya no es "nuevo y brillante". Ahora es más "buen lenguaje antiguo". Los estudiantes, por otro lado, son jóvenes. ¿Cómo motivar su interés en aprender Ruby?

En la década de 2000, enseñé Perl a estudiantes de la Universidad de Barcelona durante siete años en mi tiempo libre. Antes de mi curso, se ocupaban principalmente de C y Java, y hablaba sobre lenguajes de script y Perl lo usaba como ejemplo. Fue muy divertido Necesitamos un programa fascinante que enseñe programación, y se centre en lo que está disponible con estos idiomas, y le permitirá profundizar en una elección específica. En el caso de Ruby, esto es desde una simple implementación de OOP hasta fantásticas capacidades de metaprogramación. Puede mostrar, por ejemplo, cómo funciona el modelo Active Record sin una sola línea de código en el cuerpo de la clase.

Hay docenas de lenguajes de programación para elegir. ¿Por qué elegir Ruby, por qué no Python o JavaScript, qué tal Clojure, Rust, C ++, Go? Todas las opciones son controvertidas o viceversa: estas son todas excelentes opciones. Elija uno, haga que el curso sea memorable, haga que los estudiantes estudien la programación, las mejores prácticas, el concepto de idioma, déjelos aprender a verificar la documentación y explorar cuestiones relacionadas importantes que van más allá del formalismo. Esto es lo que los hará crecer, prepararlos para la profesión fundamentalmente. En mi opinión, este es el papel de la universidad.

Hay muchas herramientas diferentes para lo mismo: Rails core con Active Record, Dry-rb y otros. ¿Debo tomar las alternativas? ¿No hacen Rails "caminos" en lugar de "caminos"?

Depende en gran medida de las preferencias individuales. Definitivamente, debe estudiar y comprender las combinaciones de herramientas, capas y patrones que más le convengan. Es importante recordar que "Ruta de Rails" no significa "colocar toda la aplicación en las carpetas predeterminadas". Este es un error común. ¿Quieres decoradores? Objetos de servicio, PORO? Genial Esto no contradice el llamado "The Rails Way". Rails proporciona un conjunto de abstracciones predeterminadas y organización del código, que, en nuestra opinión, es lo suficientemente bueno para muchas aplicaciones, al menos como punto de partida. Y luego, si desea escribir acciones de controlador como archivos de una sola línea que descargan todo el trabajo en objetos de servicio, puede hacerlo. A algunos no les gusta esto. Diferentes personas, diferentes cerebros.

¡Nos vemos en RubyRussia!

Recordemos que la conferencia ya es este sábado, el registro aún está abierto.

No solo habrá informes, sino también stands de las mejores empresas:

Organizador - Evrone
Socio general - Toptal
Gold Partner - Gett
Socios de plata: Valarm , JetBrains , Bookmate y Cashwagon
Socio de bronce - InSales

Source: https://habr.com/ru/post/468769/


All Articles