Cosa ho imparato in 10 anni su Stack Overflow

Cosa ho imparato in 10 anni su Stack Overflow
Mi sto avvicinando al mio decimo anniversario su Stack Overflow. Nel corso degli anni il mio approccio all'utilizzo del sito e la percezione dello stesso è cambiato molto e voglio condividere con te la mia esperienza. E ne scrivo dal punto di vista dell’utente medio, poco coinvolto nella vita della comunità del sito o nella sua cultura. In questi giorni ho risposto solo a domande relative a VS Code, il prodotto a cui sto lavorando. Tuttavia, partecipavo attivamente alle discussioni su una vasta gamma di argomenti. Tra 10 anni I ha posto circa 50 domande e ha dato 575 risposte, ho esaminato una miriade di commenti di altre persone.

Jon Skeete ha descritto la cultura di Stack Overflow molto meglio e più autorevole di quanto potrò mai fare. La sua pubblicazione ha influenzato alcuni capitoli di questo articolo, ma nel complesso queste sono le mie riflessioni sincere sulle mie esperienze su Stack Overflow, sugli aspetti positivi e negativi del sito e su come può essere utilizzato oggi. Questa discussione sarà abbastanza superficiale, senza approfondire il funzionamento del sito o la sua storia.

Quindi ecco cosa ho imparato in 10 anni di utilizzo di Stack Overflow.

Devi essere in grado di porre domande

A prima vista, niente potrebbe essere più semplice: inserisci alcune parole nel campo di testo, fai clic su "Invia" e Internet ti aiuterà magicamente a risolvere tutti i tuoi problemi! Ma mi ci sono voluti quasi 10 anni per capire quali parole digitare in quel dannato campo per ottenere effettivamente risultati. In effetti, lo sto ancora imparando ogni giorno.

Fare buone domande è un'abilità davvero sottovalutata (come lo è scrivere un buon rapporto sul problema, del resto). Innanzitutto, come determiniamo se una domanda è “buona”? Offerte Stack Overflow suggerimento, che elenca le seguenti qualità di una buona domanda:

  • Corrisponde al tema del sito?
  • Implica una risposta obiettiva.
  • Non è stato ancora chiesto.
  • È stato studiato.
  • Descrive chiaramente il problema, solitamente con un esempio minimo e facilmente riproducibile.

Ok, ma che aspetto ha in pratica una “chiara dichiarazione del problema”? Quali informazioni sono rilevanti e quali no? A volte sembra che per fare una buona domanda sia necessario prima conoscere la risposta.

Sfortunatamente, il piccolo campo di testo non aiuta qui. Quindi c’è da meravigliarsi che così tanti utenti pubblichino domande di bassa qualità? A volte l'unica risposta che ottengono è un collegamento a documentazione confusa. E saranno comunque fortunati. Molte domande di bassa qualità vengono semplicemente sottoposte a un downvoting silenzioso e scompaiono nel filo infinito delle domande.

Fare buone domande è un'abilità. Fortunatamente, può essere sviluppato. Per lo più ho imparato leggendo una serie di domande e risposte, notando cosa ha funzionato e cosa no. Quali informazioni sono utili e quali sono fastidiose? Anche se avrai ancora paura di utilizzare le conoscenze acquisite nella pratica e di porre domande. Fai semplicemente del tuo meglio e impara dai risultati. Devo ammettere che io stesso sono un po' imbarazzato da alcune delle mie prime domande da ignorante, anche se forse questo dimostra che ho migliorato molto le mie capacità di fare domande da quando mi sono trovato su questo sito.

Le domande cattive e quelle non così buone non sono la stessa cosa

Non addolcirò la pillola: alcune domande sono semplicemente brutte.

Una domanda composta da uno screenshot e dalla frase “PERCHÉ NON FUNZIONA!?!” - Cattivo. Perché? È ovvio che l'autore non ha fatto quasi nessuno sforzo. Questa non è tanto una domanda quanto una richiesta: “fai questo lavoro per me!” Perché dovrei farlo? Il mio tempo è troppo prezioso per essere sprecato aiutando qualcuno che non vuole imparare tanto per cominciare e non apprezzerà il mio aiuto. Scopri cos'è Stack Overflow.

