Joel Spolsky: Como fazer perguntas de programadores mais experientes corretamente

As regras Usenet, Lavagem cerebral e lavagem estúpida e estúpida


imagem


Joel Spolsky, abril de 2018

Há uma bicicleta popular entre os desenvolvedores que, se o seu código não funcionar, você precisará pegar um pato de borracha e dizer a ela - sim, pato - como esse código deve funcionar: explique cada linha o que deve acontecer, o que saiu no final, etc. Os desenvolvedores, que testaram esse truque de vida, argumentam que, no processo de discussão detalhada do problema, o objeto inanimado geralmente consegue encontrar sua solução.

Este é um dos truques que podem ajudar a resolver o problema por conta própria durante o processo de programação. Outra maneira é aprender a depurar um programa (depuração) com base em "dividir e conquistar".. Não é possível quebrar mil linhas de código por um único erro. Mas você pode dividir o código em duas partes e ver o que acontece no primeiro semestre e o que acontece no segundo. Faça isso de cinco a seis vezes e você chegará à mesma linha com o erro.

Com base no exposto, é interessante ler a lista de verificação de John Skeet para escrever a pergunta perfeita . John pergunta: "Você leu cuidadosamente a pergunta para apreciar sua inteligibilidade e compreensibilidade para uma pessoa que não viu as informações que você tem em seus olhos?" Em geral, este é um teste com um pato de borracha. Outra opção: "Se o código estiver incluído na pergunta, você o inseriu em um programa completo, porém breve?" A ênfase no programa curto é, de fato, um teste para saber se você tentou “dividir e conquistar” ou não.

Grosso modo, a lista de verificação de John sugere que as pessoas primeiro tentem fazer o que programadores experientes já tentaram e depois pedem ajuda a outras pessoas.

Infelizmente, nem todo mundo já ouviu falar dessa lista de verificação. Ou talvez ele tenha ouvido, mas escolheu ignorar. A pessoa tem um problema com o código, sabe que existe um sistema de perguntas e respostas do Stack Overflow que pode ajudá-lo e não tem tempo para ler o protocolo de algum nerd sobre como fazer perguntas.

Muitas vezes, há discussões sobre se o Stack Overflow deve permitir perguntas dos novatos à programação.

Quando Jeff e eu discutimos o design inicial do sistema, contei a ele sobre um grupo sobre a linguagem de programação C, popular nos anos 80 na rede Usenet. Foi chamado comp.lang.c .

C é uma linguagem de programação simples e limitada. Você pode encontrar o compilador C apenas 100 KB , portanto, como você pode imaginar, se você criar uma discussão exclusivamente para C, os tópicos da conversa terminarão muito rapidamente.

E mais uma coisa. Nos anos 90, C era uma linguagem para estudantes que estavam começando a se envolver em programação. E esses mesmos alunos costumavam ter os problemas mais primitivos com C.. E eles imediatamente correram com perguntas em comp.lang.c.

E os idosos estavam entediados lá. Muito chato. Eles estão cansados ​​de náuseas nos alunos que entram no grupo todo mês de setembro e perguntam por que eles não podem retornar um conjunto de caracteres de uma função etc. Cada. Setembro.

Esses veteranos também inventaram o conceito de FAQ (Perguntas frequentes). Assim, eles pareciam dizer "pelo amor de Deus, pare de perguntar o que a Usenet já foi respondida cem vezes", ou seja, o pessoal da velha escola queria responder apenas às perguntas mais maravilhosas e esotéricas que 99% dos programadores comuns de C geralmente não eram necessários. O grupo de notícias estava desaparecendo porque, de fato, atendia apenas um pequeno grupo de pessoas que estavam por aí há cerca de uma década.

Foi sobre isso que Jeff e eu conversamos. O que devemos fazer com as perguntas dos iniciantes?
No final, foi decidido que os recém-chegados deveriam ser. O Stack Overflow não tem o conceito de perguntas "muito simples" ... Mas, ainda assim, é melhor primeiro encontrar a resposta antes de procurar outras pessoas para obter ajuda.

Entendemos que alguns programadores mais "avançados" podem achar chato ler as mesmas perguntas simples e não mais entrarão em contato conosco. Está tudo bem - o Stack Overflow não obriga ninguém a ficar sentado por toda a vida. Cansado de ler perguntas para iniciantes sobre o fato de que eles não retornam matrizes locais de caracteres ("funciona para mim!"), E você prefere passar o resto da vida classificando álbuns de música? Como você deseja, seu direito.

