O que o Stack Overflow quer ser quando crescer?

Às vezes, pessoas comuns do mundo real me perguntam o que eu faço para viver, e aqui está minha resposta de 15 segundos:

Criamos uma espécie de site da Wikipédia para que os programadores de computador publiquem perguntas e respostas. Ele se chama Stack Overflow.

Desde o mês passado, faz 10 anos que Joel Spolsky e eu começamos o Stack Overflow. Atualmente, eu faço outras coisas agorae tenho feito isso desde 2012, mas se eu for conhecido por alguma coisa quando morrer, certamente será pelo bom e velho Stack Overflow.

É aqui que eu normalmente entraria em um monte de coisas sobre como o Stack Overflow é ótimo e, portanto, como eu sou implicitamente ótimo por associação, por ser um dos fundadores e tudo mais.

gabarito

Não me importo com nada disso.

O que me interessa, no entanto, é que o senhor se o Stack Overflow é útil para os programadores que trabalham. Vamos dar uma olhada no um dos meus ídolos, John Carmack. Qual é a utilidade do Stack Overflow, do ponto de vista daquele que considero um dos maiores programadores vivos?

Não vou mentir, o dia 17 de setembro de 2013 foi um um dia muito bom. Fiquei literalmente arrepiado quando li isso, e não apenas porque sempre leio a palavra “bilhões” na voz de Carl Sagan. Também foi agradavelmente o oposto de praticamente todos os outras dia em que estou no Twitter, percorrendo uma ladainha opressiva e interminável de sofrimento humano compartilhado e pessoas gritando umas com as outras. Isso me lembra que eu deveria verificar meu Twitter e veja quem mais está errado na Internet hoje.

Sinto-me honrado e honrado com a utilidade pública que o Stack Overflow proporcionou a toda uma geração de programadores. Mas o Não fui eu que fiz isso.

  • O senhor fez, quando o senhor contribuiu com uma pergunta bem pesquisada para o Stack Overflow.
  • O senhor fez, quando o senhor contribuiu com uma resposta sucinta e clara para o Stack Overflow.
  • O senhor O senhor fez isso quando editou uma pergunta ou resposta no Stack Overflow para melhorá-la.

Todas essas unidades de Q&A de “tamanho divertido”, contribuídas coletivamente por programadores de todo o mundo, acabaram criando um Recurso da Creative Commons que realmente rivaliza com a Wikipédia em nosso campo. Isso é … incrível, na verdade.

stack-overflow-homepage-oct-2018

Mas as histórias de sucesso são chatas. O mundo está cheio de pessoas que basicamente tiveram sortee, depois disso, não conseguem parar de dizer às pessoas que foi todo o seu trabalho árduo e a sua determinação que fizeram com que isso acontecesse. Considero o fracasso muito mais instrutivo e, ao criar um negócio e planejar o futuro, assumo o papel de Abyss Domain Expert™ e começo um concurso de olhares. É só uma coisinha que eu gosto de fazer, o senhor sabe… para mim.

abyss-oc

Portanto, o que eu gostaria de fazer agora é olhar um pouco para esse glorioso abismo e fazer uma introspecção sobre os desafios que vejo para o Stack Overflow nos próximos 10 anos. Antes de começar, quero deixar algumas coisas bem claras para o senhor:

  1. Não trabalhei no Stack Overflow em nenhuma função desde fevereiro de 2012 e não tive nenhuma participação operacional no dia a dia desde essa data, mais ou menos por opção. Se eu tenho opiniões sobre como as coisas devem ser feitas? Uh, o senhor tem o senhor já me conheceu? Se eu envio e-mails às pessoas de vez em quando sobre essas opiniões? Talvez, mas, sinceramente, tento manter isso no mínimo absoluto e acho que meu histórico de arquivos de e-mail aqui é razoável.

  2. As pessoas que trabalham na Stack são incríveis, e a maioria delas (incluindo grande parte da comunidade do Stack Overflow, enquanto isso) poderia articular melhor a missão – e talvez de forma um pouco menos irritadiça – do que eu poderia quando saí. Eu confiaria minha vida a eles? Não. Mas eu confiaria a vida do Joel a eles!

  3. O objetivo do exercício do Stack Overflow é que ele não está vinculado a mim, ao Joel ou ao qualquer outra grande pessoa. O Stack Overflow funciona porque capacita programadores comuns do dia a dia em todo o mundo, assim como o senhor, assim como eu. Acho que, em minha mente, é como ser pai ou mãe. O objetivo é que seus filhos cresçam e se tornem adultos sãos e praticantes que não precisam (ou, na verdade, não precisam) de ajuda, querem) que o senhor continue por aqui.

  4. Entenda que o senhor está lendo as fracas opiniões fortemente sustentadas as opiniões fortes e fracamente sustentadas de um cofundador que passou muito tempo trabalhando com a comunidade nos primeiros quatro anos de vida do Stack Overflow para moldar as regras e normas do site de acordo com suas necessidades. Essas são apenas minhas opiniões. Gosto de pensar que elas são informadas mas isso não significa necessariamente que eu possa prever o futuro, ou que eu esteja qualificado para tentar. Mas nunca deixei que o fato de ser “qualificado” me impedisse de fazer qualquer coisa, e não vou começar hoje.