Consideriamo ora una domanda intitolata "Come rimuovere i bordi blu sulla mia pagina", che consiste in diversi paragrafi di testo che parlano della proprietà contorno CSS, ma senza menzionare esplicitamente le parole "CSS" o "contorno". Sebbene una domanda come questa possa andare contro molte linee guida Stack Overflow, non sono d'accordo, non è una brutta domanda. L'autore almeno ha provato a dare qualche informazione, anche senza sapere cosa dare. Il tentativo conta, così come la volontà di percepire e apprendere.

Tuttavia, molti contributori di Stack Overflow probabilmente tratteranno entrambe le domande allo stesso modo: voto negativo e chiusura. Ciò è frustrante e scoraggia molti utenti inesperti prima che possano imparare a porre domande migliori e persino a capire come funziona il sito.

Le domande davvero brutte non valgono il tuo tempo. Ma bisogna tenere presente che coloro che fanno domande non molto buone lo fanno involontariamente. Vogliono fare buone domande, semplicemente non sanno come. Se punisci i nuovi arrivati ​​ciecamente e senza spiegazioni, come impareranno?

Una buona domanda non garantisce una risposta

Stack Overflow di solito fornisce risposte più rapide a domande semplici a cui molte persone possono rispondere. Hai una domanda sulla ricerca binaria in JavaScript o sull'HTML? Meraviglioso! Ricevi cinque risposte in meno di un'ora. Ma più la domanda è complessa o specifica, meno è probabile che riceverai una risposta, indipendentemente dalla qualità della formulazione.

Anche la probabilità di ottenere una risposta diminuisce rapidamente nel tempo. Quando una domanda si estende per diverse pagine nel feed, viene persa. Una settimana dopo, puoi solo pregare che qualcuno con la giusta conoscenza si imbatta nella tua domanda (o clicchi generosamente su di essa).

Potrebbero non piacerti le risposte corrette

Ogni mese ricevo diversi voti negativi per le cosiddette risposte impopolari. Questo è il tipo di risposte che essenzialmente dicono: "il motivo è perché è progettato in quel modo" o "non è possibile perché..." o "è un bug che deve essere corretto prima". In tutti i casi sopra indicati, gli autori non ricevono una soluzione o addirittura una soluzione alternativa. E sospetto che quando alle persone non piace ciò che dice una risposta, la svalutano. Li capisco anche, ma questo non significa che le risposte siano sbagliate.

Naturalmente è vero anche il contrario: le buone risposte non ti dicono necessariamente quello che vuoi sentire. Alcune delle risposte migliori rispondono prima alla domanda originale, ma poi descrivono altri approcci per risolvere il problema. A volte rispondo alla domanda di un utente e poi scrivo un lungo testo sul motivo per cui non è consigliabile farlo.

Ogni volta che le espressioni di atteggiamento vengono semplificate con voti su e giù o con un pulsante Mi piace, si perdono importanti distinzioni. Questo problema si verifica frequentemente su Internet. Quanti social network permettono di distinguere tra “sono a favore di questo” e “penso che sia ben detto, anche se non mi piace o non sono d’accordo”?

Nel complesso, nonostante i voti negativi mensili, credo che la community di Stack Overflow voti in modo equo. Resteremo su questa strada.

Non chiedo quasi mai su Stack Overflow

Più a lungo utilizzo questo sito, meno spesso faccio domande al riguardo. Ciò è in parte dovuto alla mia crescita professionale. Molti dei problemi che affronto al lavoro sono troppo complessi per essere espressi in domande semplici o troppo specifici perché qualcuno possa aiutarmi. Mi sono reso conto dei limiti del sito, quindi evito di fare domande alle quali quasi sicuramente non otterrò una buona risposta.

