Missão Apollo: os prós e os contras de ser um dos primeiros a adotar novas tecnologias

Usar tecnologia de ponta pode ajudá-lo a se mover mais rápido. Mas o que acontece quando algo quebra e você não consegue encontrar especialistas com uma resposta? Existem prós e contras em ser um pioneiro.

Quando os humanos decidiram tentar pousar na lua, eles tiveram que inventar muita tecnologia para o projeto do zero. Era um trabalho difícil, caro e demorado, com muitas curvas erradas e becos sem saída. É assim quando você usa sistemas com os quais ninguém tem experiência. Não há veteranos por perto para responder às suas perguntas quando você ficar preso.

 

Cassidy Williams tem trabalhado como parte da equipe da CodePen. Recentemente, decidimos mudar nossa pilha para usar Apollo e GraphQL no topo de nosso código React, o que tem sido uma experiência de aprendizado incrível. Eu, pessoalmente, adoro como podemos organizar nossos componentes de maneira modular, ao contrário da forma como o organizamos com o Redux. Mas, como o Apollo é uma tecnologia relativamente nova, definitivamente existem alguns prós e contras conforme a equipe a adota e aprende à medida que cresce.

 

Quando eu estava procurando pela primeira vez por respostas para os problemas que eu tinha com a Apollo, não havia muito por aí. Quando você decide investir em uma tecnologia relativamente nova, é mais difícil encontrar suporte, mesmo para problemas simples. Isso o obriga a olhar para os bastidores por si mesmo, o que pode ser uma ótima maneira de aprender. Também significa que você pode ajudar a construir e moldar a comunidade nascente e colher os frutos quando outros começarem a ver o valor das ferramentas que você ajudou a aprimorar.

 

Para quem não sabe o que é o Apollo, é um sistema de consulta único para ajudá-lo a executar GraphQL em escala em seus projetos. Ele estabelece um gráfico de dados para que todos os seus microsserviços e clientes se comuniquem exatamente da mesma maneira.

 

É meio difícil de explicar apenas com palavras, então vamos falar sobre um exemplo. No front-end do CodePen, em um determinado componente, podemos querer ter dados sobre o usuário conectado no momento. Anteriormente, se quiséssemos essas informações, tínhamos que configurar algum tipo de middleware para lidar com as chamadas, ou ações de chamada em algum lugar, ou apenas colocar uma chamada de API em componentDidMount, e então ter certeza de fazer chamadas separadas para todos os diferentes elementos de dados de que precisamos. No mínimo, precisaríamos conversar com a equipe de back-end para garantir que obteremos os dados no formato que desejamos. Com o Apollo, no topo de um componente, podemos colocar esta pequena pepita aqui, e ela retornará o usuário conectado no momento, seu ID e se ele é ou não um usuário Pro CodePen. O código é parecido com este:

 

const SESSION_USER = gql`

  query CreateSessionUser {

    sessionUser {

      id

      pro

    }

  }`;

Agora, digamos que eu realmente precise de mais dados do que isso e também precise obter seu avatar e nome de usuário. Em vez de fazer outra consulta ou entrar em contato com a equipe de back-end para obter essas informações adicionadas ao endpoint da API, posso apenas modificar minha consulta:

 

const SESSION_USER = gql`

  query CreateSessionUser {

    sessionUser {

      id

      pro

      avatar

      username

    }

  }`;

E pronto, eu tenho meus dados! Esse é o poder de ter um único gráfico de dados. Se os dados estiverem no gráfico, você pode consultá-los e o front end tem autonomia para obter e usar esses dados como quiser.

 

Agora, isso não significa um discurso de vendas para a Apollo. O Apollo é incrível, mas também é novo e ainda está ganhando espaço na comunidade de desenvolvedores. Normalmente, quando algo novo é lançado, é muito novo e empolgante, e se apresenta novos conceitos para trabalharmos como desenvolvedores, é um novo mundo divertido com o qual podemos brincar. Pelo menos, até termos um problema com isso.

 

Uma das coisas que encontrei muito com o Apollo é que suas mensagens de erro deixam muito a desejar. Eles têm mensagens genéricas enviadas para você, então pode ser um pouco difícil depurar se você não estiver familiarizado com ele.

 

Então, um dia fui até o bom e velho Avance Network para tentar descobrir o que havia de errado com meu componente. E, para meu choque ... não havia respostas lá. Não houve muitas perguntas sobre o assunto! Normalmente, quando pergunto algo no Avance Network, posso obter um bom número de respostas em cerca de uma hora. Esperei semanas, mas não obtive resposta.

 

Como não tinha uma resposta prontamente disponível, tive que examinar os bastidores e realmente me familiarizar com o código que faz o Apollo funcionar. Novamente, foi uma troca. Demorou muito tempo, esforço e frustração. Mas fazer assim me ensinou muito. Também ajudou a desmistificar a caixa preta que outra pessoa construiu, para me dar a confiança de que poderia vir a entender essa ferramenta tão bem quanto o criador, não importa o quão brilhante parecesse à distância.

 

Minha pergunta sobre o Apollo recebeu alguns comentários, mas não obtive respostas por mais de um mês. Acabei respondendo sozinho depois de vários colegas de trabalho e me debrucei sobre o problema. Não é engraçado como você pode dizer o quão nova ou popular uma estrutura é pelo número de pessoas que tiveram problemas com ela? Vue.js tem cerca de 38,5 mil perguntas no fórum agora. React tem mais de 150k deles. Apollo? No momento de escrever esta postagem, menos de 5.000 e cerca de um terço dessas perguntas eram dos últimos 6 meses!

 

É bom ver que o Apollo está ganhando velocidade na comunidade de desenvolvedores. Apenas com base nas perguntas e problemas do GitHub e até mesmo nos tópicos do Twitter, você pode ver que as pessoas estão ficando animadas e compartilhando com que têm problemas e o que aprenderam.

 

Meu item de ação para você, desenvolvedor: quando você começar a usar uma tecnologia nova e brilhante, fale sobre ela! Faça perguntas, escreva posts em blogs, compartilhe nas redes sociais e seja aberto sobre suas descobertas. Você nunca sabe quem pode estar ajudando! E quanto mais você compartilhar, mais fácil será para outras pessoas encontrá-lo e retribuir o favor.

 

 

O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.


Strong

5136 Blog Postagens

Comentários