Smashing Podcast Episódio 18 Com Mina Markham: Como posso aprender a reagir?

Publicados: 2022-03-10
Resumo rápido ↬ Neste episódio do Smashing Podcast, estamos falando sobre aprender React. Como é trabalhar com o React e como desenvolvedores experientes podem começar? Drew McLellan conversa com Mina Markham para descobrir.

Neste episódio do Smashing Podcast, estamos falando sobre aprender React. Como é trabalhar com o React e como desenvolvedores experientes podem começar? Falei com Mina Markham para descobrir.

Mostrar notas

  • Mina Markham no Twitter
  • Site pessoal de Mina

Atualização semanal

  • De sites estáticos para aplicativos JAMstack de usuário final com FaunaDB por Bryan Robinson
  • Seu site está estressando os visitantes? por Suzanna Scacca
  • Mergulho Profundo do Mirage JS: Entendendo o Tempo, Resposta e Passagem (Parte 3) por Kelvin Omereshone
  • Construindo um aplicativo Web de reconhecimento facial com React por Adeneye David Abiodun
  • Internacionalização no Vue com o plugin Vue I18n por Timi Omoyeni

Transcrição

Foto de Mina Markham Drew McLellan: Ela é arquiteta de front-end, palestrante e organizadora de conferências e amante de sistemas de design. Seu trabalho na biblioteca de patentes Pantsuit para a campanha presidencial de Hillary Clinton para a América marcou um divisor de águas para sistemas de design dentro da indústria e foi destaque em publicações, como Wired, Fast Company e Communication Arts. Como muitos de nós, ela ganha a vida escrevendo código, atualmente como engenheira sênior no Slack. Então, sabemos que ela é uma desenvolvedora talentosa e com visão de futuro, mas você sabia que ela já foi confundida com Patrick Swayze? Meus amigos, por favor, dêem as boas-vindas a Mina Markham. Olá Mina. Como você está?

Mina Markham: Estou arrasando.

Drew: Bom ouvir. Agora, às vezes no Smashing Podcast, falamos com as pessoas sobre o assunto pelo qual elas são mais conhecidas. E às vezes é divertido apenas falar sobre algo um pouco tangencial. Agora, eu poderia conversar com você o dia todo sobre bibliotecas de padrões, sistemas de design, o trabalho incrível que você fez nessa área específica, e eu poderia falar com você sobre assuntos sobre os quais você talvez tenha falado, eventos, como o Evento Além de coisas como direção de arte. E obviamente poderíamos falar sobre CSS até as vacas voltarem para casa. Mas você twittou alguns dias atrás, e percebi que na verdade estamos ambos no mesmo barco, pois somos engenheiros de front-end experientes e começamos a trabalhar recentemente com o React. Então, antes de entrarmos no React em si, onde você estava chegando até este ponto? Você estava trabalhando com outras bibliotecas e frameworks para desenvolvimento JavaScript?

Mina: Não, na verdade eu tenho feito principalmente JavaScript de baunilha por um tempo. E antes disso, claro que entrei em JavaScript. Deixe-me reformular isso. Comecei a trabalhar com Java script usando jQuery porque fazia mais sentido para mim. Era algo que era muito fácil para mim analisar para descobrir o que estava acontecendo. E a partir daí eu voltei a fazer apenas vanilla, JavaScript simples, ESX, e eu realmente não tinha entrado muito nas guerras de framework. Eu não tinha, como se não tivesse favorito. Eu não tinha cachorro na luta. Eu fiquei tipo, “Para você, React, tanto faz. Eu realmente não me importo.” Mas os tempos mudam.

Drew: E nesse tipo de trabalho com JavaScript vanilla, porque eu mesmo já fiz muito disso. Já trabalhei com vários frameworks. Eu fiz muito com jQuery no passado. Trabalhei com YUI, Biblioteca de Interface do Usuário do Yahoo. Você sentiu muitos dos pontos problemáticos que algo como a arquitetura do React tenta resolver?