O Stack Overflow é, antes de tudo, um wiki

O Stack Overflow, em última análise, tem muito mais em comum com a Wikipédia do que com um fórum de discussão. Com isso, quero dizer que as perguntas e respostas no Stack Overflow não são julgadas principalmente por sua utilidade para um indivíduo específico, mas pelo quantas outros programadores que a pergunta ou resposta pode potencialmente ajudar ao longo do tempo. Tentei ao máximo enfatizar essa relação do dia do lançamento em 2008. Observe quem está no topo da lista nesse diagrama de Venn.

stack-overflow-venn-diagram

Posteriormente, o Stack Overflow adicionou um recurso superlegal para destacar esse valor central nos perfis de usuário, mostrando quantas outras pessoas o usuário ajudou potencialmente com suas perguntas e respostas até o momento.

stackoverflow-people-reached-profile-stat-1

As reclamações mais comuns que vejo sobre o Stack Overflow geralmente são o resultado desse mal-entendido fundamental sobre quem são as perguntas e respostas no site, em última análise parae por que há tanto rigor envolvido em todo o processo.

Fico continuamente surpreso com o número de pessoas, mesmo no Hacker News hoje, que não percebem que cada pergunta e resposta é editável no Stack Overflow, mesmo como um usuário completamente anônimo que não está conectado. O que faz sentido, certo, porque o Stack Overflow é um wiki, e é assim que os wikis funcionam. Qualquer pessoa pode editá-los. Vá em frente, experimente agora mesmo se o senhor não acredita em mim – pressione o botão “improve this answer” (melhorar esta resposta) ou “improve this question” (melhorar esta pergunta) em qualquer coisa que possa ser melhorada e faça isso.

stack-overflow-edit-question

A responsabilidade por esse mal-entendido é toda do Stack Overflow (e com isso também me refiro a mim mesmo, pelo menos até 2012). Acho que a lógica é que “todo programador com certeza já viu, usou e entendeu o Stack Overflow até agora, 10 anos depois”, mas … Acho que essa é uma suposição arriscada. Novos programadores são criados a cada segundo de cada dia. Para complicar ainda mais as coisas, há três níveis de uso no Stack Overflow, do maior para o menor, em estilo de pirâmide invertida:

  1. Eu procuro passivamente por respostas sobre programação.

    Pesquisar e ler passivamente as respostas altamente classificadas do Stack Overflow à medida que elas aparecem nos resultados de pesquisa da Web é, sem dúvida, o objetivo principal do Stack Overflow. Se o Stack Overflow estiver funcionando como deveria, 98% dos programadores deverão obter todas as respostas de que precisam lendo as páginas de resultados de pesquisa e não precisarão fazer ou responder a uma única pergunta em toda a sua carreira. Isso é uma coisa boa! Ótimo, mesmo!

  2. Eu participo do Stack Overflow quando fico preso em um problema realmente complicado e a pesquisa não está ajudando.

    Participar somente nos momentos em que o senhor está muito preso é totalmente válido. No entanto, acho que é nesse nível que a maioria das pessoas tende a ter dificuldades no Stack Overflow, porque isso envolve alguém que pode não ser novo no Stack Overflow em si, mas é novo em fazer perguntas, e também no momento exato de estresse e tensão para eles, quando deve obter uma resposta devido a um problema que estão enfrentando… e não têm tempo ou disposição para lidar com os requisitos rigorosos do tipo wiki do Stack Overflow quanto ao esforço de pesquisa, formatação, apresentação de trabalhos anteriores e referência ao que encontraram em pesquisas anteriores.

  3. Eu participo do Stack Overflow para desenvolvimento profissional.

    Nesse nível, o senhor está falando de usuários experientes do Stack Overflow que contribuíram com muitas respostas e, portanto, têm uma ideia muito boa do que é uma ótima pergunta, do tipo que eles mesmos gostariam de responder. Como resultado, eles não tendem a fazer muitas perguntas porque se automedicam por meio de buscas e pesquisas exaustivas, mas quando fazem uma pergunta, elas são exemplares.

