Smashing Podcast Episodio 18 con Mina Markham: ¿Cómo puedo aprender a reaccionar?
Publicado: 2022-03-10En este episodio de Smashing Podcast, estamos hablando de aprender React. ¿Cómo es trabajar con React y cómo pueden comenzar los desarrolladores experimentados? Hablé con Mina Markham para averiguarlo.
Mostrar notas
- Mina Markham en Twitter
- Sitio web personal de Mina
Actualización semanal
- De sitios estáticos a aplicaciones JAMstack de usuario final con FaunaDB por Bryan Robinson
- ¿Su sitio web estresa a los visitantes? por Suzanna Scacca
- Análisis profundo de Mirage JS: comprensión del tiempo, la respuesta y la transmisión (parte 3) por Kelvin Omereshone
- Creación de una aplicación web de reconocimiento facial con React por Adeneye David Abiodun
- Internacionalización en Vue con el complemento Vue I18n de Timi Omoyeni
Transcripción
Drew McLellan: Es arquitecta front-end, conferencista y organizadora, y amante de los sistemas de diseño. Su trabajo en la biblioteca de patentes Pantsuit para la campaña presidencial Hillary for America de Hillary Clinton marcó un hito para los sistemas de diseño dentro de la industria y apareció en publicaciones como Wired, Fast Company y Communication Arts. Como muchos de nosotros, escribe código para ganarse la vida, actualmente como ingeniera sénior en Slack. Sabemos que es una desarrolladora talentosa y con visión de futuro, pero ¿sabías que una vez la confundieron con Patrick Swayze? Mis grandes amigos, denle la bienvenida a Mina Markham. Hola mina. ¿Cómo estás?
Mina Markham: Estoy genial.
Drew: Es bueno escucharlo. Ahora, a veces en Smashing Podcast, hablamos con la gente sobre el tema por el que son más conocidos. Y a veces es divertido hablar de algo un poco tangencial. Ahora, podría conversar contigo todo el día sobre bibliotecas de patrones, sistemas de diseño, el increíble trabajo que has realizado en esa área en particular, y podría hablarte sobre temas de los que tal vez hayas hablado, eventos, como el Evento. Aparte, cosas como la dirección de arte. Y obviamente podríamos hablar de CSS hasta que las vacas vuelvan a casa. Pero tuiteaste hace unos días, y me di cuenta de que en realidad ambos estamos en el mismo barco en el sentido de que ambos somos ingenieros front-end experimentados y ambos comenzamos a trabajar recientemente con React. Entonces, antes de entrar en React, ¿adónde llegaste hasta este punto? ¿Ha estado trabajando con otras bibliotecas y marcos para el desarrollo de JavaScript?
Mina: No, en realidad he estado haciendo principalmente JavaScript básico durante un tiempo. Y antes de eso, por supuesto, me metí en JavaScript. Déjame reformular eso. Empecé a trabajar con Java script usando jQuery porque tenía más sentido para mí. Era algo que me resultaba muy fácil analizar para averiguar qué estaba pasando. Y luego, a partir de ahí, retrocedí para hacer solo vainilla, JavaScript simple, ESX, y realmente no me había metido demasiado en las guerras de marcos. No tenía, como si no tuviera ningún favorito. No tenía perro en la pelea. Yo estaba como, “Para ti, React, lo que sea. Realmente no me importa. Pero los tiempos cambian.
Drew: Y en este tipo de forma de trabajar con JavaScript estándar, porque yo también he hecho mucho de eso. He trabajado con varios marcos. He hecho mucho con jQuery en el pasado. Trabajé con YUI, biblioteca de interfaz de usuario de Yahoo. ¿Había sentido muchos de los puntos débiles que algo como la arquitectura de React intenta abordar?
Mina: No creo que lo haya hecho nunca. Pasé la mayor parte de mi carrera creando sitios web versus aplicaciones web y cosas así. Así que todo lo que hice fue bastante estático hasta cierto punto. Así que en realidad nunca tuve que lidiar con la gestión estatal, cosas así. Entonces, los puntos débiles que React intenta resolver nunca los había aplicado realmente al tipo de trabajo que hacía.
Drew: En términos generales, ¿cuál es el tipo de naturaleza de los proyectos que tienes con React hasta ahora?
Mina: En realidad, solo fue un proyecto, en el que estoy trabajando actualmente y no puedo revelar demasiados detalles porque la empresa pública y todas esas cosas buenas.
Drew: Por supuesto.
Mina: Pero esencialmente, lo que estoy tratando de hacer es usar React, es un tipo de producto muy interactivo en el que necesito que las personas puedan ingresar y guardar datos en un estado determinado y luego manipularlos y generar algo más con dichos datos. Y eso es algo que no es una simple manipulación DOM en ese punto. Realmente es mucho más complejo, la gestión de datos de front-end y la gestión del estado de dichos datos. Así que realmente no había otra alternativa que usar algún tipo de biblioteca que intentara resolver ese problema. Sabía que no podría pasar solo con JavaScript. Contemplé tal vez manejar algunas cosas en el lado del servidor, pero nuevamente, debido a la naturaleza muy interactiva de lo que estoy trabajando, debe estar en el cliente. Y por eso ya usamos React at Slack para varias otras cosas. Entonces dije: "Está bien, bueno, deberíamos seguir adelante y adoptar lo mismo que el resto de las empresas matrices están usando y seguir adelante".
Drew: Una de las cosas que siempre parece ser un punto doloroso para las personas que eligen React es familiarizarse con la cadena de herramientas que se necesita para que las cosas funcionen, Webpack es un elefante obvio en la habitación. ¿Ha tenido que hacer mucha configuración de la cadena de herramientas o como yo si tuviera el lujo de que sus compañeros de equipo lo hicieran por usted?
Mina: Ah, me encanta el equipo de infraestructura de Slack the data. El equipo de infraestructura front-end de Slack se encargó de todo eso. No tuve que pensar en eso. Fue grandioso. Porque traté de aprender React antes en el pasado. Por lo general, la forma en que aprendo mejor es trabajando e implementando cosas. Y usamos React para construir una gran cantidad de hillaryclinton.com en 2016. Así que no es como si nunca hubiera trabajado con personas que lo usan. Es solo que mi trabajo nunca necesitó que me involucrara directamente. Pero esa base de código era muy compleja y muy sofisticada, y estaban sucediendo tantas cosas que hay una barrera de entrada para tratar de aprender algo allí si aún no sabía cómo funcionan React y Redux y todo eso, lo cual yo no lo hizo Así que no era realmente eficaz en el aprendizaje en ese entorno.
Mina: Afortunadamente, aquí tengo gente a la que le gusta llevarse un poco más de las partes complejas. No tengo que preocuparme por la configuración de Webpack en absoluto. Eso ha sido configurado. Eso ha sido probado y probado y está listo para funcionar. Estoy en un barco similar donde también usamos Redux además de React, que no me di cuenta de que eran dos cosas diferentes. No sabía qué parte manejaba cuál. Caer en una base de código como esa, fue un poco desorientador porque no me di cuenta de que todos eran lo mismo. Había personas que eran desarrolladores experimentados de React que me decían: "Oh, también estamos usando Redux, lo que hace que sea un poco más difícil para ti aprender realmente lo que React puede hacer si empiezas desde cero". Y nunca supe muy bien qué querían decir con eso porque no sabía de qué estaban hablando.
Mina: Para responder a su pregunta original, todavía tengo un poco más de una pequeña barrera de entrada, porque no se trata solo de aprender React. Tengo que aprender React y también cómo usar la tienda Redux. Así que esas dos cosas al mismo tiempo pueden ser un poco demasiado.
Drew: Sí, encontré exactamente lo mismo en una base de código existente que mi primer proyecto React que usa Redux. Y creo que, como es la naturaleza de cualquiera de estos tipos de tecnologías cuando son jóvenes, iteran muy rápido, y lo que es la mejor práctica en un momento, 6 meses después ha avanzado y hay una forma diferente de hacer las cosas. Y cuando tiene una base de código que abarca muchos años, a veces puede tener diferentes estilos de implementación de cosas allí. No siempre mantiene la sincronización. Y por supuesto, si estás siguiendo un tutorial o lo que sea para aprender, estás leyendo libros, estás usando recursos, estarán en la versión más moderna de cómo hacer las cosas. Y eso no necesariamente se relaciona con lo que ves cuando miras un producto maduro existente. ¿Es algo que haya experimentado en absoluto, o ha logrado mantener su base de código realmente actualizada?
Mina: Creo que eso es algo que definitivamente he estado experimentando. Cuando traté de aprender a hacer React por mi cuenta, miré varios tutoriales y cosas así. Y me di cuenta, o al menos la gente me ha dicho que ha trabajado conmigo, que algunas de las cosas que hacemos son anti-patrones o no exactamente cómo funcionan las cosas ahora, porque este código base es un poco, bueno madurarnos pariente, pero tiene unos cuantos años. Y entonces, hay algunas formas en las que creo que son más fáciles de hacer las cosas que la forma en que las estamos haciendo actualmente porque esto fue escrito hace años. Así que es un poco como una cinta de correr tratando de mantenerse al día con los tiempos actuales y asegurarme de que quiero hacer las cosas de la mejor manera, pero tampoco quiero romper una base de código establecida porque quiero jugar con cosas.
Drew: Obviamente, una de las cosas con React que la gente como tú y yo estamos viniendo, puede ser un poco discordante con todo este asunto con JSX. ¿Está utilizando JSX en su proyecto?
mina: lo somos. Estoy usando JSX.
Drew: ¿Has hecho las paces con eso?
Mina: Sentí como si una pequeña parte de mí muriera cada vez que abro uno de esos archivos. Todavía se siente un sacrilegio poner mi HTML en el archivo JavaScript. Sé que es un poco revolucionario y el punto central, pero me parece mal que estoy escribiendo mi marcado en un archivo JavaScript. He hecho las paces con eso, pero cada vez que lo hago, estoy como, "..." Preocupaciones de separación, es una cosa. Me gustaría que me lo devolvieras, por favor.
Drew: Es un punto válido, ¿no? Mi experiencia cuando comencé a trabajar más seriamente con JavaScript, y esto fue probablemente cuando estaba de regreso en Yahoo, las cosas estaban muy en el modelo de páginas HTML procesadas por el servidor y luego adoptando un enfoque de mejora progresiva, superponiendo JavaScript en capas para mejorar La interfaz. Y si el estado de algo en la interfaz necesitaba cambiar, su código tenía que conocer todas las partes de la interfaz que necesitaba actualizar, lo que obviamente lo lleva a un enfoque estrechamente acoplado con estas grandes vistas monolíticas donde el código que escribe necesita saber acerca de todo el otro código a su alrededor. Y supongo que eso realmente no se presta a un enfoque por componentes que tomaría al trabajar con una biblioteca de patrones o un sistema de diseño, que es más de su área de especialización particular. Supongo que React se presta más a ese enfoque, ¿verdad?
Mina: Creo que sí, especialmente con la posibilidad de acoplar el CSS muy específico a un componente JSX o React. Y de esa manera hace que sea mucho más fácil separar o solo tomar lo que necesita para la biblioteca y dejar el resto, mientras que una biblioteca de patrones o un sistema de diseño que intenta hacer algo más monolítico con solo un gran archivo CSS de estilo o algo así. , lo hace muy difícil. Tienes que aceptarlo todo o nada. Así que aprecio que React nos permita hacer una forma de desarrollo más individualizada y más dividida en componentes, incluso si todavía desearía que hubiera una manera de separar realmente mi capa de presentación y mi capa de contenido de mi capa de interactividad. Pero tal vez solo soy yo siendo un poco de la vieja escuela en ese sentido.
Drew: Definitivamente siento el dolor allí. La idea es que, vengan y corríjanme si me equivoco, entiendo que en lugar de separar las tecnologías, el CSS, el JavaScript y el HTML, se está separando la funcionalidad. Entonces, todo lo que es un componente, todos existen juntos.
Mina: si.
Drew: … lo cual supongo que es útil si ese componente ya no es necesario. Simplemente puede eliminarlo y desaparece, y no deja huella alrededor de su aplicación. Sin embargo, ese no es siempre el caso con CSS. ¿Cómo estás trabajando con CSS con React? ¿Has mirado cosas como componentes con estilo o algo así?
Mina: No, no lo hemos hecho. He oído hablar de los componentes con estilo, pero nunca los he investigado a fondo para ser perfectamente honesto. Entonces, la forma en que estamos trabajando con CSS con React es que escribimos Less, y solo tenemos un archivo Less adjunto a cada componente individual que se importa a ese componente. Y luego se une a través de Webpack y se entrega al cliente.
Drew: ¿Está utilizando un sistema como BEM o algo así para convertir el espacio de nombres?
Mina: si. Usamos BEM para el espacio de nombres, aunque la adherencia a él varía según quién escriba qué. Pero tratamos de usar un patrón de espacio de nombres BEM para que quede un poco más claro cuál es el propósito de cada clase y componente individual.
Drew: ¿Y eso parece estar funcionando correctamente para ti?
mina: eso creo De vez en cuando tiene el mismo viejo problema de que a veces no sé cómo nombrar algo. Después de un tiempo, las cosas diarias siempre han sido y siempre serán difíciles para el maestro. Así que ese es el único problema que tengo es que ocasionalmente no tengo idea de cómo debería llamar a un componente en particular.
Drew: Definitivamente. Esa es una batalla constante, ¿no es así? ¿Cómo sacar el nombre de las cosas?
Mina: si.
Drew: Siempre termino cuando trabajo en una nueva función o algo así, le das un componente y todas las clases y todo el nombre que tiene la función en este momento. Y luego, cuando llega el momento del lanzamiento, se le ha cambiado el nombre. Entonces tiene referencias al nombre anterior en el código y la interfaz tiene el nuevo nombre. Y …
Mina: Trato de nombrar siempre las cosas en función de la función o el propósito de la misma frente a las cosas que son un poco más efímeras, porque es menos probable que cambie el propósito real de este componente. Olvidé mencionarlo, pero además de usar BEM, supongo que usamos BEMIT si está familiarizado con eso. Es básicamente ITCSS más BEM, ambos creados por Harry Roberts. Así que utilizo la notación húngara para indicar si algo es o no un componente, en comparación con un objeto de diseño, en comparación con un patrón más grande compuesto por múltiples componentes. Y luego, a partir de ahí, usamos la convención BEM para indicar como el elemento de bloque y todo eso.
Drew: ¿Y tuviste que refactorizar y eliminar muchos componentes y cosas en tu base de código y tuviste que lidiar con el problema de que CSS se quedó atrás?
Mina: si. Entonces, la parte de mi trabajo que no es React, de mantener slack.com, es solo un montón de archivos Less que se están compilando para CSS. Y les garantizo que hay mucho código zombi allí, porque definitivamente iteramos mucho sobre las cosas en el tiempo que he estado allí. Y no siempre tenemos tiempo para regresar y hacer la limpieza en comparación con cuando rediseñamos una página o algo así. Así que está atrasado para una auditoría, lo diré.
Drew: Esto es algo que acabamos de ver en nuestro proyecto React, viendo cómo abordamos CSS. En este momento, tenemos algunos archivos CSS globales grandes para toda la aplicación, y tenemos esta situación en la que el tamaño de nuestro paquete crece, crece y crece y nunca se vuelve más pequeño, aunque las cosas se vuelven más pequeñas. remoto. Así que hemos estado analizando cosas como componentes con estilo, Tailwind también es otra opción que estamos considerando seriamente. ¿Has mirado mucho el viento de cola?
Mina: No lo he mirado mucho. He tenido curiosidad al respecto, pero de nuevo, nunca he tenido tiempo de profundizar para ver si es algo que quiero tratar de incorporar a nuestra base de código.
Drew: De hecho, me sorprendió bastante, porque al igual que tú, soy un poco anticuado en cómo hacer estas cosas. Me gusta la buena separación de preocupaciones. Y me gusta escribir mi CSS en CSS y, por supuesto, el enfoque con Tailwind es que tienes todos estos nombres de clase, que se parecen un poco a los estilos en línea que estás aplicando. Y si se siente sucio.
Mina: si.
Drew: Y me ofrecí como voluntario dentro del equipo, cada uno de nosotros tomó una tecnología para investigar si sería una buena opción para nuestros problemas, y me ofrecí para mirar Tailwind porque estaba absolutamente seguro de que lo odiaría.
mina: no, no.
Drew: Pero resulta que en realidad creo que resuelve muchos problemas. Estaba bastante impresionado.
Mina: si. He llegado a una forma de pensar similar, porque en el pasado prefería tener una clase que comprendiera todos los estilos que necesitaba para un componente en particular y no hacer una clase por propiedad, como creo que lo hace Tailwind. o idiomas como este. Por razones similares, se sentía como, “Bueno, en este momento solo estoy ejecutando CSS en línea. ¿Por qué haría esto?” Pero a medida que desarrollaba más y más, dentro de nuestro sistema de diseño de Slack, creé un montón de lo que llamo clases de utilidad que hacen cosas como agregar un poco de margen con un patrón. He notado que cada vez más, estoy usando esas clases además de las clases de componentes. Entonces dije: "Está bien, bueno, tal vez debería revisar todo esto para hacer un CSS como una declaración a la vez". No sé si iría tan lejos, pero definitivamente vale la pena considerarlo.
Drew: La informática parece dar un vuelco en términos de tendencias entre soluciones de clientes ligeros y clientes pesados. Comenzamos con mainframes con terminales, y luego la era de las PC con Windows y Office y todo este tipo de grandes aplicaciones. Y todos se estaban volviendo muy lentos, y luego apareció la web, y eso era solo un navegador, y todo el trabajo se estaba haciendo en el servidor. Y todo fue rápido y rápido de nuevo. Y ahora hemos vuelto a poner todo ese trabajo en el navegador y todo se hace con JavaScript, cosas como React y el enfoque JAMstack donde volvemos a ser una especie de cliente pesado. A veces me preocupa que le estemos pidiendo demasiado al navegador. ¿Es esto un error? ¿Le estamos pidiendo demasiado al navegador que intenta hacer todo esto en React?
Mina: Quiero decir que sí con la advertencia de que, una vez más, mi experiencia se limita en gran medida a sitios web en su mayoría estáticos. No hago mucho desarrollo de productos. Así que tal vez en ese ámbito, esto tiene más sentido. Pero desde mi perspectiva, siento que muchas veces estamos usando un hacha cuando solo necesitamos un cuchillo de mantequilla. No sé por qué necesitamos poner todo esto en el navegador, poner tanto trabajo y tanta presión sobre el cliente. Siento que podríamos hacer esto mucho más simple. Una de las cosas que siempre me hizo dudar un poco de usar React, o digo vacilante, pero a lo que me refiero cuando me hizo enojar visceralmente y me opuse activamente, fue cuando iba a un sitio web y literalmente nada se procesaba porque había fue un error o algo así, como, "¿En serio? ¿Toda la página está rota porque una función se rompió?
Mina: Simplemente me molestó que muchas veces fuera un enfoque de todo o nada. Una de las charlas que di en AEA en el pasado y en otros lugares en el pasado fue sobre cómo incluir la mejora progresiva y no solo tu desarrollo, sino también la dirección de arte y el diseño de sitios. Y señalaría específicamente ejemplos de sitios web que no realizaron mejoras progresivas ni ningún tipo de degradación elegante. Era como si tuvieras JavaScript ejecutándose en el navegador o no obtuvieras absolutamente nada. Y sería como un sitio simple que representa información sobre la historia del diseño web, que fue uno de los sitios de los que realmente se habló, la historia del diseño web desde 1990 hasta ahora. Era un sitio web hermoso con muchas líneas de tiempo, animación de cosas. Pero también podría haberse renderizado estáticamente con solo una lista. Hubo pasos intermedios entre no mostrar nada y mostrar esa experiencia bellamente mejorada que creo que se perdió debido a la forma en que nos hemos acercado al desarrollo web moderno ahora.
Drew: Entonces, ¿diría que hay absolutamente algunas categorías de proyectos que se adaptan a una solución como React y algunos en los que realmente no debería usarse y debería usar métodos más tradicionales?
Mina: Creo que si tu sitio en particular es en su mayoría estático, solo estaba brindando información, supongo que no entiendo por qué necesitas un proyecto como React para representar algo que no tiene mucha interacción más allá de la manipulación DOM. . Supongo que no veo qué beneficio obtienes de eso. Nuevamente, es posible que no esté trabajando en los proyectos apropiados. Es posible que no solo haya visto o encontrado ese caso de uso, pero me está costando ver si es un sitio mayormente estático, que presenta contenido, no mucha interacción, no mucha interacción más allá del DOM manipulado y hacer animaciones. No veo cómo tener una biblioteca React te ayuda a lograr ese objetivo.
Drew: Es interesante porque no estoy mal hablando de eso porque en realidad no lo he usado, pero veo muchos proyectos de Gatsby y Gatsby es un generador de sitios estáticos que usa un front-end de React. Y veo que todos los ejemplos de los temas y las cosas que tienen disponibles son sitios basados en contenido, o blogs, y un sitio de recetas, y un portafolio, y este tipo de cosas. Y hay algo que, en realidad, creo que no es necesariamente la opción adecuada para algo como React. ¿Por qué no se renderiza estáticamente y luego se mejora progresivamente?
Mina: si.
Drew: No es software.
Mina: si. En realidad, tampoco he usado Gatsby. Escuché muchas cosas buenas al respecto, pero ese es probablemente uno de los ejemplos en los que pensaría en los que pienso: "Está bien, supongo que simplemente no veo por qué esa herramienta es necesaria para hacer ese trabajo en particular". ” De nuevo, no lo sé. Tal vez sea solo porque más personas se sienten cómodas escribiendo en React cuando están escribiendo algo nuevo, y solo proporciona una herramienta que se encuentra con las personas donde están. Escuché grandes cosas sobre los generadores de sitios estáticos que usan React para las personas que los han usado y los aman, pero no es un caso de uso en el que hubiera dicho de inmediato: "Oh, eso tiene sentido".
Drew: Parece que siempre ha habido esta batalla entre lo que llamaríamos un sitio web y lo que podríamos llamar una aplicación web. Y el abismo entre los dos parece hacerse cada vez más y más amplio, mientras que un enfoque de mejora progresiva intenta cerrar la brecha tomando algo estático y agregando JavaScript y agregando interactividad. Parece que cosas como React son ideales para el software que está ejecutando en el navegador. ¿Estarías de acuerdo con eso?
Mina: Definitivamente estaría de acuerdo con eso porque parece que fue construido para ese tipo de entorno; fue construido para ejecutar software. Fue construido por Facebook para Facebook. Así que fue construido para un producto. Fue creado para ejecutar lo que sea que llames una aplicación web en el navegador y no necesariamente para el tipo de trabajo que, como mencioné, estoy acostumbrado a hacer. Entonces, creo que en esos escenarios, definitivamente tiene mucho sentido usarlo si está creando una pieza de software más compleja y sofisticada que debe ejecutarse dentro de un navegador. Pero si está creando un sitio de marketing o lo que sea, supongo que aún me costaría ver por qué será necesario allí.
Drew: Entonces, ¿estamos dando permiso a las personas para seguir creando sitios web decentes y representados estáticamente?
Mina: Me encantaría ver que suceda más de eso. Siento que eso se ha perdido y se ha perdido, si alguna vez fue genial o lo que sea. Siento que hemos perdido esa parte del desarrollo web. Es muy divertido: tú y yo dijimos que somos un poco de la vieja escuela, y me río de eso porque en realidad he estado haciendo desarrollo web durante, ¿cuánto, seis años? ¿Cómo soy de la vieja escuela? No ha pasado tanto tiempo para mí. Y, sin embargo, de alguna manera soy parte de la vieja guardia a la que no le gustan las cosas nuevas y brillantes. no lo entiendo
Drew: Entonces, de hecho, React ha existido durante todo el tiempo que has sido desarrollador web.
Mina: Tal vez solo tengo un alma vieja. No sé.
Drew: Creo que ese es probablemente el caso. No he mirado personalmente, hay enfoques prestados del lado del servicio que puede tomar con las aplicaciones React. ¿Has experimentado alguno de esos?
Mina: No he experimentado ninguno de ellos. Los investigué brevemente para el proyecto en el que estoy trabajando actualmente, porque siento que hay partes de la operación que funcionarían mejor en un servidor que en los clientes. Pero creo que debido a mi conocimiento limitado y al hecho de que el código base es un poco más complicado de lo que puedo entender, no pude descifrar cómo hacer que esa parte funcionara. Me encantaría descubrirlo eventualmente, pero pasé un día investigando. Yo estaba como, “¿Sabes qué? No estoy asimilando esto, necesito estarlo. Así que voy a retroceder y tomar una ruta diferente”.
Drew: Sí. Creo que todos hemos estado allí.
Mina: si. Bajé por un camino. Yo estaba como, “Oh, esto es oscuro y aterrador. Vamos a invertir. Vamos a invertir.
Drew: Aléjate del código.
mina: si
Drew: Así que has sido muy diplomático y cortés con React hasta ahora. Siento que hay algo de tensión burbujeando bajo la superficie un poco. Vamos. Cuéntanos lo que realmente sientes.
Mina: He sido cortés y diplomática, principalmente porque la base de fans de Reacts puede ser un poco mala a veces, y preferiría que no vinieran por mí. Entonces, por favor, React es genial. Es maravilloso. Úsalo para lo que quieras usarlo. Bromeo, pero incluso ese tweet que mencionaste al comienzo de este podcast donde creo que lo que dijiste es que no lo odio. No lo amo, pero tampoco lo odio. Incluso esa declaración, llegué a la gente, no hubo virulencia, pero más bien estaban listos para saltar a la defensa y decir: "Bueno, me encanta porque X, Y, Z". Estoy como, “No dije que fuera malo. Acabo de decir que soy meh sobre todo el asunto ". Pero aparentemente ser yo no está bien. tengo que amarlo
Mina: Es por eso que probablemente he sido un poco más diplomática de lo que normalmente sería, solo porque no quiero que la gente piense que estoy hablando mal, porque no es así. Tiene un lugar en más desarrollo web. Cumple una función. Hace bien su trabajo. A la gente le encanta. Simplemente no es una herramienta que haya tenido o que haya querido usar hasta ahora.
Drew: Sí. Las cosas pueden volverse muy tribales, ¿no es así? La gente siente que tiene que tomar un lado o el otro, y ¿estás absolutamente a favor de algo o absolutamente en contra de algo? Y no estoy seguro de que tenga un buen propósito, y no creo que realmente nos haga avanzar como industria y como comunidad para hacer eso.
Mina: si. Es realmente extraño. Es fascinante verlo solo desde un punto de vista sociológico, pero a menudo es realmente extraño de observar. Es como si no se me permitiera ser, como dije, neutral sobre ciertas cosas. Tengo que tener una opinión fuerte, que no creo que sea saludable. ¿Cuál es el término, "Opiniones fuertes, poco sostenidas"? Así es como hago las cosas. Tengo fuertes sentimientos sobre ciertas cosas, pero no es como si no pudieras hacerme cambiar de opinión. Cuando siento que algunas personas, su identidad se ve envuelta en ciertos aspectos de ella, que si no estás con lo que sea que hayan elegido para identificarse, es un desaire personal versus simplemente, no me importa este tema en particular, o herramienta, o lo que sea.
Drew: Sí. No sé si empeora por el hecho de que todos tendemos a especializarnos mucho más en partes particulares de la pila. Y sé que hay personas que son desarrolladores de React. Se llamarían a sí mismos desarrolladores de React porque eso es en lo que trabajan. Y no necesariamente escribirían ningún script de Java estándar o no usarían Vue o lo que sea. React es su mundo. Así que supongo que casi se siente como un ataque a toda su carrera decir: "No me gusta React". Bueno, realmente están interesados en hacer que te guste React o cualquiera que sea la tecnología.
Mina: Admito que fui una de esas personas en el pasado. En realidad, probablemente se trataba principalmente de SASS, creo. Estuve mucho en el equipo de hacer SASS como preprocesador y todos los demás preprocesadores son basura. No quiero hablar de ellos. No quiero tratar con ellos. Y me di cuenta de que era una forma muy estrecha de ver las cosas. Utilice la herramienta apropiada para el trabajo. Lo que sea que lo haga más productivo, esa es la herramienta adecuada. Realmente no importa lo que sea.
Drew: ¿Hay alguna tecnología con la que trabajamos que no tenga ese tipo de sentimiento tribal? ¿Hay algo que la gente esté feliz de usar o no usar? No puedo pensar en nada.
Mina: Vaya. Nadie tiene opiniones sobre el marcado, en realidad.
dibujó: no
Mina: Siento que nadie tiene opiniones sobre HTML real y solo marcado, como, "Está ahí". ellos lo usan Pero la gente tiene opiniones firmes sobre CSS y cómo es terrible o maravilloso, y las guerras de preprocesadores que en realidad ya no ocurren tanto, y luego, por supuesto, todo el tribalismo dentro de las diversas bibliotecas de JavaScript.
Drew: Entonces dirías que tu viaje hasta ahora con React sigue siendo solo, “Es una herramienta. ¿Hace su trabajo?
Mina: Pasó de una curiosidad a una aversión activa y visceral debido a lo frecuente que era y lo innecesario que pensé que esa prevalencia era para mí. Ahora estoy conmigo, lo que de nuevo no significa que lo odie. Simplemente significa…
Drew: Creo que es un buen lugar para estar. Creo que probablemente todos seamos más fuertes como tecnólogos si entendemos el valor de una tecnología en particular para su propósito. Podemos evaluar qué es bueno para cada circunstancia y elegir la herramienta adecuada para el trabajo.
Mina: si. Y ahí es donde llegué a este punto de mi carrera en el que no me involucro realmente en ningún idioma en particular, tecnología o lo que sea, porque es como, "Cualquier herramienta que sea más apropiada para lo que estás tratando de hacer, entonces usa eso.” He aprendido que hay un lugar para cada cosa; hay un tiempo y un lugar para hacer todo. Y hasta hace poco, no había un momento o lugar real para usar este bibliotecario de React, y ahora lo hay.
Drew: Creo que es un buen lugar para estar. Así que he estado aprendiendo todo sobre React últimamente como tú lo has hecho en el trabajo diario. ¿Hay algo más que hayas estado aprendiendo últimamente?
Mina: De hecho, irónicamente, aprendí que es otro idioma que se originó en Facebook. He estado desarrollando mucho Hack, principalmente porque eso es lo que uso en Slack, en mi trabajo diario. Learning Hack me allanó el camino para sentirme más cómodo usando React porque siguen patrones muy similares, excepto que uno es del lado del servidor y el otro no. De modo que, junto con solo en general, he estado aprendiendo más sobre el back-end y cómo funciona por varias razones diferentes. Y me he estado esforzando durante los últimos dos años y saliendo más y más de mi zona cómoda. Sistemas de diseño, bibliotecas, ese es mi mundo, y me siento muy bien y cómodo en ese mundo. Pero estoy saliendo de eso y haciendo mucha más lógica del lado del servidor, desarrollo de API, modelado de datos y todo eso. He estado haciendo mucho en eso durante el último año también.
Drew: Encuentro que cuanto más entiendo sobre todo el conjunto de cosas de back-end en las cosas de front-end, cada uno ayuda a mi conocimiento del otro. Encuentro que escribo mejor código front-end al haber escrito código back-end y entender-
Mina: si. Creo que me siento de la misma manera. Ahora que tengo una mejor idea de, como dijimos, toda la pila de cómo pasamos de los datos al cliente final. Me doy cuenta de que estoy pensando en toda la canalización sin importar en qué parte estoy trabajando realmente. Estoy pensando en cuál es la mejor manera de estructurar esta API para que cuando llegue a la plantilla, no tenga que manipular mucho los datos que recibo en ese extremo. Definitivamente me ha hecho en general un mejor ingeniero, tengo ganas
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she's @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.