Você não conseguirá impedir erros em produção e principalmente lidar com isso na interação com o usuário mesmo que sua aplicação tenha uma cobertura de 100% com testes unitários, um bom ratio pra cada linha de código e testes de aceitação/integração.
Você está errado em todas as metodologias se não testa de forma automatizada.
Reagindo a erros não esperados
A versão 16 do React trouxe um método excelente no ciclo de vida dos componentes, o componentDidCatch, que captura todas as exceções lançadas pelos nós abaixo na árvore do componente que manipula esse método.
Em outras palavras, todo erro que acontecer abaixo de ErrorBoundary (ver código seguinte) será capturado num único ponto sem a necessidade de espalhar try/catch pelo código de apresentação.
De qualquer forma, todas as transformações de estado devem ser concentradas no redux como o código a seguir.
Independente de como mostrar a UI para o usuário ao acontecer um erro, essa informação virá exclusivamente de um ponto que é administrado por transações das sagas.
Estado Centralizado
Temos vários vantagens em centralizar a manipulação de erros no redux, a principal é que podemos concentrar o monitoramento em um único lugar com os dados trackeados pelo sua ferramenta, seja Airbreak, Logentries ou Sentry.
Facilitar coordenar tipos de erros junto ao estado da aplicação, além de indicar um único ponto de manutenção porque esses tipos precisam de transformações e Tracking.
Track dos erros
Dado a centralização dos erros, agora partir para logar direto no seu serviço que provavelmente tem dezenas de métodos de notificações e habilitar a integração com seu Issue Tracking.
Offline
O ecossistema Redux também agrega a vantagem de facilitar a persistência dos erros para tracking e análise futura ou evitar a submissão constante de notificações aproveitando para enviar em Batch num tempo determinado.
Em alguns casos extremos, principalmente em integração, você pode exportar o store na window para disparar um error que extrapola a aplicação com window.onError = error=> (window.store.dispatch({ type: ‘GLOBAL_ERROR’, payload: error }));
Espero que essas dicas agreguem valor a sua App, porque é praticamente impossível evitar erros, é sempre melhor estar preparado pra agir quando eles surgem.
Comenta sobre algo que acontece(u) na sua App que essas dicas ainda não cobrem para eu melhorar o artigo.
Discordo — e já concordei — e acredito que o mais fantástico de PWA é unificar o desenvolvimento Front-end moderno em um único dispositivo.
Estamos desenvolvendo e aperfeiçoando o The Rivendel Way apostando pesadamente que no Capítulo Front-end o PWA vai ser a solução para unificar tudo.
Front-end é o dispositivo que foi desenhado pra ser.
A programação Front-end nasceu no primeiro terminal, se é que não dá pra considerar desde o cartão perfurado.
No Desktop a grande facilidade encontrada foi a padronização de um Toolkit fornecido pelo próprio SO, você não tinha que desenhar sua tela, apenas usar a UI fornecida, os Patterns vem desde os anos 70 — como MVC — e o estado da arte já estava encontrado ali nos anos 90.
Temos que reescrever todo o código Mobile a cada 2 anos
Todo mundo aceita, mesmo a contragosto, reescrever toda a aplicação a cada dois anos porque não tem o que fazer, os dispositivos nem existem mais e os novos provavelmente dão algum “probleminha” de compatibilidade desde o SO a libs específicas.
Alguém citou IOS? Eu que não.
Qual o porquê desse mesmo comportamento não ser aceito pra Front-end Web?
Os dispositivos, conhecidos como navegadores, demoram um pouco mais e mantém uma certa retrocompatibilidade com a sua receita de bolo na construção da UI artesanal que ele não oferece.
Resultado: um time Front Web, um time Front Android e um time Front Ios P-O-R P-R-O-D-U-T-O.
Responsivo
Um dos fatores mais importantes na minha opinião é começar ponto a ponto a partir do responsivo do seu produto/site.
Se tem um mínimo necessário, pra mim seria isso e acredito que todo mundo concorde com isso, sem “responsividade” não dá pra nem conversar?
Mas Milfont, pra quê falar o óbvio em pleno 2107?
Acredite, não é ainda, por incrível que pareça. Sigamos.
Qual o Porquê de não esquecermos do aspecto App?
Voltando ao Post do Sergio, Web é importante como plataforma, unificar esses times e ecossistema de tecnologias, além de fornecer a mesma experiência para o usuário sem o punir com instalação, entre outras coisas.
Mas só pensar em Web não faremos essa mudança, precisamos indexar na lista de Apps dos dispositivos móveis, ter uma responsividade ao acessar um link em um Push Notification (*) , compartilhar entre Apps, acessar com facilidade recursos do aparelho (ou no caso do IOS pelo menos acessar) e pequenos detalhes que só lembramos na hora de implementar.
(*) (quem está usando o Twitter no Android já deve ter percebido que tem vezes que não abre a App quando clica na mensagem)
Progressivo
Enquanto o PWA não fornecer o aspecto App completo, não será aceito.
Precisamos progressivamente entregar um valor ao usuário mais próximo do que ele já tem hoje, que no Mobile nativo já lembra muito aquele estado da arte que o Desktop entregou nos anos 90.
Já estamos prontos?
Semana que vem vou palestrar no BrazilJS sobre as vitórias alcançadas do CEJS (primeiro semestre) pra cá, enquanto isso fique com as derrotas:
Pra finalizar, se ouviu o podcast referenciado no início do texto, vai perceber que profetizei o PWA no IOS (que é o que falta) até 31 de dezembro, a Apple está correndo atrás pra não furar o prazo.
Empresas e funcionários, vamos conversar sobre nossa relação?
Quero demonstrar como criar uma cultura de sucesso mantendo e atraindo os melhores, os empolgando constantemente e instigando o crescimento junto ao negócio.
Em primeiro lugar, entenda: na empresa somos todos mercenários, não membros da família como o DHH escreveu brilhantemente. Como? Pra explicar isso vamos precisar de um preâmbulo histórico.
Até a invenção do capitalismo, todas as relações de trabalho giravam em torno da terra, ou seja, você tem um suserano que é dono da terra por direito religioso ou social e vassalos que devem respeito e obediência ao seu nobre. [1]
Existe uma diferença substancial entre vassalo e escravo, o primeiro pode ser outro nobre inclusive. Você trabalha por Honra e satisfação ao seu suserano, não por um salário, antigamente não existiam sequer forças armadas, eram os vassalos e nobres quem formavam o exército — com excessão do exército Romano em um curto período de tempo e com suas particularidades.
Em contrapartida o suserano tinha a obrigação de fornecer segurança, alimentação e todos os recursos necessários a subsistência de seus vassalos.
Homens livres eram basicamente mercenários, aqueles que trabalhavam apenas para quem pagava mais, não necessariamente apenas pelo dinheiro, a reputação de um bom trabalho valia mais que seu peso em ouro pra conquistar trabalhos futuros e satisfazer o ego entre seus pares, noções de valores marginais já disseminados.
Na transição entre o feudalismo e o capitalismo surgiram outros pequenos artesãos, ordens e sociedades de outras especialidades, mas todos girando em torno da guerra e discriminados como mercenários.
Invenção do Capitalismo
Fomos nos ajustando como sociedade pela mudança sócio-cultural das relações de trabalho a partir da invenção da indústria e dos serviços entre leis trabalhistas e teorias financeiras sobre essa difícil relação, no fim das contas somos homens livres que trabalham por dinheiro ou uma boa reputação como os antigos mercenários, mas o ranço do significado da palavra nos impede de enxergarmos como tais e nos submetermos na maioria das vezes como vassalos.
Ao mesmo ponto que o empreendedor é dono do novo conceito de terra e precisa entender que contrata mercenários, não é suserano de seus colaboradores. [2]
Invenção do termo Colaboradores
Os departamentos de Recursos Humanos tentaram suavizar a visão entre um vassalo e um mercenário e inventaram o termo colaborador que incuta a noção que dinheiro não é envolvido, mas também não é descartado. Ou seja, não define na verdade o que você faz e nem quais responsabilidades são induzidas a quem é o dono do capital.
Colaborador pode ser tanto um fornecedor, quanto um funcionário ou um co-fundador. Mas na empresa existem os sócios e os funcionários apenas, estes divididos em hierarquias de chefia, seja técnica ou absolutamente burocrática.
Não ofereça puff e cadeiras confortáveis como diferencial, não está contratando crianças, um ambiente saudável é o que desafia sem explorar, não queira vender como um ambiente familiar que as pessoas viverão naquele panfleto da bíblia com leões e tigres convivendo entre seres humanos, lugar de trabalho é para a boa competição.
Invista no seu funcionário, o desafie a apresentar palestras, participar de conferências e se tornar o mais apto naquele aspecto técnico — mas pague as despesas, ao demonstrar o trabalho que fez na sua empresa ele se esforçará pra coordenar e organizar da melhor forma possível, afinal ele vai provar seus méritos a seus pares que serão bem criteriosos. Tire do Budget de Marketing pra financiar.
Atrair os melhores (e principalmente os manter) ainda vai ajudar a atrair os pares.
Tamanho de Time
Todo mundo quer fazer Cosplay da cultura de Squad do Spotify, mas você está tentando emular ou absorvendo os aspectos culturais?
O mais importante para o time é que você tem que preencher os papéis, não os transformar em cargos, isso é paralelo no plano de carreiras. Scrummaster não deve ser cargo (foi engano se já está na CBO).
Invista no treinamento e especialização
Queira o melhor mercenário no time que seu dinheiro pode pagar, se não dá pra bancar um salário gordo devido ao mercado e Market Share que possui, compre uma conta na Alura e um pacote na Casa do Código pra eles como complemento, alie com o tópico sobre palestras e Networking.
Coordene o que vão estudar, em vez de soltar 20% de horas pra pesquisa aleatória, promova ações sólidas como a resolução de um problema que seu produto/serviço atua e patrocine um Hackathon pra isso.
Os conselhos usam exemplos bem pontuais da área de desenvolvimento de software, porte e adapte para o seu segmento.
Conselho para os colaboradores
Você trabalha em uma empresa que hora extra é o normal e não recebe por isso?
Trabalha sob pressão e tem que se virar pra aprender seja lá o que for?
Ganha pouco e ainda por cima tem o risco constante de perder o emprego sob ameaças?
Não tem as conquistas valorizadas e quando erra isso é evidenciado?
Procure empresas que façam o aconselhado aqui e parem de trabalhar como vassalos, não acredite em empresas que se vendem como famílias ou vai viver sob mesada o resto da vida.
Citações
[1] Um livro excelente focado no entendimento entre as eras comerciais e termos a noção da cultura que girava em torno da terra.
[2] O melhor livro para entender sobre capitalismo.