Olá!

Continuando o curso de qualidade no design de código, as aulas listam vários aspectos que são importantes para a produção de um código de qualidade, pensando mais na intenção e menos nas técnicas. É citado pelo instrutor que algumas técnicas e formas de exprimir intencionalidade serão abordadas em outros cursos dentro da plataforma Dev+Eficiente.

Fluidez na utilização dos conceitos e nas tecnologias do projeto

Quanto mais conhecimento e fludez a pessoa tiver sobre as linguagens de escrita do código, os frameworks sendo utilizados, as boas práticas bem documentadas, como KISS, SOLID, etc., os padrões de projeto se a linguagem é orientada a objetos, os padrões de linguagens funcionais, …, mais ela consegue focar na entrega de negócio que ela precisa fazer e na qualidade da entrega.

Domínio da IDE

A IDE de trabalho também é muito importante para que o foco seja na qualidade da entrega. Ela deve ser nossa aliada, e não um empecilho para a condução do trabalho. Para isso é essencial o domínio de teclas de atalho, automações de refatoração presentes na ferramenta, autocomplete, dentre outras funcionalidades. Idealmente, você deve ser um piloto de IDE!

Triturar requisitos e entender o negócio

Como visto no módulo anterior, você deve ser um triturador de requisitos, para que a solução que você esteja aplicando para o negócio seja muito clara, garantindo a qualidade na entrega do ponto de vista de expectativa do cliente. O mesmo vale para o entendimento do negócio como um todo. Você não deve se ater apenas a executar tarefas, sem saber qual o impacto do que está sendo feito. É preciso entender o que o seu produto faz, com que objetivo e que valor gera para o cliente e para a sua empresa.

Cognitive Driven Development

Cognitive Driven Development é um conceito que será aprofundado em outro curso específico, mas entenda que é uma forma de medir complexidade de código e desenvolver para que se limite a um valor máximo fixado pelo time. A ideia é que haja uma forma objetiva de definir complexidade, evitando discussões improdutivas, e mantendo o código num limite que minimize a carga cognitiva necessária para dar manutenção nele.

Alguns conceitos que podem ser desafiados

O princípio Open-Closed do SOLID, evitar acoplamento com frameworks, o mapeamento de DTO com classes externas, a estruturação em camadas como no Clean Architecture, todas essas coisas e outras além, são discutíveis em seus prós e contras dentro da implementação do seu projeto. O importante é que cada aspecto e possibilidade seja levada em consideração dado o contexto do seu negócio. Não é porque está num livro ou porque todo mundo aplica dentro da sua bolha, que serve pra você. Aquele sisteminha da padaria da sua tia vai funcionar muito bem totalmente acoplado com o Django 😎.

Existem no mundo mais sistemas de padaria do que sistemas tipo Netflix

O legado serve de aprendizado

Resista à tentação de achar que o legado é algo ruim. O legado é um sistema que registra um histórico de decisões com um contexto. Na pior das hipóteses você vai aprender a como não fazer algo. Uma das características mais difíceis e valiosas de se encontrar numa pessoa que desenvolve software é uma boa leitura e entendimento de código.

Testes precisam ser valiosos

Não há mais discussão sobre se os testes automatizados de software são importantes. Eles são! Mas como eles também são código e precisam de manutenção, garanta que eles entreguem valor, que eles testem as partes importantes do sistema e que eles aumentem a confiança na entrega de software.


Ontem eu decidi juntar os conteúdos para que o post ficasse um pouco mais rico e por isso ontem não houve postagem. Com isso creio que fecharei esse curso com o conteúdo de amanhã, ao trazer alguns guidelines de qualidade. Se os vídeos das aulas forem muito longos, eu posso juntar novamente em dois ou três dias.👋🏼