Mina: Eu não acho que eu já tive. Passei a maior parte da minha carreira fazendo sites versus aplicativos da web e coisas assim. Então, tudo o que eu fazia era bastante estático até certo ponto. Então eu nunca tive que lidar com a gestão do estado, coisas assim. Então, os pontos problemáticos que o React tenta resolver eu nunca tinha realmente aplicado ao tipo de trabalho que eu fazia.

Drew: De um modo geral, qual é o tipo de natureza dos projetos que você tem com o React até agora?

Mina: Na verdade, foi apenas um projeto, no qual estou trabalhando atualmente e não posso dar muitos detalhes porque é uma empresa pública e todas essas coisas boas.

Draw: Claro.

Mina: Mas essencialmente o que estou tentando fazer é usar o React to, é um tipo de produto muito interativo onde eu preciso que as pessoas possam entrar e salvar dados em um determinado estado e então manipulá-los e gerar outra coisa com esses dados. E isso é apenas algo que não é simples manipulação DOM nesse ponto. É realmente muito mais complexo, gerenciamento de dados de front-end e gerenciamento do estado desses dados. Então realmente não havia outra alternativa a não ser usar algum tipo de biblioteca que tentasse resolver esse problema. Eu sabia que não seria capaz de passar apenas com JavaScript simples. Eu considerei talvez lidar com algumas coisas no lado do servidor, mas novamente, devido à natureza muito interativa do que estou trabalhando, precisa estar no cliente. E por isso já usamos o React no Slack para várias outras coisas. E então eu fiquei tipo, “Ok, bem, devemos seguir em frente e adotar a mesma coisa que o resto da matriz que as empresas estão usando e partir daí.”

Drew: Uma das coisas que eu sempre acho que é um ponto problemático com as pessoas pegando React é entender a cadeia de ferramentas que é necessária para fazer as coisas funcionarem, Webpack sendo um elefante óbvio na sala. Você teve que fazer muita configuração da cadeia de ferramentas ou como eu se você tivesse o luxo de colegas de equipe fazendo isso por você?

Mina: Ah, eu adoro a equipe de infraestrutura do Slack os dados. A equipe de infraestrutura de front-end do Slack tratou de tudo isso. Eu não tive que pensar sobre isso. Foi ótimo. Porque eu tentei aprender React antes no passado. Normalmente, a maneira como eu aprendo melhor é realmente trabalhando e implementando as coisas. E nós usamos o React para construir um monte de hillaryclinton.com em 2016. Então não é como se eu nunca tivesse trabalhado com pessoas que o usam. É só que meu trabalho nunca precisou que eu me envolvesse diretamente. Mas essa base de código era muito complexa e muito sofisticada, e havia tanta coisa acontecendo que há uma barreira de entrada para tentar aprender qualquer coisa lá se você ainda não soubesse como React e Redux e tudo isso funciona, o que eu não. Então eu não era realmente eficaz em aprender naquele ambiente.

Mina: Felizmente, aqui eu tenho pessoas que gostam de tirar um pouco mais das partes complexas disso. Eu não preciso me preocupar com a configuração do Webpack. Isso foi configurado. Isso foi experimentado e testado e pronto para ir. Estou em um barco semelhante onde também usamos Redux além do React, que eu não sabia que eram duas coisas diferentes. Eu não sabia qual parte lidava com qual. Cair em uma base de código como essa, foi um pouco desorientador porque eu não percebi que eles eram todos a mesma coisa. Eu tinha pessoas que eram desenvolvedores experientes do React me dizendo: “Oh, nós também estamos usando o Redux, o que torna um pouco mais difícil para você realmente aprender o que o React pode fazer se você estiver começando do zero”. E eu nunca soube o que eles queriam dizer com isso porque eu não sabia do que eles estavam falando.

Mina: Para responder à sua pergunta original, ainda estou tendo um pouco mais de barreira para entrar, porque não é apenas aprender React. Estou tendo que aprender React e também como usar a loja Redux. Então essas duas coisas ao mesmo tempo podem ser um pouco demais.

