#135 - As 3 principais lições do livro Philosophy of Software Design


Hey! 👋

Já conhece o blog da Codecon?

A gente tá publicando uns artigos muito massas por lá! O último foi o “Como se tornar um Engenheiro de Software mais efetivo” com a participação super especial do Elton Minetto.

Tamo sempre postando conteúdo novo. Acompanha a gente!

Até mais,
Gabriel Nunes (@nunesgabriel)

As 3 principais lições do livro Philosophy of Software Design

Sabe aquela bagunça no código que começa pequena e, de repente, parece um emaranhado de fios soltos? O livro A Philosophy of Software Design, de John Ousterhout, traz 3 dicas pra evitar essa cilada:

1. Tolerância zero à complexidade

Complexidade no código é tipo mofo: começa de leve, você ignora, e quando vê, tomou conta de tudo. O autor explica que isso acontece quando pequenas mudanças alteram configurações gigantes, o código vira um labirinto e você nem sabe mais onde alterar.

Exemplo prático: imagine um sistema de pedidos onde a lógica de desconto está espalhada por vários lugares. Se precisar mudar algo, tem que caçar tudo! Uma solução? Centralizar a lógica em um único lugar para evitar esse caos.

Moral da história: não caia na armadilha do “só essa duplicaçãozinha aqui não vai fazer mal”. Ela se acumula e, quando percebe, seu código parece um filme de terror.

2. Código pequeno ≠ código melhor

Muita gente acha que dividir tudo em métodos mínimos deixa o código mais organizado. Mas essas funções sempre foram usadas juntas, separá-las só complicará a vida.

Exemplo prático: no processo de cadastro de usuário, tem métodos separados para validar, salvar no banco e mandar e-mail. Mas eles sempre andam juntos! Uma solução? Juntar tudo num único método, tornando o código mais complexo e intuitivo.

Moral da história: separar só por separar pode ser pior. O que importa é a simplicidade, e não o tamanho da função.

3. Tratamento de exceções: o vilão da complexidade

Lidar com falhas no código é essencial, mas, se feito da forma errada, pode se tornar um verdadeiro caos. O autor aponta que a maneira como os erros são tratados podem acabar gerando mais confusão do que soluções.

O dilema: você deve resolver o problema imediatamente ou simplesmente repassá-lo para quem chamou o método? A segunda alternativa pode desencadear um efeito cascata, tornando o sistema ainda mais complexo.

Moral da história: gerenciar erros com cautela evita que o código fique repleto de dúvidas do tipo “E agora? O que faço com isso?”.

Conclusão

Esse livro é um tapa na cara de quem acha que “qualquer código que funciona tá bom”. Simplicidade e organização são essenciais para um código saudável.

Um recado do patrocinador 📣

Sabia que por trás de uma conta digital completa, que já transformou a gestão financeira de mais de 180 mil negócios, o Asaas conta com uma área de tecnologia com mais de 200 profissionais? Desses, mais de 110 fazem parte dos times de Engenharia de Software, que possuem uma cultura de trabalho única e pautada em princípios para manter a régua de qualidade do produto:

  • Foco na solução: O time não segue requisitos cegamente ou de maneira automática,mas mergulha nos desafios para entender o problema e ajudar a desenvolver soluções duradouras.
  • Manter simples: É mais um dos princípios seguidos, pois acreditam que soluções simples e de fácil manutenção permitem que a área se mova rapidamente.

Esses valores se sustentam por uma forte cultura de colaboração, onde ideias são compartilhadas, feedbacks são trocados e aprendizados acontecem todos os dias!

Se você se identifica com a forma que o Asaas faz software e também quer voar alto, confira a oportunidade que melhor se encaixa com você.

🌐 web

Já ouviu falar do omg.lol? Basicamente, é um playground digital cheio de ferramentas legais: páginas personalizadas, redirecionamento de links, um mini-blog, pastebin, hospedagem de imagens, integração com Mastodon e até um sistema de status sem likes ou seguidores. Tudo com um ar nostálgico da “velha internet” e uma comunidade incrível.

♟️ xadrez

Quem aí assistiu O Gambito da Rainha e quis virar um gênio do xadrez? Muita gente pode ter pensado nisso, mas quando percebe que não é fácil acaba desistindo. Porém, teve alguém que ficou tão frustrado quando percebeu que não era um mestre enxadrista, que resolveu criar um método pra se tornar bom na coisa. Com uma rotina de treinos de 20 a 30 minutos por dia durante nove meses, essa pessoa passou dos piores 5% para encostar nos 5% melhores do Chess.com. Será que você também consegue?