Ma raramente ho posto domande qui, anche quando stavo imparando una nuova lingua o framework. Non perché sia ​​un genio, anzi. È solo che, dopo anni trascorsi su Stack Overflow, quando ho una domanda, arrivo alla profonda convinzione che difficilmente sarò il primo a farla. Inizio a cercare e quasi sempre scopro che qualcuno ha già chiesto la stessa cosa un paio di anni fa.

Osservare le domande degli altri è un ottimo modo per imparare cose nuove sul tuo prodotto.

Adesso ci sto lavorando Codice VS., quindi ho preso l'abitudine di guardare le domande contrassegnate con vscode. Questo è un ottimo modo per vedere come viene utilizzato il mio codice nel mondo reale. Quali problemi riscontrano gli utenti? Come è possibile migliorare la documentazione o l'API? Perché qualcosa che pensavo fosse assolutamente chiaro causa così tanti malintesi?

Le domande sono un segnale importante che mostra come viene utilizzato il tuo prodotto. Ma il punto non è rispondere e andare avanti, ma cercare di capire prima perché la persona ha una domanda. Forse c'è un problema nel prodotto che non ti è noto, o qualche supposizione che hai fatto inconsapevolmente? Le domande mi hanno anche aiutato a scoprire molti bug e mi hanno ispirato a continuare a lavorare.

Se stai mantenendo un prodotto per gli sviluppatori, non pensare a Stack Overflow come a una discarica (o, peggio, a un cimitero di domande). Controlla regolarmente per vedere quali domande e risposte sono apparse. Ciò non significa che devi rispondere tu stesso a ogni domanda, ma i segnali di Stack Overflow sono troppo importanti per essere ignorati.

I confini tra una domanda, una segnalazione di bug e una richiesta di funzionalità sono sfumati.

Molte domande su VS Code su Stack Overflow erano in realtà segnalazioni di bug. E molte altre sono in realtà richieste di nuove funzionalità.

Ad esempio, una domanda dal titolo "Perché VS Code si arresta in modo anomalo quando lo faccio...?" - questa è una segnalazione di bug. VS Code non dovrebbe bloccarsi in una varietà di situazioni. Rispondere a domande che riguardano segnalazioni di bug è controproducente perché gli autori potrebbero accontentarsi di una soluzione alternativa e non inviare mai una vera segnalazione di bug. In situazioni come questa, di solito chiedo agli utenti di inviare una segnalazione di bug su Github.

In altri casi, le differenze potrebbero essere meno evidenti. Ad esempio, la domanda "Perché JavaScript IntelliSense non funziona in VS Code?" A seconda del modo in cui JavaScript IntelliSense non funziona, il problema può rientrare in una delle tre categorie:

  • Se si tratta di un problema di configurazione dell'utente, è davvero una questione per Stack Overflow.
  • Se nel caso descritto IntelliSense dovrebbe funzionare, ma non funziona, si tratta di una segnalazione di bug.
  • Se nel caso descritto IntelliSense non dovesse funzionare, si tratta di una richiesta per una nuova funzionalità.

In fin dei conti, alla maggior parte degli utenti non interessano queste sfumature: vogliono solo che JavaScript IntelliSense funzioni.

E sebbene queste differenze siano importanti per me, in quanto responsabile del progetto, in generale non dovrebbero importarmi. Perché domande, segnalazioni di bug e richieste di funzionalità sono tutti modi per esprimere un'idea: l'utente si aspetta qualcosa dal mio codice e non lo ottiene. Se il prodotto fosse perfetto, gli utenti non farebbero mai domande a riguardo, perché gli sarebbe tutto chiaro e farebbe esattamente quello che vogliono (o almeno direbbe loro chiaramente perché non può).

Anche gli sviluppatori sono persone

Le persone sono emotive. Le persone sono irrazionali. Le persone sono stronze. Non sempre, ovviamente, ma a volte! E che tu ci creda o no, anche gli sviluppatori sono persone.

C'è una fantasia che noi sviluppatori amiamo raccontarci: “Lavoriamo con i computer, quindi dobbiamo essere razionali. Comprendiamo i simboli criptici, quindi dobbiamo essere intelligenti. Il software ha conquistato il mondo, quindi dobbiamo essere forti! Freddo! Inoltrare!!!"