Drew: Sim, eu encontrei exatamente a mesma coisa entrando em uma base de código existente do meu primeiro projeto React que usa Redux. E acho que, como é a natureza de qualquer um desses tipos de tecnologias quando são jovens, eles interagem muito rapidamente, e a melhor prática em um ponto, 6 meses depois, mudou e há uma maneira diferente de fazer as coisas. E quando você tem uma base de código que se estende por muitos anos, às vezes você pode ter diferentes estilos de implementação de coisas lá. Nem sempre mantém a sincronia. E, claro, se você está seguindo um tutorial ou qualquer outra coisa para aprender, está lendo livros, está usando recursos, eles estarão na versão mais moderna de como fazer as coisas. E isso não necessariamente se encaixa no que você vê quando olha para um produto já existente e maduro. Isso é algo que você já experimentou ou conseguiu manter sua base de código realmente atualizada?

Mina: Eu acho que isso é algo que eu definitivamente tenho experimentado. Quando tentei aprender a fazer React por conta própria, olhei vários tutoriais e coisas assim. E eu notei, ou pelo menos as pessoas me disseram que trabalharam e trabalharam comigo que algumas das coisas que fazemos ou meio que antipadrões ou não exatamente como as coisas funcionam agora, porque essa base de código é um pouco, bem nos amadurecer relativo, mas tem alguns anos. E então há algumas maneiras que eu acho que são mais fáceis de fazer as coisas do que a maneira que estamos fazendo atualmente, porque isso foi escrito anos atrás. Portanto, é um pouco difícil tentar acompanhar os tempos atuais e ter certeza de que quero fazer as coisas da melhor maneira, mas também não quero quebrar uma base de código estabelecida porque quero brincar com as coisas.

Drew: Obviamente, uma das coisas com o React que pessoas como você e eu estamos chegando, pode parecer um pouco chocante como essa coisa toda com JSX. Você está usando JSX em seu projeto?

Mina: Estamos. Estou usando JSX.

Drew: Você fez as pazes com isso?

Mina: Eu sinto que um pedacinho de mim morre toda vez que eu abro um desses arquivos. Ainda parece um sacrilégio colocar meu HTML no arquivo JavaScript. Eu sei que isso é meio revolucionário e todo o ponto, mas parece que estou escrevendo minha marcação em um arquivo JavaScript. Eu fiz as pazes com isso, mas toda vez que eu faço isso, eu fico tipo, “…” Preocupações com a separação, é uma coisa. Eu gostaria de volta, por favor.

Drew: É um ponto válido, não é? Minha experiência quando eu estava começando a trabalhar mais seriamente com JavaScript, e isso foi provavelmente quando eu estava de volta ao Yahoo, as coisas estavam muito no modelo de páginas HTML renderizadas por servidor e, em seguida, adotando uma abordagem de aprimoramento progressivo, sobrepondo JavaScript em camadas para aprimorar a interface. E se o estado de algo na interface precisasse mudar, seu código tinha que saber sobre todas as partes da interface que ele precisava atualizar, o que obviamente leva você a uma abordagem fortemente acoplada com essas grandes visualizações monolíticas onde o código que você escreve precisa saber sobre todos os outros códigos em torno dele. E acho que isso realmente não se presta a uma abordagem com componentes que você usaria ao trabalhar com uma biblioteca de padrões ou um sistema de design, que é mais para sua área de especialização específica. Eu acho que o React se presta mais a essa abordagem, não é?

Mina: Acho que sim, especialmente com a capacidade de acoplar o CSS muito específico a um componente JSX ou React. E dessa forma fica muito mais fácil separar ou pegar apenas o que você precisa para a biblioteca e deixar o resto, enquanto uma biblioteca de padrões ou sistema de design que tenta fazer algo mais monolítico com apenas um arquivo CSS de grande estilo ou algo assim , dificulta muito. Você meio que tem que tomar tudo ou nada. Então, eu aprecio que o React nos permita fazer um desenvolvimento mais individualizado e com componentes, mesmo que eu ainda deseje que haja uma maneira de realmente separar minha camada de apresentação e minha camada de conteúdo da minha camada de interatividade. Mas talvez seja apenas eu sendo um pouco antiquado nesse sentido.

Drew: Eu definitivamente sinto a dor lá. A ideia é que, venha me corrigir se eu estiver errado, meu entendimento é que ao invés de separar as tecnologias, o CSS, o JavaScript e o HTML, está separando a funcionalidade. Então, tudo o que é um componente todos existem juntos-