(Tecnicamente, há um quarto nível aqui, para pessoas que desejam contribuir desinteressadamente com perguntas e respostas do Creative Commons para fazer avançar todo o campo de desenvolvimento de software para a próxima geração de desenvolvedores de software. Mas quem tem tempo para santos 😇, os senhores fazem o resto de nós parecer ruim, então parem com isso, Skeet).

Não me chocaria nem um pouco se as pessoas gastassem anos felizmente no nível 1 e depois teve uma grande surpresa desagradável ao chegar ao nível 2. O principal lugar para lidar com isso, na minha opinião, é um página de perguntas amplamente reformulada e aprimorada. Também é justo observar que talvez as pessoas não entendam que estão se comprometendo com uma parte considerável do trabalho ao se comprometerem implicitamente com o padrão wiki de “tentar garantir que seja útil para mais pessoas do que apenas para você” ao fazer uma pergunta no Stack Overflow, e são então desencorajadas pela reação negativa ao que os outros veem como uma pergunta insuficientemente pesquisada.

O Stack Overflow absorve muita tensão devido à adoção de padrões wiki para o conteúdo. Mesmo que o senhor saiba dessa exigência desde o início, nem sempre fica claro o que significa “útil”, da mesma forma que nem sempre fica claro quais tópicos, pessoas e lugares merecem uma página na Wikipédia. Henrietta LacksO senhor não sabe, mas e o seu primo Dave, em Omaha, com seu problema estranho com o PHP 5.6?

Com o tempo, as duplicatas se tornam vastos campos de minas terrestres

Aqui está uma coisa Eu realmente, realmente vi o senhor chegando e, para ser sincero com o senhor, fiquei um pouco feliz por ter saído em 2012 antes de ter que lidar com isso, devido à incrível dificuldade técnica envolvida: duplicatas. De todas as reclamações que ouço sobre o Stack Overflow, essa é, de longe, a que mais me agrada.

Se o senhor aceita que o Stack Overflow é um sistema do tipo wiki, então, pelos mesmos motivos que o senhor obviamente não pode ter cinco artigos diferentes sobre a Itália na Wikipédia, ele é um sistema de wiki, o Stack Overflow não pode permitir perguntas duplicadas sobre exatamente o mesmo problema de programação. Embora exista uma quantidade razoável de código para fazer pesquisas preventivas à medida que as pessoas digitam as perguntas, além de muitos exortações para pesquisar antes de perguntar, com um convidativo campo e botão de pesquisa bem ali na página obrigatória que o senhor vê antes de fazer sua primeira pergunta …

stack-overflow-how-to-ask

… localizar e identificar conteúdo duplicado é um problema extremamente difícil, mesmo para uma empresa como o Google, que não faz nada além de se especializar nesse exato problema há 20 anos, com um verdadeiro exército dos engenheiros mais talentosos do mundo.

Quando o senhor faz uma pergunta em um site que não permite perguntas duplicadas, o espaço do problema de um site com 1 milhão de perguntas existentes é bem diferente de um site com 10 milhões de perguntas existentes… ou 100 milhões. Fazer uma única pergunta exclusiva vai de moderadamente difícil a uma missão quase impossível, porque sua pergunta precisa percorrer um caminho estreito por esse vasto e enorme campo de perguntas da técnica anterior sem pisar em nenhuma das minas terrestres de aparência vagamente semelhante no processo.

stackoverflow-asking-duplicate-question

Mas espere! A situação fica ainda mais difícil!

  • Não há problema em haver alguma variação em perguntas semelhantesporque 10 pessoas diferentes farão uma pergunta quase idêntica usando 10 conjuntos diferentes de palavras completamente não relacionadas e sem sobreposição. Eu sei, parece loucura, mas acredite em mim: os seres humanos são incríveis nisso. Queremos que todas essas duplicatas existam para que possam apontar para o para a pergunta principal da qual são uma duplicata, enquanto ainda são alvos de pesquisa válidos para pessoas que fazem perguntas com opções de palavras incomuns ou raras.

  • Pode ser legitimamente difícil determinar se sua pergunta é uma verdadeira duplicata. Quanto de sobreposição é suficiente para que uma pergunta de programação seja uma duplicata de outra? E por qual definição? As opiniões variam. Isso está sujeito à interpretação humana, e os seres humanos não são confiáveis. Ninguém jamais ficará completamente satisfeito com esse sistema, praticamente por design. Essa tensão está embutida permanentemente e para sempre.

