Executando verificação de segurança...
9

Depurando o código com um pato de borracha

O que a Wikipédia diz:

Na engenharia de software, a depuração com pato de borracha é um método de depuração de código. O nome é uma referência a uma história do livro O Programador Pragmático em que um programador explica seu problema para um pato de borracha, descrevendo linha a linha o código que já foi escrito. Muitos outros termos existem para essa técnica, muitas vezes envolvendo diferentes objetos inanimados ou até animais de estimação, como um cachorro ou um gato.

O ponto aqui é que às vezes quando tentamos entender o que está errado no nosso código, essa técnica pode nos ajudar a falar sobre isso.

Em um mundo ideal, apenas conversaríamos com nosso colega ou parceiro de algum projeto, ou apenas ouvir a si mesmo, vocalizar o seu código em voz alta, deveria fazer, as vezes, dá aquele “clique” e então você fica como espere um minuto, deixa pra lá, entendi, só pq você se ouviu falando ilogicamente quando você pretendia algo lógico.

Agora, nem sempre temos colegas ou parceiros de negócio, ou até mesmo amigos com quem estamos trabalhando num projeto. E não costumamos ter familiares ou amigos que querem ouvir sobre nosso código. E então uma excelente muleta para esse parceiro de conversa seria literalmente um pato de borracha.

Mas é claro que, além das formas de depuração, falar sobre seus problemas de código é uma coisa maravilhosamente valiosa. E se seus amigos ou familiares estão dispostos a ouvir, sobre algum código de baixo nível que você está escrevendo e algum bug que você está tentando resolver, ótimo!

Mas na ausência disso, converse com um bicho de pelúcia em seu quarto. Fale com um pato de borracha, se você tiver um. Fale em voz alta ou pense em voz alta. É um hábito maravilho e atraente de obter, por que, só de ouvir a si mesmo, vocalizar o que você pensa que é lógico, o ilógico muitas vezes saltará aos olhos. 🤝

Carregando publicação patrocinada...
3
3

Atualmente ta todo mundo praticando isso sem querer com as IA's, é o perfeito caso de objeto inanimado para falar sobre oque você está implementando, e ainda que responde, diversas vezes já me peguei escrevendo um prompt para certa feat e quando fui dar aquela ultima re-lida antes de enviar tive o click na cabeça de como resolver, ou pensei em uma maneira melhor de fazer oque estava tentando.

As vezes a gente só precisa por pra fora oque estamos pensando.

1

Muito bem pontuado, kurt! As IA's é um excelente exemplo de um objeto inanimado, só que péssimo para 'conversamos' sobre o nosso código quando se é iniciante nessa área, pois quebrar cabeça pra solucionar os problemas sozinhos é um passo valioso e necessário. 🤝

Não só isso, como é necessário abrir o capô e entender tudo que funciona por debaixo, e isso leva tempo e esforço, muito esforço. Não existe atalhos para se tornar um programador competente, na verdade, isso vale pra qualquer área, a chave é a prática deliberativa: não apenas fazendo de novo e de novo, mas desafiando-se com uma tarefa que está além de sua capacidade atual, tentando, analisando seu desempenho e depois de fazê-lo e corrigindo quaisquer erros.

Então repita. E repita de novo: até Mozart, que era um prodígio musical aos 4 anos, levou mais 13 anos até começar a produzir música de nível mundial.

Como disse Alexander Pope:

“Um pouco de conhecimento é uma coisa perigosa.”

3

Muito interessante, acredito que de forma geral é uma prática antiga, cresci vendo minha mãe e avó falando sozinhas as vezes para validar seus próprios pensamentos antes de fazer parte de uma conversa.
Mas estive pensando, e apenas para descontrair, em como agiria minha mulher, se me entrasse a fazer uso de dessa técnica, que para ela é "falar sozinho" kkkk. Abraços

1
2
2

Com certeza, teknolista! Eu arrisco dizer que, essa tecnica ajuda em muitas aréas, em muitas mesmo! Tornar isso um hábito é mais um tijolinho pra nossa senioriedade. 🤝

2
1
2

Rubberducking 🦆! Eu desconhecia o conceito mas conhecia seus efeitos.

Quando você pede ajuda para um colega, no ato de explicar o problema, às vezes vem a solução, sem mesmo seu colega abrir a boca. Isso já me aconteceu várias vezes e eu não sabia o nome disso, acho que é um pouco do Rubberducking, claro que não precisa ser aplicado apenas no debugging.

Pedi ajuda à IA 🤖(use a IA ao seu favor) para trazer mais conceitos semelhantes.

"Vamos explorar algumas teorias e conceitos que explicam por que falar (ou "externalizar") os pensamentos nos ajuda a processar informações:

1. Teoria da Dupla Codificação (Allan Paivio)
Conceito: Essa teoria, proposta por Allan Paivio, sugere que processamos informações de duas maneiras principais: verbal e não-verbal (ou imagética). Quando verbalizamos nossos pensamentos, estamos ativando o sistema de codificação verbal. Se também estamos visualizando o problema (por exemplo, mentalizando o código), estamos usando ambos os sistemas.

Relevância para a verbalização: Ao verbalizar, estamos criando uma representação verbal da informação, que se soma à representação visual ou conceitual que já temos. Essa dupla codificação fortalece a memória e a compreensão, pois a informação é armazenada de maneiras diferentes e pode ser recuperada por múltiplos caminhos. É como ter um "backup" mental do seu pensamento!

2. Efeito de Produção (Production Effect)
Conceito: O efeito de produção é um fenômeno na psicologia da memória que demonstra que itens de informação lembrados são mais bem recordados se foram "produzidos" (por exemplo, lidos em voz alta, falados, escritos) durante o estudo, em comparação com itens apenas lidos silenciosamente.

Relevância para a verbalização: Quando você fala seus pensamentos em voz alta, você está "produzindo" essa informação. Esse ato de produção adiciona uma camada extra de processamento (motor e auditivo) que torna a informação mais distintiva e, consequentemente, mais fácil de lembrar e processar. É por isso que explicar um conceito para si mesmo (ou para um patinho) ajuda tanto na aprendizagem!

3. Metacognição e Autoexplicação
Conceito: Metacognição é o "pensar sobre o pensar", ou seja, a capacidade de monitorar e regular os próprios processos cognitivos. A autoexplicação é uma estratégia metacognitiva onde o indivíduo explica a si mesmo os novos conceitos, procedimentos ou a lógica de um problema.

Relevância para a verbalização: A verbalização é um componente chave da autoexplicação. Ao se autoexplicar, você é forçado a:

Identificar lacunas no seu entendimento: Se você não consegue explicar algo claramente, percebe que não entendeu completamente.

Organizar seus pensamentos: A explicação exige uma estrutura lógica, o que ajuda a organizar a informação na sua mente.

Elaborar a informação: Você não apenas repete, mas reformula e conecta a nova informação com o que já sabe.

Monitorar o progresso: Ao verbalizar os passos para resolver um problema, você pode verificar se está no caminho certo.

4. Protocolo "Think-Aloud" (Pensar em Voz Alta)
Conceito: Essa é uma técnica de pesquisa em psicologia cognitiva e usabilidade onde os participantes são instruídos a verbalizar todos os seus pensamentos, sentimentos e ações enquanto realizam uma tarefa. Não é bem uma teoria, mas uma metodologia que se baseia na premissa de que a verbalização dos pensamentos internos pode nos dar insights sobre os processos cognitivos.

Relevância para a verbalização: O sucesso do "think-aloud" em revelar processos de pensamento apoia a ideia de que a verbalização externa reflete (e talvez até auxilia) o processamento cognitivo interno, tornando-o mais acessível e manipulável.

Essas são algumas das principais ideias que sustentam a eficácia de verbalizar e externalizar pensamentos. É como se a nossa mente, ao "ouvir" a si mesma, pudesse analisar e ajustar melhor o que está pensando!"

Por conta própria, trouxe mais um conceito que apoia essa ideia, e você pode usar para aprender e para ensinar. Também escrito por IA, mas não se prenda a isso.

5. Técnica Feynman
Leva o nome do renomado físico e ganhador do Prêmio Nobel, Richard Feynman, conhecido por sua incrível habilidade de explicar conceitos complexos de forma simples e intuitiva. A essência da técnica é justamente essa: se você não consegue explicar algo de forma simples, você ainda não entendeu completamente.

Ela se baseia em quatro passos principais:

  1. Escolha um Conceito: Selecione o tópico ou conceito que você deseja aprender. Pode ser qualquer coisa: um conceito de programação, uma teoria de física, um evento histórico, etc.
  2. Ensine a uma Criança (ou a um Patinho de Borracha!): Escreva ou fale em voz alta sobre o conceito como se estivesse explicando para alguém que não tem nenhum conhecimento prévio sobre o assunto – como uma criança de 5 anos ou, no nosso caso, um patinho de borracha! Use uma linguagem simples e evite jargões.
  3. Identifique Suas Lacunas: Enquanto você explica, você inevitavelmente vai se deparar com pontos onde sua explicação não é clara, onde você hesita, ou onde percebe que não entende bem o que está dizendo. Esses são os seus "pontos cegos" ou lacunas de conhecimento. Anote-os.
  4. Revise e Simplifique: Volte ao material original (livros, artigos, vídeos) para preencher essas lacunas que você identificou. Entenda os pontos onde você falhou. Depois, repita o passo 2, explicando o conceito novamente, mas agora com o novo entendimento. Continue esse ciclo até que você consiga explicar o conceito de forma clara, concisa e sem hesitações, usando a linguagem mais simples possível.

Se você se pegar falando sozinho, você não está tão doido assim.🤯🤪

1