Mina: Sim.

Drew: … o que eu acho que é útil se esse componente não for mais necessário. Você pode simplesmente excluí-lo, e ele desaparece, e não deixa uma pegada ao redor do seu aplicativo. Isso nem sempre é o caso com CSS. Como você está trabalhando com CSS com React? Você já olhou para coisas como styled-components ou algo assim?

Mina: Não, não temos. Já ouvi falar de styled-components, mas nunca os investiguei completamente para ser perfeitamente honesto. Então, a maneira como estamos trabalhando com CSS com React é escrever Less, e temos apenas um arquivo Less anexado a cada componente individual que é importado para esse componente. E então ele é vinculado via Webpack e servido ao cliente.

Drew: Você está usando um sistema como BEM ou algo para transformar namespace?

Mina: Sim. Estamos usando o BEM para namespace, embora a adesão a ele seja um pouco variada dependendo de quem está escrevendo o quê. Mas tentamos usar um padrão de namespace BEM para deixar um pouco mais claro qual é o propósito de cada classe e componente individual.

Drew: E isso parece estar funcionando com sucesso para você?

Mina: Acho que sim. Ocasionalmente, ele meio que tem o mesmo velho problema de às vezes não saber como nomear alguma coisa. Depois de um tempo, as coisas diárias sempre foram e sempre serão uma coisa difícil para o mestre. Então esse é o único problema que eu tenho é que ocasionalmente não tenho ideia do que devo chamar de um componente específico.

Drew: Com certeza. Essa é uma batalha constante, não é, como nomear as coisas?

Mina: Sim.

Drew: Eu sempre acabo trabalhando em um novo recurso ou algo assim, você dá a um componente e todas as classes e tudo o nome que o recurso tem no momento. E então, quando você chega ao lançamento, ele foi renomeado para outra coisa. Então você tem referências ao nome antigo no código e a interface tem o novo nome. E …

Mina: Eu tento sempre nomear as coisas com base na função ou no propósito dela versus coisas que são um pouco mais efêmeras, porque é menos provável que o propósito real desse componente mude. Esqueci de mencionar, mas além de usar BEM, acho que usamos BEMITs se você estiver familiarizado com isso. É basicamente o ITCSS mais o BEM, ambos criados por Harry Roberts. Então, eu uso a notação húngara para denotar se algo é ou não um componente, versus um objeto de layout, versus um padrão maior composto por vários componentes. E a partir daí usamos a convenção BEM para significar como o elemento de bloco e tudo mais.

Drew: E você teve que fazer muita refatoração e exclusão de componentes e coisas em sua base de código e teve que lidar com a questão do CSS ficar para trás?

Mina: Sim. Portanto, a parte não-React do meu trabalho, de manter o slack.com, é apenas um monte de arquivos Less que estão sendo compilados para CSS. E garanto a você, há muito código zumbi lá, porque definitivamente iteramos muito acima das coisas no tempo em que estive lá. E nem sempre temos tempo para voltar e fazer a limpeza versus quando redesenhamos uma página ou algo assim. Então está atrasado para uma auditoria, eu vou dizer isso.

Drew: Isso é algo que acabamos de analisar em nosso projeto React, analisando como abordamos o CSS. No momento, temos alguns arquivos CSS grandes e globais para todo o aplicativo, e temos essa situação em que o tamanho do nosso pacote está crescendo, crescendo, crescendo e nunca ficando menor, mesmo que as coisas fiquem removido. Então, estamos analisando coisas como componentes de estilo, o Tailwind também é outra opção que estamos considerando seriamente. Você olhou muito para o vento de cauda?

Mina: Eu não olhei muito para isso. Fiquei curioso sobre isso, mas, novamente, nunca tive tempo de investigar para realmente ver se é algo que quero tentar trazer para nossa base de código.

Drew: Na verdade, fiquei bastante surpreso, porque, como você, sou um pouco antiquado em como fazer essas coisas. Eu gosto de boa separação de preocupações. E eu gosto de escrever meu CSS em CSS, e é claro que a abordagem com o Tailwind é que você tem todos esses nomes de classe, que parecem um pouco com estilos inline que você está aplicando. E se ele se sente sujo.

