Todos os direitos deste guia pertencem a Eric Steven Raymond.
Artigo Original: http://www.catb.org/esr/faqs/smart-questions.html
A versão em português deste guia foi produzida por Marcos Machado e pode ser encontrada em blogofscience, sendo corrigida e adaptada por Gentoober para o presente post.
Introdução
No mundo dos hackers, o tipo de resposta que você obtém as suas perguntas técnicas depende muito mais de como você faz a pergunta do que da dificuldade em preparar a resposta. Este guia ensinará a você como fazer perguntas do jeito mais indicado para conseguir uma resposta satisfatória.
Agora que o uso do open source está bastante difundido, é mais comum você encontrar respostas de outros usuários, mais experientes, do que dos hackers. Isto é uma coisa boa: usuários tendem a ser um pouco mais tolerantes com os tipos de problemas que os novatos enfrentam. E ainda, tratar estes usuários como hackers, da maneira como recomendamos aqui é, geralmente, a maneira mais efetiva de conseguir respostas úteis deles também.
Se você nos der uma questão interessante para mastigar nós ficaremos gratos à você; boas perguntas são um estímulo e um presente. Boas perguntas nos ajudam a desenvolver nosso entendimento, e freqüentemente revela problemas que não conhecíamos ou sobre os quais nunca pensamos. Entre hackers, "boa pergunta" é um forte e sincero elogio.
Apesar disso, hackers têm a reputação de encarar perguntas simples com arrogância e hostilidade. De vez em quando aparentamos ser rudes com novatos e ignorantes. Mas isto não é verdade.
Nós somos, sim, hostis com pessoas que não querem pensar nem fazer seu dever de casa antes de fazer perguntas. Pessoas assim são dissipadoras de tempo - elas pegam e não devolvem, elas desperdiçam tempo que pode ser usado em questões de gente que merece uma resposta. Nós chamamos pessoas assim de "losers" (e por uma razão histórica, algumas vezes grafamos como "lusers"). N.T.: "Luser" é um trocadilho com as palavras "user" (usuário) e "loser" (perdedor, otário).
Para muitas pessoas, um computador é apenas uma ferramenta, um meio para um fim; eles têm coisas mais importantes para fazer nas suas vidas. Nós reconhecemos isso e não esperamos que todos tenham interesse nas questões técnicas que nos fascinam. Entretanto, nosso estilo de resposta é ajustado para aqueles que possuem este tipo de interesse e que desejam participar da solução de problemas. Isto não vai mudar. Nem deveria; se isso acontecesse, nós nos tornaríamos menos eficazes naquilo que sabemos fazer de melhor.
Nós somos (na maioria dos casos) voluntários. Nós reservamos um tempo nas nossas ocupadas vidas para responder perguntas e, às vezes, ficamos sobrecarregados delas. Então, nós as filtramos sem dó nem piedade. Em particular, nós jogamos fora questões de pessoas que aparentam ser "losers", para que possamos gastar nosso tempo de forma mais eficiente, em questões de "winners". (N.T.: vencedores)
Se você acha essa atitude condenável ou arrogante, reveja seus conceitos. Nós não estamos pedindo que se curve diante de nós - na verdade, o que muitos de nós mais queremos é tratá-lo como igual e recebê-lo em nossa cultura, se você fizer o esforço necessário para que isso seja possível. Mas é simplesmente inútil para nós tentar ajudar pessoas que não estão dispostas a ajudar a si mesmas. Tudo bem ser ignorante; mas não é legal bancar o "espertão".
Portanto, mesmo que não seja necessário ser tecnicamente competente para receber nossa atenção, você precisa apresentar atitudes que te levem a esta competência - mostrar-se preparado, atencioso, observador e disposto a ser um participante ativo no desenvolvimento de soluções. Se você não suporta este tipo de discriminação, sugerimos que você pague a alguém por um suporte comercial ao invés de pedir ajuda.
Se você decidir vir até nós para pedir ajuda, você não quer ser um perdedor. Você não quer nem se parecer com um perdedor. A melhor maneira de conseguir uma resposta rápida e precisa é perguntar como uma pessoa que possui confiança, inteligência e que precisa de ajuda em um problema bem específico.
Antes de perguntar
Antes de fazer uma pergunta, faça o seguinte:
Tente achar uma resposta pesquisando na Web;
Tente achar uma resposta lendo o manual;
Tente achar uma resposta lendo o FAQ;
Tente achar uma resposta por tentativa e erro;
Tente achar uma resposta perguntando a um amigo experiente;
Se você é programador, tente achar uma resposta lendo o código-fonte.
Quando você fizer uma pergunta, demonstre que você fez todas estas coisas antes; isto irá ajudar a esclarecer que você não está sendo uma esponja preguiçosa fazendo as outras pessoas perderem tempo. Melhor ainda, mostre o que você aprendeu fazendo todas estas coisas. Nós gostamos de responder questões de pessoas que demonstram que podem aprender com as respostas.
Use táticas como pesquisar no Google com o texto de qualquer mensagem de erro que você receba (e pesquise no Google Groups assim como na web). Isto pode levá-lo diretamente ao documento ou à thread da lista que irá responder à sua pergunta.
Prepare sua pergunta. Pense além. Perguntas corridas recebem respostas corridas, ou nenhuma. Quanto mais você demonstrar que investiu tempo e neurônios na solução do seu problema antes de pedir ajuda, mais provável será que você consiga recebê-la.
Nunca assuma que você merece uma resposta. Você não merece; você não está, afinal de contas, pagando por este serviço. Você irá ganhar uma resposta, se ganhar, fazendo perguntas substanciais, interessantes e intrigantes - uma que contribua com a experiência da comunidade ao invés de apenas extrair conhecimentos dos outros.
Deixar claro que você pode e quer ajudar no processo de desenvolver uma solução é um ótimo começo. "Alguém pode me indicar uma direção?", "O que está errado no meu exemplo?" e "Em qual site eu devia ter verificado?" é mais provável de receber uma resposta do que "Por favor, envie o procedimento exato que eu devo usar", pois assim fica claro que você está disposto a completar o processo se alguém apenas indicar a direção certa.
Quando você perguntar
Escolha cuidadosamente seu fórum.
Seja cuidadoso ao escolher onde você vai enviar sua pergunta. Você será ignorado ou tachado de idiota se você:
Enviar sua pergunta em um fórum que não trata do assunto;
Enviar uma questão muito básica em um fórum onde são esperadas questões tecnicamente mais avançadas, ou vice-versa;
Enviar a mesma pergunta para diversos fóruns ou newsgroups;
Enviar um email pessoal para alguém que não seja seu conhecido nem responsável direto por resolver seu problema.
Questões que estão inapropriadamente direcionadas fazem com que os canais de comunicação de se tornem irrelevantes. Não queremos isso.
O primeiro passo é, portanto, escolher o lugar certo. Novamente, Google e outros mecanismos de pesquisa são seus amigos. Use-os para encontrar os sites dos projetos que estejam mais intimamente relacionados aos softwares ou hardwares que estão lhe causando problemas. Normalmente eles possuem links para um FAQ (Resportas à Perguntas Freqüentes), para listas de discussões e seus respectivos históricos. Estas listas de discussões são o último lugar onde pedir ajuda se seus esforços anteriores (incluindo ler o FAQ) não lhe trouxerem uma solução. A página do projeto também pode descrever como reportar um bug; se for o caso, siga as instruções.
Enviar uma mensagem para uma pessoa ou um fórum com o qual não está familiarizado é o mais arriscado. Por exemplo, não pense que o autor de uma página informativa quer ser seu consultor gratuitamente. Não faça projeções otimistas sobre sua mensagem ser bem aceita - se você não tiver certeza, envie sua mensagem em outro lugar, ou não envie.
(...)
Não dê uma rajada de perguntas em todos os canais de comunicação de uma só vez, isto é o mesmo que sair gritando e acaba irritando as pessoas. Vá com calma.
(...)
Em geral, questões enviadas para um fórum público bem selecionado conseguem melhores respostas do que as mesmas questões enviadas para um fórum fechado. Existem muitas razões para isto. Uma é a quantidade de pessoas que podem responder. Outra é o tamanho da audiência. Hackers preferem ensinar algo que seja útil para muitas pessoas do que para poucas.
Fórum web e IRC freqüentemente dão aos novatos as respostas mais rápidas
Seu grupo local de usuários, ou sua distribuição de Linux, deve divulgar um fórum web ou um canal de IRC onde os iniciantes podem conseguir ajuda. Estes são bons lugares para começar, especialmente se você imagina ter topado com um problema relativamente simples e comum. Canais de IRC, quando divulgados, são um convite para entrar, fazer perguntas e receber ajuda em tempo real.
Se você está encontrando problemas em um programa proveniente de uma determinada distribuição de sistema (muito comum atualmente), é melhor fazer perguntas no fórum/lista da distribuição antes de tentar ir direto ao grupo do projeto. Os hackers de lá vão dizer "use nossa versão".
Antes de enviar mensagem para um fórum web, verifique se ele não tem um mecanismo de pesquisa. Se tiver, tente encontrar algumas palavras-chaves sobre o seu problema; isto pode ajudar. Se você fez uma pesquisa genérica em uma ferramenta de pesquisa na web, tente a mesma pesquisa no fórum, pois as ferramentas genéricas podem não ter indexado todo o conteúdo do fórum ou já tê-lo feito há muito tempo, não mostrando tópicos recentes.
Existe uma tendência crescente nos projetos em usar fórum web e canais de IRC para suporte, deixando o tráfego de email destinado para o desenvolvimento. Então, procure por estes canais primeiro quando estiver procurando ajuda em um projeto específico.
Use um subject específico e com significado
Em listas de discussão, newsgroups ou fórum web, o título da mensagem é sua chance de ouro para atrair, com 50 caracteres ou menos, a atenção de especialistas qualificados. Não desperdice esta oportunidade com "Por favor, me ajudem" (e, muito menos, "PRECISO DE AJUDA!!!"); mensagens assim são descartadas por reflexo. Não tente nos impressionar com sua angústia; ao invés, use este espaço para uma descrição super-concisa do seu problema.
Uma boa convenção para títulos/assuntos de mensagens, usada pelo suporte técnico de muitas organizações, é o "objeto - anomalia". A parte "objeto" especifica o que está com problemas e a "anomalia" descreve como o comportamento diverge o esperado.
EXEMPLOS:
Estúpido:
"AJUDA! Vídeo não funciona direito no meu laptop!"
Inteligente:
"XFree86 4.1 cursor do mouse distorcido, Fooware MV1005 vid. chipset"
Mais inteligente:
"XFree86 4.1 cursor do mouse na Fooware MV1005 vid. chipset - distorcido"
O processo de organizar o título no modelo "objeto - anomalia" vai ajudar você a organizar seu raciocínio sobre o problema. O que é afetado? Só o mouse ou outros gráficos também? Isto é específico do XFree86? Só da versão 4.1? Será que é específico do chipset Fooware? Só no modelo MV1005? Um hacker que olha esta mensagem pode imediatamente entender, de uma tacada só, o que está lhe causando problema e qual o problema que você está enfrentando.
De uma maneira geral, se imagine olhando para um índice de um arquivo de perguntas, só com o título delas sendo exibido. Faça seu título refletir sua questão de forma que o próximo sujeito que possua uma pergunta semelhante, ao pesquisar o arquivo de perguntas, consiga seguir esta thread até a resposta final ao invés de enviar a mesma pergunta novamente.
Seja claro e preciso sobre seu problema
Descreva os sintomas do seu problema ou bug cuidadosamente e de forma clara.
Descreva o ambiente em que isto ocorre (máquina, OS, aplicação etc.). Forneça a distribuição usada e o respectivo release (por exemplo: "Fedora Core 4", "Slackware 9.1" etc.);
Descreva a pesquisa que você fez para tentar entender o problema antes de fazer sua pergunta;
Descreva os passos que você deu para diagnosticar e tentar resolver o problema antes de fazer sua pergunta;
Descreva qualquer mudança recente no seu sistema possa ser relevante para o problema;
Faça o máximo possível para antecipar as perguntas que um hacker lhe faria, e tente respondê-las antecipadamente no seu pedido de ajuda.
Simon Tatham escreveu um excelente tratado sobre "Como reportar bug de forma efetiva" (em inglês). Eu recomendo fortemente que você o leia.
Quantidade não é precisão
Você deve ser preciso e informativo. Isto não é conseguido apenas despejando uma grande quantidade de código ou dados no seu pedido de ajuda. Se você tem um grande e complicado caso de teste que está te causando problemas tente podá-lo e torná-lo o menor possível.
Isto é útil por, pelo menos, três razões. Um: demonstrar ter feito um esforço para tornar a pergunta mais simples aumenta sua chance de conseguir uma resposta; Dois: simplificar a pergunta aumenta sua chance de receber uma resposta realmente útil e Três: durante o processo de simplificação do pedido, você pode encontrar a solução ou desenvolver um remendo por conta própria.