TDD está morto? (Versão IA)
O que muda quando a IA escreve tanto o código quanto os testes de unidade
O que muda quando a IA escreve tanto o código quanto os testes de unidade
IA, coding agents e o desafio de escalar o desenvolvimento de software sem escalar a supervisão.
Um caso real onde utilizamos o modelo mental do Atomic Design para construir componentes React.
Como podemos utilizar o Atomic Design para administrar a complexidade, favorecendo a legibilidade, escalabilidade e flexibilidade do código.
Na minha última publicação sobre como fizemos a descoberta dos domínios (DDD) do RD Station Marketing através do EventStorming, eu mencionei como a decisão de utilizar Outcomes foi crucial para dividir o negócio em domínios.
Em meados de 2020, quando a RD Station ainda se chamava Resultados Digitais, a área de engenharia e produto já possuía aproximadamente 40 times distintos, resultado de um crescimento acelerado.
Com a introdução do hook useContext ficou mais prático de trabalhar com estado global no React, sem a necessidade de usar vários consumers no JSX. Porém, ainda há a necessidade de declarar o Provider dentro JSX, então sem perceber podemos entrar no Provider Hell como este:
Em 2019 escrevi um série de 5 artigos explicando passo a passo como refatorar um código legado em um projeto React:
Com a introdução dos Hooks na versão 16.8 do React, surgiu uma nova forma de utilizar suas funcionalidades usando apenas funções, com conceitos e regras diferentes dos que já conhecíamos usando classes.
Para você se preparar e ficar atualizado, eu preparei uma lista com as novidades do JavaScript que terá um grande impacto na forma em que escrevemos o código.
Recentemente o Open Source teve um impacto enorme na minha mudança de emprego, mas agora que eu parei para refletir sobre isso, eu vejo que ele vem transformando minha carreira desde o começo.
Code snippets são blocos de códigos dinâmicos e reutilizáveis. Você pode usar extensões que já possuem vários snippets prontos e você pode criar para aqueles seus códigos que você digita repetitivamente.
Para fechar com chave de ouro, esta série termina com algumas conclusões sobre qualidade de software, com alguns mitos e verdades que precisam ser esclarecidos para evitar a criação de novos projetos legados.
O Redux é um contêiner de estado previsível e ajuda a manter a consistência do comportamento de uma aplicação. Sua utilização em projetos junto ao React se tornou tão popular que os desenvolvedores iniciantes em React passaram a usá-lo por obrigação, ignorando seu custo e efeitos colaterais.
No mundo real é bem mais complexo, como diria qualquer desenvolvedor ao ler um tutorial na internet. Para adentrar a complexidade de um projeto real, este artigo abordará uma alteração com um grande impacto no projeto de exemplo.
Neste artigo é introduzido a definição de refatoração, teste de unidade e teste de regressão, na prática é feito novos testes e a implementação de uma nova funcionalidade em um componente React.
Código legado é uma dor que atinge em cheio o coração de qualquer programador. Com a evolução do desenvolvimento WEB, tecnologias emergentes trouxeram grande robustez para o que hoje chamamos de front-end, com isso vieram novos desafios de como escrever um código limpo. Nesta série de artigos mostrarei algumas dicas de como trabalhar em um projeto React com código legado.
Já tem alguns anos que adotei o Visual Studio Code como minha IDE principal para desenvolvimento web. Neste artigo vou mostrar como eu o turbinei com plugins e configurações para ser muito mais produtivo.
Criar rotas é uma tarefa bem simples, a maioria dos frameworks já dão suporte nativo, mas com o crescimento do projeto algumas decisões podem dificultar a manutenção. Neste artigo vou dar uma sugestão de como organizar as rotas para facilitar o desenvolvimento de projetos complexos. Os exemplos estarão usando apenas as bibliotecas React e React Router, mas o padrão pode ser usado para qualquer biblioteca de front-end ou até mesmo de back-end. O React Router também possui suporte para rotas estáticas e pode ser usado no Rails, Express, Koa, Ember, Angular, por exemplo.
As reuniões diárias, conhecidas no XP como “Reuniões em Pé” (Stand Up Mettings) e no Scrum como “Scrum Diário” (Daily Scrum) são práticas bem simples e comumente adotadas, mas o que mais presenciei nas empresas foram monólogos entediantes feitos por um grupo de pessoas, sem valor nenhum, apenas mais um ritual burocrático sem sentido. Neste artigo vou dar sugestões de como trazer os benefícios prometidos, deixando o Daily mais produtivo.
Minha palestra no Rio Sul Valley Dev Summit 2017:
Dia 25 de novembro de 2017 participo como palestrante da terceira edição do Dev Summit, agora sob o guarda-chuva do Rio Sul Valley.
A missão era simples: enviar uma mensagem não bloqueante de sucesso ou erro em resposta a uma requisição assíncrona. Seria simples se não fosse pelas palavras em negrito, pois me deparei com várias questões de arquitetura do projeto que está em React com Redux, e ao pesquisar a melhor solução eu vi vários artigos em blog inconformados com o problema e dando suas sugestões de como deveria ficar, só que nenhuma dessas soluções me deixou confortável. Então neste artigo eu trago uma alternativa, expondo passo a passo as questões levantadas e as decisões tomadas para implementar essa solução.
Escrever uma user story é muito mais do que descrever uma tarefa usando uma receita, ela é a base para construção e evolução de um produto usando metodologia ágil (Scrum, Kanban, etc), então saber criá-la da maneira certa é fundamental para a criação de valor na sua entrega.
Depois de muitas semanas remodelando o novo site, ficou pronto! Veja como ficou o resultado:
No dia 12/05/2015 às 20:00 será exibida minha palestra intitulada “Como ser contratado como desenvolvedor Sênior”.
Abaixo está minha palestra para o Web Dev Summit 2015, feita utilizando JavaScript e está com código livre no GitHub:
Dia 21 de março estarei palestrando sobre Node.js no Web Dev Summit 2015, que será em Volta Redonda, RJ. Falarei um pouco sobre a experiência que tive em um projeto de API utilizando Node.js, desde o motivo por ter o escolhido, passando pelo processo de desenvolvimento até seus resultados.
Recentemente o David Heinemeier Hansson (DHH) publicou um post com o polêmico título “TDD is dead. Long live testing.” (TDD está morto. Longa vida ao teste) que teve grande repercussão e a comunidade tem falado só sobre isso ultimamente. E isso não poderia ter acontecido em melhor hora, pois eu estou exatamente preparando um treinamento de TDD e BDD, então estou com muita informação para debater o assunto.
Quem não já se pegou no google procurando por plugins em JQuery? A Unheap tornou esse trabalho mais fácil, criou uma plataforma organizada com diversos plugins de boa qualidade, com opções para todos os gostos.
Como você reagiria a uma entrevista em que você não precisa levar currículo, mas que levasse um trecho de código que você tenha orgulho de ter feito?
No dia 29/11/13, em São José dos Campos (SP), ocorreu a edição de 2013 do RuPy Conference Brazil e estive lá marcando presença. Este ano teve 3 trilhas: Ruby, Python e JavaScript. Vou resumir algumas palestras que achei interessante. Não dava para assistir todas, porque as trilhas corriam em paralelo, mas consegui assistir ótimas palestras.
Abra sua IDE e coloque o seguinte código:
Resumo das palestras que assisti no Agile Brazil 2013:
O Foundation 4 e o Twitter Bootstrap 2.3 são dois excelentes front-end frameworks, são tão bons que chega a ser complicado a decisão de escolher qual dos dois usar em um projeto web. Neste artigo irei expor minha experiência em usar ambos frameworks, em projetos semelhantes, demonstrando a facilidade e dificuldade que encontrei em cada um.
Há várias formas de testar se um método irá lançar um exceção que funcionam, porém, quando o teste não passa, o programador fica perdido e precisa utilizar do debug para ver onde está o problema. Isso não é uma boa prática, pois a mensagem do teste deve ser suficientemente clara. Mostrarei uma forma eficaz de se testar uma exceção no Java.
Seu programa é lento? Seu código demora a ser executado? Seu aplicativo ocasiona estouro de memória? Então acabaram seus problemas! Neste artigo irei citar 5 boas práticas simples para otimizar seu código, mas que fazem toda a diferença quando não se a praticam. Você poderá usar essas dicas em qualquer linguagem orientada a objeto, como Java, C, C++, PHP, Ruby, entre outras.
Para resolver um problema é preciso saber onde focar para obter melhores soluções. Quando se foca no problema, você pode achar uma solução, mas esta solução pode gerar novos problemas, mantendo este foco, pode acabar criando uma cascata infinita de problemas. Ao focar na solução do problema, você pode resolver o problema sem efeitos colaterais e ficar livre para dar atenção ao que interessa.
Assim como outras plataformas para dispositivos móveis, o Android oferece a opção de desenvolver código em linguagem nativa em seus aplicativos, como as linguagens C e C++. Neste artigo irei abordar o que é e como é feito o desenvolvimento nativo para Android, e quais são suas vantagens e desvantagens.
Muito dos profissionais de TI possuem o costume de trabalhar em projetos em casa no seu tempo livre, só que alguns ficam só na vontade e outros tentam e não conseguem dar continuidade. Neste artigo apresento 5 dicas importantes que irão lhe ajudar a começar seu projeto e dar continuidade ao mesmo.
Nesta dica irei abordar sobre boas práticas (best practices) de como definir o evento onClick dos botões no Android.
Existem várias vantagens em utilizar a imutabilidade. Uma vantagem muito forte é a otimização de memória, a própria API da linguagem Java usa a imutabilidade como uma vantagem para fazer cache e reaproveitamento de instâncias.
!Modelo institucional Empresa é o navio onde os navegantes estão. Políticas são as velas que levam o navio ao seu destino. Visão é o destino do navio, onde se quer chegar, seu objetivo. Missão é o caminho que o navio irá percorrer até chegar ao seu destino. Valores são os limites que o navio pode ir para não se desviar do seu caminho e poder atingir seu destino.
Para quem ainda não se familiarizou com o Git, fica a dica de um ótimo curso grátis:
Olá Visitante! Hoje estou inaugurando meu blog. Para quem ainda não me conhece, meu nome é Bruno Nardini, ou somente Nardini para quem já me conhece, e sou profissional de TI especializado em desenvolvimento de softwares. Satisfeito por trabalhar na minha área de interesse busco me manter ativo na comunidade com projetos, eventos, grupos de discussões, redes sociais e agora com essa nova iniciativa de fazer um blog para compartilhar meu conhecimento e experiência.