Questo è sbagliato. E se fosse così, allora Dio aiuti il ​​resto della gente. Anche su Stack Overflow, quello strumento per professionisti concepito come base di conoscenza oggettiva, anche nel mio angolo altamente specifico di VS Code, continuo a incontrare ogni sorta di oltraggio: errori logici, insulti, mentalità da gregge, ecc.

Non illuderti: probabilmente non sei perfetto come pensi. Ma questo non significa che non dovremmo cercare di eliminare i nostri difetti.

Amico, sono io che l'ho creato

Anch'io sono un essere umano e di tanto in tanto ciò che accade su Stack Overflow mi infastidisce. Ad esempio, quando un utente scrive con sicurezza delle sciocchezze o semplicemente dà una risposta errata a una domanda relativa a VS Code, un prodotto che ho creato e che conosco molto bene. Stranamente, sembra che più la risposta è errata, più è probabile che qualcuno lo definisca un fatto indiscutibile.

Quando ciò accade, mi comporto come in figura e scrivo la risposta corretta.

Cosa ho imparato in 10 anni su Stack Overflow

E più volte ciò ha dato luogo a lunghe discussioni: guai a me se oso mettere in dubbio la loro conoscenza di ciò che ho creato! Smettetela di cercare di avere sempre ragione, ragazzi dannatamente intelligenti! Perché ho ragione!!!

È facile diventare cinici in questa disperazione

Di fronte a un flusso infinito di domande di bassa qualità, è facile diventare cinici. Non ha mai sentito parlare di Google? Sa almeno come costruire frasi coerenti? Cosa sei, un cane?

A volte guardo dozzine di nuove domande in un giorno. Osservare costantemente tutte queste domande di bassa qualità rischia di scivolare nel disprezzo o nel cinismo. Questo cinismo può riversarsi sul sito, come potrà testimoniare chiunque abbia incontrato un moderatore troppo zelante o abbia trascorso un paio d'ore a ricercare e comporre una domanda, solo per ricevere in cambio risposte negative e scomparire nell'oblio senza alcuna spiegazione.

Naturalmente, ci sono utenti che non si impegnano minimamente e pubblicano domande sbagliate. Ma credo che la maggior parte delle domande di bassa qualità provengano da persone con buone intenzioni (anche se stupide). Cerco sempre di ricordare cosa significa essere un principiante. Quando inizi, non capisci come funziona davvero tutto qui. In alcuni casi, non sai nemmeno con quali parole esprimere correttamente il tuo problema. Credimi, è difficile essere in questa posizione. Ed è spiacevole quando vieni inzuppato di sbavature solo per aver fatto una domanda.

Sebbene Stack Overflow abbia fatto molto per aiutare i principianti, c'è ancora molto da fare. Ho cercato di trovare un equilibrio tra l'adesione agli standard del sito e l'essere indulgente nei confronti degli utenti inesperti. Ciò potrebbe comportare la spiegazione del motivo per cui ho votato per chiudere la domanda o la pubblicazione di un commento che incoraggia l'utente a fornire ulteriori informazioni. Ho ancora spazio per crescere.

D'altra parte, non esito a sottoporre a downvoting utenti con una reputazione di 50 che postano domande come "Qual è il miglior layout VS Code per lo sviluppo JavaScript?", o che caricano screenshot di codice insaponati invece di testo.

A volte voglio solo ringraziarti

Esiste una debole cultura della gratitudine su Stack Overflow. Ricordo che una volta il sito eliminava automaticamente le parole “ciao” e “grazie” dalle domande. Forse questo è ancora fatto, non ho controllato.

Oggi, chi ha lavorato nell'assistenza clienti sa bene che troppa gentilezza può intralciarci e sembrare addirittura forzata. Ma a volte qualcuno su questo sito fa qualcosa di molto importante per te e l'unico modo per ringraziarlo è dargli un vantaggio. Fa schifo.

