Giro Semanal #15
Seja bem-vindo ao o 3º Giro Semanal de notícias para #devs aqui no Substack - e o 15º no total!
Essa semana foi triste para mim. Houve um mass layoff (demissão em massa) na empresa em que trabalho, que demitiu 18% do seu quadro de funcionários. Não fui afetado, porém meu chefe e o designer do meu time foram.
Eu na verdade nunca fui demitido na vida, mas já fui rejeitado várias vezes (não só profissionalmente - assim como todos que tomam riscos em sua vidas) e imagino que os sentimentos sejam parecidos. Sei bem que somos tomados pela sensação de insuficiência ou incompetência - achamos que fomos dispensados por estarmos abaixo da capacidade técnica esperada. Mas será que isso procede?
Não tenho muitos detalhes sobre o que ocorreu nas outras empresas, mas na minha foi basicamente o seguinte:
Antes do downsizing tínhamos 4 times, cada um com um propósito diferente no produto principal. Eles eram compostos por 1 tech lead, 1 designer, 1 gerente de produtos e 6-10 engenheiros.
O meu time acabou sendo desfeito.
A gerente de produtos não foi afetada porque já fazia parte de outro, então apenas ficou com dedicação exclusiva a ele.
Os engenheiros (incluindo eu) foram realocados para outras equipes.
Mas o que fazer com o tech lead e o designer? Não faria sentido demitir um tech lead ou designer de outro time, que já tem todo um contexto dos projetos em andamento - principalmente quando eles possuem a mesma capacidade técnica (o que vem do fato da empresa saber bem quem promover/contratar) - então eles mesmos acabaram demitidos.
É exatamente esse o ponto da reflexão. Não é que eles eram os mais incompetentes para o cargo, mas sim que foram simplesmente azarados de estarem no único time que foi dissolvido. Muitas pessoas subestimam o impacto da sorte e do azar na vida. Isso é discutido em muitos livros de desenvolvimento pessoal cuja leitura eu recomendo, como Rápido e Devagar, Anitfrágil, Fora de Série - Outliers, etc., então não vou me estender muito por aqui, mas quero que guarde isso: se algum dia acontecer com você, saiba que não foi porque você era incapaz. Erga a cabeça, resete sua mente e passe para o próximo ciclo.
E vamos ao conteúdo desta semana…
Google pede ajuda para resolver o problema da diferença na ordem dos componentes no layout e no código fonte
Vamos supor que você queira criar um componente que exiba uma sequência de caixas contendo informações, mas que dependendo do tamanho da tela nem sempre o que está em primeiro no código fonte é o que aparecerá primeiro no layout:

Leitores de tela (dispositivos utilizados por pessoas com deficiências visuais para navegarem na web) consideram somente o HTML, então eles leriam o elemento destacado sempre depois do primeiro - o que não estaria correto para dispositivos menores. Os desenvolvedores do Google Chrome sabem disso, e estão sugerindo a criação de uma propriedade CSS chamada reading-order
para contornar o problema. Eles também estão dispostos a ouvirem feedbacks, críticas ou soluções melhores da comunidade!
Mozilla está trabalhando em feature do Firefox para negar automaticamente todos os cookies de uma página
Algum tempo atrás, a GDPR - General Data Protection Regulation (Regulamento Geral sobre a Proteção de Dados), criada pela União Europeia, passou a exigir que todos os sites europeus pedissem explicitamente a permissão dos usuários para armazenar seus cookies.
Como resultado, recebemos aquela “chatice” de, ao acessarmos páginas novas, nos depararmos com um prompt solicitando essa concessão. Visando melhorar a experiência dos usuários que não gostam de ter suas informações pessoais compartilhadas por aí, a Mozilla está trabalhando em uma configuração para o Firefox que permite que todos os pedidos sejam rejeitados automaticamente. Quando será que os outros browsers começarão a adotar a ideia?
freeCodeCamp lança curso ensinando a criar projetos práticos com a API da OpenAI
Já é a 3ª vez que a freeCodeCamp aparece em um Giro Semanal (e não, eu não sou patrocinado por eles)! Dessa vez eles trouxeram um curso de mais de 5 horas ensinando a utilizar a API do OpenAI (sim, a empresa por trás do ChatGPT e DALL·E) através de 5 projetos práticos: 2 envolvendo a geração de mensagens em chats, 2 envolvendo a geração de imagens e 1 envolvendo a geração de código SQL. Todos são escritos em JavaScript/TypeScript, então não deixe de conferir!
TypeScript 5.1 é lançado em beta
A MicroSoft anunciou o beta da primeira atualização minor para a versão 5 do TypeScript. A principal melhoria está na tipagem de funções que não retornam nenhum valor. Até então, o seguinte trecho de código era proibido:
// ❌ A function whose declared type is neither 'void' nor 'any' must return a value.
function f(): undefined {
// sem returns
}
Nesse caso, era necessário ou utilizar a palavra void
, ou any
(não recomendado), ou deixar o tipo do retorno vazio:
// ✅ ok
function f(): void {
// sem returns
}
// ✅ ok
function f(): any {
// sem returns
}
// ✅ ok
function f() {
// sem returns
}
A partir de agora, a primeira declaração deverá funcionar normalmente - melhorando a experiência do desenvolvedor em alguns casos específicos envolvendo APIs.
Outras mudanças interessantes foram:
Suporte para métodos getters e setters com tipos diferentes;
Melhorias na tipagem de elementos JSX;
Otimizações na velocidade de compilação reduzindo a quantidade de operações de alguns fluxos ineficientes;
e muito mais!
Equipe do React é afetada por demissão em massa da Meta
Conforme discutido no início desta publicação, a situação não está fácil para nenhuma empresa. A Meta (empresa originada do Facebook) já demitiu mais de 20 mil funcionários desde o final do ano passado, e na última rodada (ocorrida em março) a equipe do React foi afetada com o desligamento do engenheiro Mengdi Chen (e possivelmente de outros membros também). Dan Abramov, no entanto, garantiu recentemente que a biblioteca não está sendo negligenciada pela holding - na verdade é justamente o contrário, o valor investido nela tem aumentado, o que indica que a saída de alguns membros provavelmente se trata de uma reestruturação interna - assim como na empresa em que eu trabalho.
Vite anuncia versão 4.3 com redução de até 76% no tempo de inicialização de projetos
O Vite, framework para desenvolvimento de projetos com React que vem se apresentando como principal substituto ao Create React App, anunciou uma nova versão minor com melhorias massivas de desempenho. O tempo para cold start de um novo projeto utilizando o transpilador Babel (mais comum) reduziu de um pouco menos de 3 minutos para um pouco menos de 1 minuto (!), em média. Com o SWC - Speedy Web Compiler, o ganho na velocidade ultrapassa 75%!

Houve também melhorias no desempenho de hot-reloads, apesar destas serem mais imperceptíveis por já acontecerem em tempo muito reduzido (abaixo de 50ms).
Node.js 20 é anunciado oficialmente
Conforme esperado (o Node recebe atualizações major todo mês de abril e outubro), a versão 20 do querido ambiente de execução para código JavaScript chegou nessa semana.
A principal mudança foi a introdução de um modelo de permissões, que permite aos desenvolvedores restringirem acesso a recursos específicos por parte dos programas. Essa nova funcionalidade representa uma grande melhoria na segurança do Node, que é um de seus pontos mais criticados inclusive pelo próprio fundador, Ryan Dahl, que afirma resolvê-lo no Deno.
No anúncio do lançamento da nova versão major, é reforçado novamente o end-of-life (término da vida) das versões 14 e 16 do software, que devem parar de receber suporte respectivamente no final desse mês e no final de outubro. Aos desenvolvedores que ainda as utilizam, recomenda-se a atualização para a versão 18.
GitHub anuncia verificador de procedência para pacotes NPM
A fragilidade na segurança do ecossistema NPM tem sido um tema recorrente aqui no Giro Semanal (falamos mais do assunto nas edições #12, #10 e #8), e isso não está passando despercebido pelo GitHub, proprietário da ferramenta.
Na última semana, foi lançado um sistema para a verificação da procedência das bibliotecas publicadas. Basicamente, o autor de cada publicação poderá linkar o código fonte que a gerou (especificando até mesmo o hash do commit no repositório) - o que deve diminuir o sucesso dos hackers que sobem bibliotecas maliciosas com nomes parecidos com os de bibliotecas reais (conforme noticiamos no Giro Semanal #12, no caso da mathjs-min
).
É reconfortante saber que a Microsoft tem se preocupado com esse aspecto - a cada passo dado, nos aproximamos de um ambiente mais seguro não só para os desenvolvedores mas também para todos os usuários dos softwares.
Meme da Semana
Meme da Semana #2 (para compensar o tamanho não usual do artigo)

Obrigado por ter lido até aqui! Se ainda não é inscrito e gostaria de receber essas atualizações semanais diretamente no seu e-mail, basta se cadastrar abaixo!