Mina: Sim.

Drew: E eu me ofereci como voluntário na equipe, cada um de nós pegou uma tecnologia para investigar se eles seriam adequados para nossos problemas, e me ofereci para olhar o Tailwind porque tinha certeza absoluta de que o odiaria.

Mina: Não, não.

Drew: Mas acontece que eu realmente acho que resolve muitos problemas. Fiquei bastante impressionado.

Mina: Sim. Eu meio que cheguei a uma maneira semelhante de pensar, porque no passado eu preferia ter uma classe que incluísse todos os estilos que eu precisava para um componente específico e não fazer uma classe por propriedade, como acredito que o Tailwind faz ou linguagens como ela. Por razões semelhantes, parecia muito com: “Bem, estou apenas executando CSS inline neste momento. Por que eu faria isso?” Mas à medida que desenvolvi cada vez mais, dentro do nosso sistema de design Slack, criei um monte do que chamo de classes utilitárias que fazem coisas como adicionar um pouco de margem com um padrão. Tenho notado que, cada vez mais, estou usando essas classes além das classes de componentes. Então eu estou tipo, “Ok, bem, talvez eu deva revisitar tudo isso para fazer um CSS como uma declaração de cada vez”. Eu não sei se eu iria tão longe, mas definitivamente vale a pena considerar.

Drew: A computação parece mudar de rumo em termos de tendências entre soluções de thin clients e fat clients. Começamos com mainframes com terminais, e então a era do PC com windows e office e todos esses tipos de aplicativos grandes. E todos eles estavam ficando muito lentos, e então surgiu a web, e isso era apenas um navegador, e todo o trabalho estava sendo feito no servidor. E foi tudo rápido e rápido novamente. E agora voltamos a colocar todo esse trabalho de volta no navegador com tudo sendo feito com JavaScript, coisas como React e a abordagem JAMstack, onde voltamos a um tipo de cliente gordo. Às vezes me preocupo que estamos pedindo demais do navegador. Isso é um erro? Estamos exigindo demais do navegador tentando fazer tudo isso no React?

Mina: Eu quero dizer sim com a ressalva de que, novamente, minha experiência está muito restrita a sites estáticos. Eu não faço muito desenvolvimento de produtos. Então, talvez nesse reino, isso faça mais sentido. Mas da minha perspectiva, sinto que muitas vezes usamos um machado quando precisamos apenas de uma faca de manteiga. Não sei por que precisamos colocar tudo isso no navegador, colocar tanto trabalho e tanta pressão no cliente. Eu sinto que poderíamos fazer isso muito mais simples. Uma das coisas que sempre me deixou um pouco hesitante em usar o React, ou digo hesitante, mas o que quero dizer quando isso me deixou visceralmente irritado e me opus ativamente, foi quando eu ia a um site e literalmente nada renderizava porque havia foi um erro ou algo assim, como, “Sério? A página inteira está quebrada porque uma função quebrou?”

Mina: Isso meio que me incomodou que muitas vezes era uma abordagem de tudo ou nada. Uma das palestras que dei na AEA no passado e em outros lugares no passado foi falar sobre como incluir o aprimoramento progressivo e não apenas seu desenvolvimento, mas também de direção de arte e design de sites. E eu destacaria especificamente exemplos de sites que não fizeram aprimoramento progressivo ou qualquer tipo de degradação graciosa. Era como se você tivesse o JavaScript em execução no navegador ou não recebesse absolutamente nada. E seria como um simples site que representasse informações sobre a história do web design, que foi um dos sites realmente falados, a história do web design de 1990 até agora. Era um site lindo com muitas timelines, animação das coisas. Mas também poderia ter sido renderizado estaticamente com apenas uma lista. Houve etapas entre não mostrar nada e mostrar aquela experiência maravilhosamente aprimorada que acho que se perdeu por causa da maneira como estamos abordando o desenvolvimento web moderno agora.

Drew: Então você diria que existem absolutamente algumas categorias de projetos que se adequam a uma solução como o React e alguns onde ele realmente não deveria ser usado e você deveria usar métodos mais tradicionais?