O fato de você estar ingressando na programação não significa que sua pergunta não tem um lugar para estar no Stack Overflow. Eu até fiz especificamente a pergunta "Mas como mover a tartaruga no LOGO ? ”Para mostrar que os designers de sites estão felizes em ver iniciantes em casa.

Mas, como sempre, de acordo com a lei das consequências não intencionais, essa questão quase causou um escândalo - e nem por causa de sua simplicidade. O problema é que abordei esse assunto de má fé. Jeff Atwood disse bem a esse respeito : “Uma pergunta simples não é ruim. É ruim quando não há esforço para encontrar uma resposta. " ( Ah, bem, isso ).

Para iniciantes, o número de pontos que devem ser preenchidos antes de fazer uma pergunta parece desnecessário e, às vezes, simplesmente estranho. É como um festival do Burning Man. Você acha que vai a uma festa incendiária em algum lugar do deserto e, à chegada, eles gritam na sua cara cerca de 10 princípios, “Auto-expressão radical” e na mesma linha, portanto, após lavar a louça, você precisa coletar cada gota de água de um lago seco e levar para casa - para entregar, se necessário. Cada comunidade tem suas próprias regras e, a princípio, elas podem parecer bizarras e divertidas, ou se você está apenas tentando fazer com que algum código funcione, elas são estranhas e abstrusas.

Muitas das regras do Burning Man que tornam o festival tão bem-sucedido parecem muito abstratas, mas fazem sentido. O Bureau de Administração de Terras dos EUA, que permite um festival no deserto, exige que nenhuma água contaminada seja derramada no chão, porque o solo argiloso não absorve bem, o que pode levar ao crescimento microbiano e doenças, mas por que explicar tudo se você pode apenas dizer que se os visitantes não tirarem a água, o festival não será mais realizado?

A mesma coisa com o estouro de pilha. Não permitimos que perguntas muito abstratas sejam publicadas (“Como compor um programa?”). Nossa regra geral é: se a resposta para sua pergunta for do tamanho de um livro inteiro, você desejará demais. É como se você escrevesse "Meu rim parece doer. Como cortá-lo? Essa pergunta parece inadequada e até ofensiva para os cirurgiões que aprendem a fazer isso há dez anos.

O que me incomoda é que, ao tentar educar uma nova geração de desenvolvedores, contando com a diversidade e a inclusão, também estamos construindo barreiras para quem quer aprender programação. De fato, de várias maneiras, as regras específicas do Stack Overflow são apenas um obstáculo. Pior ainda é a negligência e grosseria dos recém-chegados aos fóruns.

Estou muito preocupado com isso. Como desenvolvedor, você tem uma oportunidade sem precedentes de criar cenários futuros . E as limitações que o Stack Overflow lança na cara dos jovens programadores prejudicam não apenas eles, mas o próprio sistema do Stack Overflow, afugentando os membros em potencial da comunidade. Programar não é sem problemas; nosso objetivo é facilitar.

No próximo ano, planejamos trabalhar duro nessa área. Não podemos mudar outras pessoas, torná-las mais gentis. Mas acho que podemos melhorar alguns aspectos da interface do usuário do Stack Overflow que motivarão as pessoas a serem mais cultas; por exemplo, podemos ajustar os prompts na página "Fazer uma pergunta" ou trabalhar com moderação reativa para que os próprios membros da comunidade possam sinalizar e reclamar de comentários rudes, o que não está acontecendo no momento.

Também estamos trabalhando em um novo recurso, graças ao qual você pode enviar sua pergunta a um pequeno grupo de pessoas de sua própria equipe, o que pode ajudar a criar uma certa atmosfera amigável em uma enorme metrópole, que é o Stack Overflow.

Apesar de nos esforçarmos para tornar o Stack Overflow mais confortável, nosso principal objetivo sempre foi criar o melhor recurso do mundo para desenvolvedores de programas.

O programador estático médio nos chama 340 vezes. Essa é a nossa força. Existem outras fontes de informação sobre a criação de programas, mas há apenas um site em que os desenvolvedores confiam tanto e precisam cuidar - é como a Biblioteca do Congresso para programadores.



imagem
Aprenda os detalhes de como obter uma profissão procurada desde o início ou suba de nível em habilidades e salário fazendo cursos on-line SkillFactory:



Consulte Mais informação



All Articles