♾️ DevOps

Ao longo dos anos, a busca pela automação no DevOps levou muitas empresas a cortarem suas equipes de QA, acreditando que isso tornaria o processo mais ágil. No entanto, os desenvolvedores não assumiram essa responsabilidade, e a qualidade do software sofreu. Sem rastreamento adequado de bugs, triagem eficiente e testes completos, os problemas se acumularam. No fim, a decisão de remover o QA não trouxe mais velocidade – apenas mais falhas e frustração para as equipes.

🔻 Ruby

Ruby pode até ter saído dos holofotes, mas para quem usa, é paixão pura! A linguagem não só facilita a vida do programador, como também traz um prazer genuíno ao escrever código. Sua expressividade permite que o código pareça quase uma linguagem natural, tornando comentários muitas vezes desnecessários. Além disso, a comunidade Ruby é um show à parte: acolhedora, colaborativa e cheia de gente apaixonada. No fim das contas, Ruby não é apenas uma linguagem, é um lar para quem gosta de programar com felicidade.

🔎 rastreamento

Já quis entender melhor o que está rolando no seu programa? Então você vai curtir esse catálogo com várias ferramentas de rastreamento para monitorar e visualizar dados como um verdadeiro ninja do debug! Tem de tudo um pouco: desde clássicos como eBPF e QEMU até ferramentas novinhas. O segredo do rastreamento é coletar dados com timestamps e jogá-los em uma interface de linha do tempo – bem mais visual e intuitivo do que um monte de texto perdido em logs.

🗄️ banco de dados

Você já selecionou um banco de dados para um projeto sem realmente entender as diferenças entre eles? Se sim, pode estar na hora de voltar para os fundamentos. Veja esse resumo dos livros Database Internals, de Alex Petrov e Designing Data-Intensive Applications, de Martin Kleppmann, e aprenda o essencial para fazer a escolha certa.

No episódio da semana discutimos o motivo pelo qual as pessoas odeiam o SCRUM e também o que poderia ser feito pra melhorar (ou não).

Escute no Spotify, ou no seu agregador preferido.

Tem alguma pergunta? Só responder o e-mail!

R. Dr. João Colin, 1285, Joinville, SC 89204-001
Desinscrever-se · Preferências

code(weekly)

Junte-se à 7.500+ devs e receba e-mails semanais com a melhor curadoria de artigos, repositórios e outros links interessantes da área tech.

Read more from code(weekly)

Hey! 👋 Em abril ainda tem meetups da Codecon pra movimentar a comunidade. Bora? 👉 23/04 - Meetup Codecon - São Paulo - presencial FIAP 👉 24/04 - Meetup Codecon - Curitiba - presencial Pinhão Hub👉 29/04 - Meetup Codecon - Blumenau - presencial Balbúrdia Blumenau Mais informações aqui! Até mais,Gabriel Nunes (@nunesgabriel) Segredos de quem manja muito de código: como trabalhar melhor, não mais Lições acumuladas ao longo de décadas vendo (e ensinando) programadores. Spoiler: os bons têm padrões...

Hey! 👋 As INSCRIÇÕES ESTÃO ABERTAS PARA O DATACON! 🔥 A Datacon é um evento para quem não só fala de dados, mas põe a mão na massa e faz acontecer. Junte-se a referências do mercado em discussões sobre data science, machine learning, big data, inteligência artificial, data engineering e mais. Muito networking e conhecimento aplicável. Saiba mais e faça a sua inscrição agora mesmo! Até mais,Gabriel Nunes (@nunesgabriel) Pensando em criar o seu próprio sistema de faturamento? Desista! Montar um...

Hey! 👋 Tem novidade na lojinha! Agora a DVLPR tem umas mochilas maneiras. 🎒🔥 Pra você carregar o note, aquele monte de cabos e até uma térmica de café. Acesse o site e conheça as novidades e todos os nossos produtos. Até mais,Gabriel Nunes (@nunesgabriel) A internet virou um shopping lotado A internet está cada vez mais cheia e difícil de se destacar, como um shopping lotado. Antigamente, a internet era simples, com poucos sites e conteúdos mais fáceis de acompanhar. Com o tempo, surgiram...