Não tenho nenhuma resposta concreta para o problema da duplicata, que só piora com o tempo. Mas posso salientar que há muitos precedentes na rede Stack Exchange para dividir os sites em áreas para “especialistas” e “iniciantes” com conjuntos de regras ligeiramente diferentes. Já vimos isso em Math vs. MathOverflow, English vs. English Learners, Unix vs. Ubuntu… Talvez seja hora de criar um Stack Overflow mais voltado para iniciantes onde as duplicatas sejam menos mal vistas e as regras de conversação sejam um pouco mais brandas?

O Stack Overflow é um sistema competitivo de revisão por pares

O Stack Overflow foi de fato criado para ser um sistema competitivo bastante explícito, com a ressalva de que “sempre há mais de uma maneira de fazer isso”. Essa escolha de design foi baseada na minha observação constante de que a melhor maneira de motivar qualquer programador… é insinuar sutilmente que outro programador poderia ter feito isso melhor.

nerd-herói-motivando-programadores

Isso se manifesta no sistema de reputação pública do Stack Overflow, o incrível poder de um número impresso ao lado do nome de alguémem tamanho real. Toda a reputação no Stack Overflow vem do reconhecimento de seus colegas, nunca do “sistema”.

stack-overflow-top-rep-by-year

Depois que sua pergunta é feita ou sua resposta é publicada, ela pode ser cutucada, cutucada, editada, sinalizada, fechada, aberta, votada a favor ou contra, dobrada e fiada pelos seus colegas. O intenção é que o Stack Overflow seja um sistema de revisão por pares e competição amigável, como uma revisão de código de um colega de trabalho que o senhor nunca conheceu em uma divisão diferente da empresa. Também é totalmente justo que um colega programador questione a premissa de sua pergunta, desde que isso seja feito de uma maneira agradável. Por exemplo, o senhor realmente quer usar essa expressão regular para corresponder ao HTML?

Reconheço plenamente que o sistemas competitivos de revisão por pares não são para todose, portanto, o processo geral de ter colegas revisando sua pergunta pode nem sempre parecer bom, dependendo das circunstâncias e da experiência do senhor na área. particularmente quando combinado com as tensões substanciais em torno da utilidade e das duplicatas que o Stack Overflow já absorveu de seus elementos wiki. É uma espécie de golpe duplo.

Já ouvi pessoas descreverem o processo de fazer uma pergunta no Stack Overflow como indutor de ansiedade. Para mim, postar no Stack Overflow é supostamente envolva um tipo saudável de ansiedade menor “deixe-me ter certeza de mostrar meu melhor trabalho”:

  • a ansiedade de fazer uma apresentação para seus colegas
  • a ansiedade de se sair bem em um teste
  • a ansiedade de se apresentar em um novo emprego com colegas talentosos que o senhor admira
  • a ansiedade de participar de seu primeiro dia de aula com outros alunos de seu nível

Imagino sistemas em que não há nenhuma ansiedade envolvida e só consigo pensar em empregos em que há muito tempo parei de me importar com o trabalho e, portanto, não tinha nenhuma ansiedade para saber se iria ou não comparecer ao trabalho em um determinado dia. Como isso pode ser bom? Digamos que não sou fã de sistemas de ansiedade zero.

Talvez a concorrência não seja sua praia. Poderia haver um sistema de Q&A menos competitivo, um sistema sem downvotes, um sistema sem votos apertados, em que nunca houvesse ansiedade para publicar nada, apenas uma rede de pessoas super solidárias que acreditam em você e querem que você tenha sucesso, não importa o que aconteça? Com certeza! Acho que muitos sites alternativos deveriam existir na Internet para que as pessoas possam escolher uma experiência que corresponda às suas preferências e objetivos pessoais. A Stack deve criar essa alternativa? Ela já foi criada? Essa é uma pergunta aberta; fique à vontade para apontar exemplos nos comentários.

O Stack Overflow foi criado para programadores experientes

Outro ponto de confusão que surge com frequência é quem é realmente o público-alvo do Stack Overflow. Esse é simples e tem sido o mesmo desde o primeiro dia:

stackoverflow-for-business-description

Q&A para programadores profissionais e entusiastas. Com isso queremos dizer que