Mina: Eu acho que se seu site é principalmente estático, ele estava apenas servindo informações, acho que não entendo por que você precisa de um projeto como o React para renderizar algo que não tenha muita interação além de apenas manipulação do DOM . Acho que não vejo o benefício que você obtém com isso. Novamente, posso não estar trabalhando nos projetos apropriados. Eu posso não ter visto ou encontrado esse caso de uso, mas estou tendo dificuldade em ver se é apenas um site estático, apresentando conteúdo, sem muita interação, sem muita interação além do DOM manipulado e fazendo animações. Não vejo como ter uma biblioteca React ajuda você a atingir esse objetivo.

Drew: É interessante porque eu não sou ruim de falar porque eu realmente não usei, mas eu vejo muitos projetos Gatsby e Gatsby sendo um gerador de site estático que usa um front-end React nele. E eu vejo todos os exemplos de temas e coisas que eles têm disponíveis são sites baseados em conteúdo, ou blogs, e um site de receitas, e um portfólio, e esse tipo de coisa. E há algo que eu acho que isso não é necessariamente o ajuste certo para algo como React. Por que isso não está sendo renderizado estaticamente e depois aprimorado progressivamente?

Mina: Sim.

Drew: Não é software.

Mina: Sim. Na verdade, eu também não usei Gatsby. Ouvi muitas coisas boas sobre isso, mas esse é provavelmente um dos exemplos em que pensaria: “Ok, acho que não estou vendo por que essa ferramenta é necessária para fazer esse trabalho em particular. ” Novamente, eu não sei. Talvez seja apenas porque mais pessoas se sentem confortáveis ​​escrevendo em React quando estão escrevendo algo novo, e é apenas fornecer uma ferramenta que atende as pessoas onde elas estão. Já ouvi falar muito bem sobre geradores de sites estáticos que usam o React para pessoas que os usaram e os amam, mas não é um caso de uso que eu imediatamente pensaria: “Ah, isso faz sentido”.

Drew: Parece que sempre houve essa batalha entre o que chamaríamos de site e o que você poderia chamar de aplicativo da web. E o abismo entre os dois parece estar ficando cada vez mais amplo, cada vez mais amplo, enquanto uma abordagem de aprimoramento progressivo tenta preencher a lacuna pegando algo estático e adicionando JavaScript e adicionando interatividade. Parece que coisas como React são ideais para software que você está executando no navegador. Você concordaria com isso?

Mina: Eu definitivamente concordaria com isso porque parece que foi construído para esse tipo de ambiente; foi construído para executar software. Foi construído pelo Facebook para o Facebook. Então, foi construído para um produto. Ele foi desenvolvido para executar o que você chama de aplicativo da Web no navegador e não necessariamente para o tipo de trabalho que, como mencionei, estou acostumado a fazer. Então, acho que nesses cenários, definitivamente faz muito sentido usá-lo se você estiver criando um software mais complexo e sofisticado que deve ser executado dentro de um navegador. Mas se você está construindo um site de marketing ou qualquer outra coisa, acho que ainda lutaria para ver por que isso seria necessário lá.

Drew: Então, estamos dando permissão às pessoas para ainda construir sites decentes e renderizados estaticamente?

Mina: Eu adoraria ver mais disso acontecer. Eu sinto que isso está meio perdido e meio perdido, se alguma vez foi legal ou algo assim. Sinto que perdemos essa parte do desenvolvimento web. É tão engraçado: você e eu dissemos que somos meio que da velha escola, e eu rio disso porque na verdade estou desenvolvendo web há, o que, seis anos agora? Como eu sou da velha escola? Não faz tanto tempo para mim. E ainda de alguma forma eu sou parte da velha guarda que não gosta de coisas novas e brilhantes. Eu não entendo.

Drew: Então, na verdade, o React existe desde que você foi um desenvolvedor web.

Mina: Talvez eu só tenha uma alma velha. Não sei.

Drew: Eu acho que é provavelmente o caso. Eu não olhei pessoalmente, existem abordagens renderizadas do lado do serviço que você pode adotar com aplicativos React. Você já experimentou algum desses?