L’efficienza non richiede che diventiamo robot senz’anima. Un canale laterale può fornire una comunicazione più autentica tra le persone, se gli utenti stessi lo desiderano, ovviamente.

A volte voglio sapere cosa è successo dopo aver ricevuto la risposta

Stack Overflow funziona secondo un principio transazionale: alcune persone fanno domande, altre rispondono. Cosa succede dopo aver ricevuto una risposta? Chi lo sa? A volte me lo chiedo. La mia risposta è stata utile? Quale progetto modesto ha aiutato? Cosa ha imparato l'interrogante?

Naturalmente è impossibile soddisfare questa curiosità. Richiedere agli utenti di rendere conto di come utilizzeranno le informazioni che ricevono sarebbe molto problematico, anche se fosse possibile farlo. Ma è interessante pensarci.

La gamification è efficace...

…quando trasformiamo i processi in giochi.

Mi preoccupo ancora un po' quando vedo la piccola icona +10 o +25 nella barra di stato. Forse questi piccoli tocchi di ludicizzazione sono il motivo per cui torno sul sito da 10 anni. Ma nel corso degli anni, ho anche iniziato a chiedermi che tipo di gioco è Stack Overflow e cosa significa vincere.

Sono sicuro che il sistema sia stato creato con le migliori intenzioni: premiare le persone per domande e risposte utili. Ma non appena aggiungi i punteggi più alti, entra in vigore La legge di Goodharte alcuni utenti iniziano a modificare le proprie azioni non per ottenere il massimo valore, ma per ottenere il massimo dei voti. E questo è importante perché...

La reputazione non significa quello che pensi che significhi.

La reputazione non è equivalente alla competenza tecnica, alle capacità di comunicazione o alla comprensione di come funziona o dovrebbe funzionare Stack Overflow.

Non intendo dire che la reputazione sia inutile. Semplicemente non significa cosa significano gli amministratori di Stack Overflow o cosa dovrebbe significare la parola "reputazione". Mi sono reso conto che la reputazione è una misura dell'influenza. Consideriamo due ipotetiche risposte pubblicate sul sito:

  • Uno su un'operazione git comune. Ho scritto una risposta di tre righe in due minuti utilizzando Google.
  • L'altro riguarda la teoria dei grafi entangled. Forse solo un centinaio di persone in tutto il mondo possono rispondere. Ho scritto alcuni paragrafi e un codice di esempio che spiega il problema e come risolverlo.

In cinque anni, la prima risposta è stata vista 5 milioni di volte e ha ricevuto 2000 voti positivi. La seconda risposta è stata esaminata 300 volte e ha ricevuto due miseri voti positivi.

In una certa misura questo è molto disonesto. Perché premiare qualcosa che era nel posto giusto al momento giusto? (non tutto è determinato dalla fortuna; anche la comprensione delle regole del gioco gioca un ruolo enorme). D’altra parte, la prima domanda ha effettivamente aiutato molte più persone rispetto alla seconda. Forse vale la pena riconoscere che, in un certo senso, il riconoscimento porta all’accumulo di “reputazione”?

Quindi considero la “reputazione” su Stack Overflow una sorta di misura dell’influenza. La vera reputazione non si misura con semplici punti, viene dalla comunità. Di chi ascolto i consigli, chi aiuta gli altri, di chi mi fido? Forse saranno tutte persone diverse, a seconda che scriva in PHP o per iOS.

Detto questo, non so cosa dovrebbe fare Stack Overflow a questo proposito. Gli utenti sarebbero altrettanto motivati ​​se invece della “reputazione” guadagnassero “punti astuzia”? Gli utenti rimarranno coinvolti anche se non esiste alcun sistema di punti? Non credo. E il mito secondo cui la “reputazione” su Stack Overflow equivale a una reputazione reale avvantaggia non solo il sito stesso, ma anche i suoi utenti più attivi. Beh, davvero, a chi non piace aumentare la propria reputazione?