Pessoas que já têm um emprego como programador ou que poderiam ser contratadas como programador hoje, se quisessem.

Sim, caso o senhor esteja se perguntando, parte disso foi uma decisão comercial explícita. Para ganhar dinheiro, o senhor precisa ter um público de pessoas que já recebem salário de programador ou que estão procurando emprego para serem programadores. Toda a rede Stack Overflow pode ser licenciada pela Creative Commons, mas nunca foi uma atividade sem fins lucrativos. Ela foi planejada como um negócio sustentável desde o início, e é por isso que o lançamos o Stack Overflow Careers apenas um ano depois do próprio Stack Overflow … para ser honesto, muito antes do que deveríamos, em retrospecto. Desde então, o Careers foi incorporado de forma inteligente ao Stack Overflow propriamente dito, em stackoverflow.com/jobs para uma experiência mais integrada e, com certeza, muito melhor do que a de 2009.

A escolha do público-alvo não foi feita para ser uma decisão excludente, de forma alguma, mas o Stack Overflow foi definitivamente projetado como um sistema bastante rigoroso de revisão por pares, o que é ótimo (IMNSHO, obviamente) para profissionais que já estão praticando, mas praticamente tudo o que o senhor faria não quer como estudante ou iniciante. É por isso que me encolho tanto que praticamente me viro do avesso quando as pessoas no Twitter mencionam que indicaram o Stack Overflow para seus alunos. O que o senhor deseja para um iniciante ou um estudante na área de programação é quase exatamente o oposto do que o Stack Overflow faz a todo momento:

  • mentoria individual
  • compartilhamento de tela colaborativo em tempo real
  • bate-papo ao vivo
  • cursos teóricos e básicos
  • tarefas e exercícios para iniciantes
  • playgrounds para experimentos

Todas essas coisas são muito boas, mas o Stack Overflow faz NENHUMA deles, por padrão.

Pode o senhor pode usar o Stack Overflow para aprender a programar desde os primeiros princípios? Bem, tecnicamente, o senhor pode fazer qualquer coisa com qualquer software. O senhor poderia tentar ter conversas reais no Reddit, se for masoquista. Mas a resposta é sim. O senhor poderia aprender a programar no Stack Overflow, em teoria, se for um prodígio que se sente confortável com os aspectos competitivos leves (reputação, fechamento, downvoting) e também perfeitamente disposto a definir todas as suas contribuições para o site em termos de utilidade para os outros, não apenas para si mesmo como um estudante tentando aprender coisas. Mas eu suuuuuuper não o recomendaria. Existem sites e sistemas muito melhores para aprender a ser um programador. Poderia Stack Overflow criar sistemas amigáveis para iniciantes e estudantes como esse? Não sei, e certamente não cabe a mim decidir isso. 🤔

E é isso. Agora podemos retomar nossa observação normal do não-abismo. Ou o que quer que seja que passe por normal nestes tempos.

Espero que tudo isso não pareça negativo. No geral, eu diria que o estado do Stack é forte. Mas será que importa o que eu penso? Como era em 2008, assim é em 2018.

Stack Overflow é o senhor.

Essa é a parte assustadora, o grande salto de fé no qual o Stack Overflow se baseia: confiar em seus colegas programadores. Os programadores que escolhem participar do Stack Overflow são o “molho secreto” que faz com que ele funcione. É por causa dos senhores que continuo a acreditar na comunidade de desenvolvedores como a maior fonte de aprendizado e crescimento. É por causa dos senhores que continuo a receber tantos e-mails e depoimentos positivos sobre o Stack Overflow. Não posso levar o crédito por isso. Mas o senhor pode.

Aprendi o poder coletivo de meus colegas programadores há muito tempo, escrevendo no Coding Horror. A comunidade é muito, muito mais inteligente do que eu jamais serei. Tudo o que posso pedir – tudo o que qualquer um de nós pode pedir – é que ajudemos uns aos outros ao longo do caminho.

E se seus colegas programadores decidirem reconhecê-lo por isso, então eu digo que o senhor fez por merecer.

A força do Stack Overflow começa e termina com o comunidade de programadores que alimenta o site. O que o Stack Overflow deve ser quando crescer? O que quer que façamos, juntos.

stackoverflow-none-of-us-is-as-dumb-as-all-of-us

p.s. Feliz 10º aniversário do Stack Overflow!


Veja também a opinião de Joel sobre os 10 anos do Stack Overflow com A era do Stack Overflow, Uma pitada de gamificaçãoe Regras Estranhas e Loucas.