Mina: Eu não experimentei nenhum deles. Examinei-os brevemente para o projeto em que estou trabalhando atualmente, porque sinto que há partes da operação que funcionariam melhor em um servidor do que nos clientes. Mas acho que devido ao meu conhecimento limitado e ao fato de que a base de código é um pouco mais complicada do que posso entender, não consegui descobrir como fazer essa parte funcionar. Eu adoraria descobrir isso eventualmente, mas passei um dia investigando. Eu fiquei tipo, “Sabe de uma coisa? Eu não estou grotando isso, eu preciso estar. Então, vou voltar atrás e seguir um caminho diferente.”

Drew: Sim. Acho que todos nós já estivemos lá.

Mina: Sim. Eu desci um caminho. Eu fiquei tipo, “Oh, isso é sombrio e assustador. Vamos reverter. Vamos reverter.”

Drew: Afaste-se do código.

Mina: Sim.

Drew: Então você tem sido muito diplomático e educado sobre o React até agora. Sinto que há alguma tensão borbulhando um pouco sob a superfície. Vamos. Conte-nos o que você realmente sente.

Mina: Eu tenho sido educada e diplomática, principalmente porque a base de fãs do Reacts pode ser um pouco maldosa às vezes, e eu prefiro que eles não venham atrás de mim. Então, por favor, o React é ótimo. É maravilhoso. Use-o para o que você deseja usá-lo. Eu brinco, mas mesmo aquele tweet que você mencionou no início deste podcast, onde eu acho que o que você disse é que eu não odeio. Não amo, mas não odeio. Mesmo essa declaração, eu tenho as pessoas, não havia vitríolo, mas era mais que eles estavam prontos para pular para a defesa e dizer: “Bem, eu amo isso porque X, Y, Z”. Eu sou como, “Eu não disse que era ruim. Acabei de dizer que sou meh sobre a coisa toda.” Mas aparentemente ser meh não está bem. Eu tenho que amá-lo.

Mina: Então é por isso que provavelmente tenho sido um pouco mais diplomática do que normalmente seria, só porque não quero que as pessoas pensem que estou falando mal, porque não estou. Tem um lugar em mais desenvolvimento web. Ele cumpre uma função. Faz bem o seu trabalho. As pessoas adoram. Não é apenas uma ferramenta que eu já tive ou quis usar até agora.

Drew: Sim. As coisas podem ficar muito tribais, não podem, com as pessoas sentindo que precisam ficar de um lado ou de outro, e você é absolutamente a favor de alguma coisa ou absolutamente contra alguma coisa? E não tenho certeza se serve a um bom propósito, e não acho que isso realmente nos faça avançar como indústria e como comunidade para fazer isso.

Mina: Sim. É realmente estranho. É fascinante observar apenas do ponto de vista sociológico, mas muitas vezes é muito estranho observar. É como se eu não tivesse permissão para ser, como eu disse, neutra sobre certas coisas. Eu tenho que ter uma opinião forte, que é que eu não acho saudável. Qual é o termo "Opiniões fortes, mantidas vagamente?" Esse é o jeito que eu faço sobre as coisas. Eu sinto fortemente sobre certas coisas, mas não é como se você não pudesse mudar minha mente. Onde eu sinto que algumas pessoas, sua identidade se envolve em certos aspectos, que se você não é para o que eles escolheram se identificar, é um desrespeito pessoal versus apenas, eu não me importo com esse tópico em particular, ou ferramenta, ou qualquer outra coisa.

Drew: Sim. Eu não sei se isso é piorado pelo fato de que todos nós tendemos a nos especializar muito mais em partes específicas da pilha. E eu sei que existem pessoas que são desenvolvedores do React. Eles se chamariam de desenvolvedores React porque é nisso que eles trabalham. E eles não necessariamente escreveriam nenhum script Java vanilla ou não usariam Vue ou qualquer outra coisa. React é o mundo deles. Então, acho que quase parece um ataque a toda a carreira deles dizer: “Eu não gosto de React”. Bem, eles estão realmente empenhados em fazer você gostar do React ou qualquer que seja a tecnologia.