No, come spesso accade nella vita, per avere un'idea reale di ciò che sta accadendo, non è necessario analizzare solo i numeri. Se un post ha 10mila punti su Stack Overflow, guarda come comunica questa persona, quali domande e risposte pubblica. E in tutti i casi, tranne che in casi eccezionali, tieni presente che è improbabile che i punteggi Stack Overflow da soli indichino qualcosa di diverso dalla capacità di una persona di utilizzare il sito. E secondo la mia esperienza, spesso non ne parlano nemmeno.

Non sarei produttivo senza Stack Overflow

Ogni volta che devo fare qualcosa di complicato in Git, vado su Stack Overflow. Ogni volta che ho bisogno di qualcosa di semplice in bash, vado su Stack Overflow. Ogni volta che ricevo uno strano errore di compilazione, vado su Stack Overflow.

Non sono produttivo senza IntelliSense, un motore di ricerca e Stack Overflow. A giudicare da alcuni libri, questo fa di me un pessimo programmatore. Probabilmente fallirei molti test e non risolverei molti problemi sulla scheda. Così sia. Seriamente, ogni volta che utilizzo .sort in JavaScript, devo cercare informazioni su quando otterrò -1, 0 o 1 e scrivo JS ogni giorno, sviluppando l'editor più popolare per il linguaggio.

No, Stack Overflow è uno strumento incredibile. Solo uno sciocco non utilizzerebbe tutti gli strumenti a sua disposizione. Allora perché non essere uno sciocco interiore come me? Risparmia le risorse del tuo cervello per conoscenze importanti, come memorizzare tutte le trame della serie Seinfeld o inventare giochi di parole sofisticati (che mancano così tanto in questo articolo, ma ce ne saranno molti altri di natura completamente diversa).

Stack Overflow è un miracolo

Stack Overflow consente a chiunque, indipendentemente dall'esperienza o dalla conoscenza, di pubblicare domande sulla programmazione. A queste domande rispondono persone completamente sconosciute, la maggior parte dei quali trascorre il tempo della propria vita e della propria carriera aiutando gli altri gratuitamente.

Il miracolo è il fatto stesso dell'esistenza e il risultato del lavoro di Stack Overflow. Sono sicuro che non tutto va come previsto dai suoi creatori, ma ci provano. Nonostante tutte le carenze, il sito aiuta da molti anni un numero enorme di persone, me compreso.

Stack Overflow non durerà per sempre. Un giorno arriverà qualcosa di meglio. Si spera che questo sia qualcosa che imparerà dagli errori di Stack Overflow e ne trarrà il meglio. Fino ad allora, spero che non diamo questo sito per scontato. Questo è sia un punto di riferimento che una comunità vivente, che viene costantemente riempita con nuove persone. Se questo ti preoccupa, ricorda che è tutto molto fragile e che anche piccole azioni, come aiutare i nuovi arrivati ​​ben intenzionati ma ancora ignoranti, possono avere un effetto positivo. Se critico questo sito è solo perché ci tengo e so come migliorarlo.

PS

Ero ancora uno scolaretto quando sono arrivato a Stack Overflow. Stavo appena iniziando a scrivere (ES5!) JavaScript in Eclipse e sembrava che il 90% delle domande iniziasse con "Utilizzando jQuery, semplicemente...". E anche se non sapevo cosa stavo facendo, gli estranei passavano il loro tempo ad aiutarmi. Non credo di averlo apprezzato molto in quel momento, ma non l'ho dimenticato.

Le persone vorranno sempre che Stack Overflow sia qualcosa di diverso: un sito di domande e risposte; uno strumento per risolvere i problemi domestici; tenore di vita della programmazione. E per me, questo sito, nonostante la sua crescita e i suoi difetti, è fondamentalmente una comunità aperta in cui gli estranei si aiutano a vicenda a imparare e migliorare. E questo è fantastico. Sono felice di aver fatto parte di Stack Overflow negli ultimi 10 anni e spero di continuare a farlo. Voglio imparare tante cose nuove nel prossimo decennio quanto ho fatto nel decennio precedente.

Fonte: habr.com

Aggiungi un commento