Mina: Admito que fui uma dessas pessoas no passado. Na verdade, provavelmente era principalmente sobre SASS, eu acredito. Eu estava muito na equipe de fazer SASS como pré-processador e todos os outros pré-processadores são lixo. Eu não quero falar sobre eles. Eu não quero lidar com eles. E percebi que era uma maneira muito estreita de ver as coisas. Use a ferramenta apropriada para o trabalho. O que quer que o torne mais produtivo, essa é a ferramenta certa. Realmente não importa o que é.

Drew: Existem tecnologias com as quais trabalhamos que não tenham esse tipo de sentimento tribal? Existe alguma coisa que as pessoas estão felizes em usar ou não usar? Não consigo pensar em nada.

Mina: Uau. Ninguém tem opiniões sobre marcação, na verdade.

Drew: Não.

Mina: Eu sinto que ninguém tem opiniões sobre como HTML real e apenas marcação, como “Está lá”. Eles usam. Mas as pessoas têm opiniões fortes sobre CSS e como ele é terrível ou maravilhoso, e as guerras de pré-processadores que realmente não acontecem mais tanto, e então, é claro, todo o tribalismo dentro das várias bibliotecas JavaScript.

Drew: Então você diria que sua jornada até agora com o React ainda é apenas “É uma ferramenta. Ele faz o seu trabalho?”

Mina: Passou de uma curiosidade para uma antipatia ativa e visceral por causa de quão prevalente era e quão desnecessário eu achava que essa prevalência era para mim. Estou agora com meh, o que novamente não significa que eu odeie. Significa apenas…

Drew: Acho que é um bom lugar para se estar. Acho que provavelmente somos todos mais fortes como tecnólogos se entendermos o valor de uma determinada tecnologia para seu propósito. Podemos avaliar o que é bom para qual circunstância e escolher a ferramenta certa para o trabalho.

Mina: Sim. E foi aí que cheguei a esse ponto da minha carreira em que não investi muito em nenhuma linguagem ou tecnologia em particular, ou o que quer que seja, porque é tipo, “Qualquer ferramenta é mais apropriada para o que você está tentando fazer, então use isso.” Aprendi que há lugar para tudo; há um tempo e um lugar para fazer tudo. E até recentemente, não havia tempo ou lugar real para eu usar esse bibliotecário do React, e agora existe.

Drew: Acho que é um bom lugar para se estar. Então eu tenho aprendido tudo sobre React ultimamente como você aprendeu no trabalho diário. Tem mais alguma coisa que você tem aprendido ultimamente?

Mina: Na verdade eu aprendi ironicamente, que é outra linguagem que se originou no Facebook, eu tenho feito muito desenvolvimento de Hack, principalmente porque é o que eu uso no Slack, no meu trabalho diário. Aprender Hack abriu o caminho para eu ficar mais confortável usando React porque eles seguem padrões muito semelhantes, exceto que um é do lado do servidor e o outro não. Então, junto com o geral, tenho aprendido mais sobre o back-end e como isso funciona por vários motivos diferentes. E eu tenho me alongado nos últimos dois anos e estou ficando cada vez mais fora da minha zona de conforto. Sistemas de design, bibliotecas, esse é o meu mundo, e me sinto muito bem e confortável nesse mundo. Mas estou saindo disso e fazendo muito mais lógica do lado do servidor, desenvolvimento de API, modelagem de dados e tudo isso. Eu tenho feito muito sobre isso no ano passado também.

Drew: Acho que quanto mais eu entendo sobre toda a pilha de coisas de back-end em coisas de front-end, cada um ajuda meu conhecimento do outro. Acho que escrevo melhor código de front-end por ter escrito código de back-end e entendendo-

Mina: Sim. Acho que me sinto da mesma forma. Agora que tenho uma ideia melhor de, como dissemos, toda a pilha de como vamos dos dados ao cliente final. Acho que estou pensando em todo o pipeline, independentemente da parte em que estou trabalhando. Estou pensando sobre qual é a melhor maneira de estruturar essa API para que, quando chegar ao modelo, não precise fazer tanta manipulação dos dados que recebo nessa extremidade. Isso definitivamente me tornou um engenheiro melhor, eu sinto que

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.