Cosa ho imparato in 10 anni su Stack Overflow

Cosa ho imparato in 10 anni su Stack Overflow
Si avvicina il decimo anniversario della mia presenza su Stack Overflow. Negli anni il mio approccio all'utilizzo del sito e la sua percezione sono cambiati notevolmente, e voglio condividere con voi la mia esperienza. Scrivo da una prospettiva di un utente medio, che non è molto coinvolto nella vita della comunità del sito o nella sua cultura. Negli ultimi giorni rispondo solo a domande relative a VS Code, il prodotto su cui lavoro. Tuttavia, in passato ho partecipato attivamente a discussioni su una vasta gamma di argomenti. In 10 anni ho posto circa 50 domande e fornito 575 risposte, visualizzato un numero innumerevole di commenti altrui.

John Skeet ha descritto la cultura di Stack Overflow molto meglio e con maggiore autorità di quanto io possa mai fare. La sua pubblicazione ha influenzato alcuni capitoli di questo articolo, anche se in generale si tratta delle mie riflessioni sincere sulla mia esperienza su Stack Overflow, su ciò che c'è di buono e di cattivo e su come può essere utilizzato oggi. Questa discussione sarà piuttosto superficiale, senza un'analisi profonda del funzionamento del sito o della sua storia.

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

Bisogna saper fare domande

A prima vista, non c'è niente di più semplice: inserisci alcune parole nel campo di testo, premi 'Invia' e internet magicamente ti aiuterà a risolvere tutti i tuoi problemi! Ma ci sono voluti quasi 10 anni per capire quali parole inserire in quel dannato campo per ottenere davvero risultati. In realtà, sto ancora imparando questo ogni giorno.

La capacità di fare buone domande è una competenza davvero sottovalutata (così come redigere un buon messaggio di errore, per la cronaca). Prima di tutto, come definiamo che una domanda è 'buona'? Stack Overflow offre un suggerimento, che elenca queste qualità di una buona domanda:

  • È pertinente all'argomento del sito.
  • Implica una risposta obiettiva.
  • Non è già stata posta.
  • È stata esplorata.
  • Descrive chiaramente il problema, solitamente con un esempio minimo e facilmente riproducibile.

Va bene, ma come appare nella pratica una 'chiara descrizione del problema'? Quali informazioni sono rilevanti e quali no? A volte sembra che per fare una buona domanda sia necessario sapere prima la risposta.

Purtroppo, un piccolo campo di testo qui non aiuta. Quindi, c'è da meravigliarsi che così tanti utenti pubblichino domande poco chiare? A volte l'unica risposta che ricevono è un link a qualche documentazione confusa. E può anche andargli bene. Molti di questi quesiti non validi vengono semplicemente ignorati, scomparendo nel flusso infinito di domande.

Porre buone domande è un'abilità. Fortunatamente, è possibile svilupparla. Io, per la maggior parte, ho imparato leggendo un sacco di domande e risposte, osservando cosa funziona e cosa no. Quali informazioni sono utili e quali ostacolano? Anche se avrete comunque paura di utilizzare le conoscenze acquisite in pratica e di fare domande. Provateci e imparate dai risultati ottenuti. Devo ammettere che alcune delle mie prime domande ignoranti mi imbarazzano un po', anche se forse questo dimostra quanto sia migliorata la mia abilità di porre domande da quando sono arrivato su questo sito.

Domande cattive e domande non troppo buone non sono la stessa cosa

Non dolcificherò la pillola: alcune domande sono semplicemente cattive.

Una domanda che consiste in uno screenshot e nella frase «PERCHÉ NON FUNZIONA!?!» è scadente. Perché? È ovvio che l'autore ha praticamente fatto poco sforzo. Non è tanto una domanda, quanto una richiesta: «fate questo lavoro per me!» Perché dovrei farlo? Il mio tempo è troppo prezioso per sprecarlo aiutando qualcuno che fin dall'inizio non vuole imparare e non apprezzerà il mio aiuto. Imparare cosa significa Stack Overflow.

Ora consideriamo una domanda intitolata «Come rimuovere i bordi blu dalla mia pagina», composta da vari paragrafi di testo che parlano della proprietà CSS outline, ma senza menzionare esplicitamente le parole «CSS» o «outline». Anche se questo tipo di domanda potrebbe contraddire molte delle raccomandazioni di Stack Overflow, non sono d'accordo, non è una cattiva domanda. L'autore ha almeno cercato di fornire alcune informazioni, anche senza sapere cosa fosse necessario dare. Un tentativo è valido, così come la disponibilità a ricevere feedback e imparare.

Tuttavia, molti membri di Stack Overflow probabilmente risponderanno a entrambe le domande nello stesso modo: a meno che non vengano chiuse. Questo è sgradevole e allontana molti utenti inesperti prima che riescano a imparare a porre domande di qualità e comprendere come funziona il sito.

Le domande realmente scandalo non meritano di essere trattate. Tuttavia, bisogna considerare che chi pone domande non del tutto adeguate lo fa in modo involontario. Vogliono porre buone domande, ma semplicemente non sanno come fare. Se puniamo ciechamente i principianti senza spiegazioni, come impareranno?

Una buona domanda non garantisce una risposta.

Di solito, su Stack Overflow si ricevono risposte più rapidamente a domande semplici, a cui molti possono rispondere. Hai una domanda sul binary search in JavaScript o su HTML? Ottimo! Ricevi cinque risposte in meno di un'ora. Ma più la domanda è complessa o specifica, meno è probabile che tu riceva risposta, indipendentemente dalla qualità della formulazione.

La probabilità di ricevere una risposta diminuisce anche nel tempo. Quando una domanda scende a diverse pagine nel flusso, va persa. Dopo una settimana, non resta altro da fare che sperare che qualcuno con le conoscenze necessarie si imbatta casualmente nella tua domanda (o faccia clic su di essa con generosità).

Potresti non gradire le risposte corrette.

Ogni mese ricevo alcuni voti negativi per quelle che chiamo risposte 'non popolari'. Si tratta di risposte che, in sostanza, dicono: 'la ragione è che è stato progettato in questo modo', oppure 'non è possibile perché…', o 'è un bug che deve essere corretto prima'. In tutti i casi elencati, gli autori non ricevono una soluzione o anche solo un consiglio alternativo. E sospetto che quando le persone non gradiscono ciò che viene detto nella risposta, la valutano negativamente. Li capisco, ma questo non significa che le risposte siano errate.

Certo, vale anche l'opposto: buone risposte non dicono necessariamente ciò che vuoi sentire. Alcune delle migliori risposte iniziano rispondendo alla domanda originale, per poi descrivere altri approcci per risolvere il problema. A volte rispondo alla domanda dell'utente e poi scrivo un lungo testo su perché non è consigliabile procedere in quel modo.

Ogni volta che l'espressione di un'idea viene semplificata in voti "a favore" e "contro" o in pulsanti "mi piace", importanti differenze si perdono. Questo problema si riscontra frequentemente su Internet. Quanti social network permettono di distinguere tra "Sostengo questo" e "Penso che sia ben detto, anche se non mi piace o non sono d'accordo"?

In generale, nonostante gli svantaggi mensili, credo che la comunità di Stack Overflow voti in modo oggettivo. Continuiamo su questa strada.

Quasi mai pongo domande su Stack Overflow

Più utilizzo questo sito, meno domande faccio. In parte è legato alla mia crescita professionale. Molti problemi affrontati al lavoro sono troppo complessi per essere espressi in semplici domande o troppo specifici per ricevere aiuto. Ho realizzato i limiti del sito, quindi evito di porre domande per le quali è quasi certo che non riceverò una buona risposta.

Tuttavia, ho raramente posto domande qui, anche quando studiavo un nuovo linguaggio o framework. Non perché sia un genio, anzi. Solo che, dopo anni su Stack Overflow, quando ho una domanda, arrivo alla profonda convinzione che raramente sarò il primo a porla. Inizio a cercare e quasi sempre scopro che qualcun altro ha già chiesto la stessa cosa un paio di anni fa.

Osservare le domande degli altri è un ottimo modo per apprendere di più sul proprio prodotto.

Attualmente sto lavorando su VS Code, quindi ho preso l'abitudine di esaminare le domande con l'etichetta vscode. È un ottimo modo per capire come il mio codice viene utilizzato nel mondo reale. Quali problemi affrontano gli utenti? Come posso migliorare la documentazione o le API? Perché qualcosa che ritenevo assolutamente chiaro causa così tanta confusione?

Le domande sono un segnale importante che mostra come viene utilizzato il tuo prodotto. Ma non si tratta solo di rispondere e andare avanti, ma di cercare prima di tutto di capire perché una persona ha posto quella domanda. Potrebbe esserci un problema nel prodotto che non conosci, o alcune assunzioni che hai fatto inconsapevolmente? Le domande mi hanno anche aiutato a scoprire molti bug e mi hanno ispirato a continuare a lavorare.

Se gestisci un prodotto per sviluppatori, non considerare Stack Overflow come una discarica (o, peggio, come un cimitero di domande). Controlla regolarmente quali nuove domande e risposte sono emerse. Questo non significa che tu debba rispondere personalmente a ogni domanda, ma i segnali provenienti da Stack Overflow sono troppo importanti per essere ignorati.

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

Un buon numero di domande su VS Code su Stack Overflow erano in realtà segnalazioni di bug. E molte altre erano richieste per nuove funzionalità.

Ad esempio, la domanda con il titolo "Perché VS Code si chiude quando faccio ...?" è una segnalazione di un bug. VS Code non dovrebbe bloccarsi in molte situazioni. Rispondere a domande che sono segnalazioni di bug non è produttivo, poiché gli autori potrebbero accontentarsi di una soluzione alternativa e non compilare mai un vero rapporto sul bug. In tali situazioni, di solito scrivo per chiedere agli utenti di compilare un rapporto sul bug su Github.

In altri casi, le differenze possono essere meno ovvie. Ad esempio, la domanda "Perché IntelliSense per JavaScript non funziona in VS Code?". A seconda di come non funziona IntelliSense per JavaScript, la domanda può essere classificata in una delle tre categorie:

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

Alla fine, la maggior parte degli utenti non si preoccupa di questi dettagli — vogliono solo che il JavaScript IntelliSense funzioni.

Anche se per me, come responsabile del progetto, queste differenze sono importanti, in generale non dovrebbero significare nulla per me. Perché sia le domande, sia i messaggi di errore, sia le richieste di funzionalità — tutto ciò è un modo per esprimere una sola idea: l'utente si aspetta qualcosa dal mio codice e non ottiene nulla. Se il prodotto fosse perfetto, gli utenti non farebbero mai domande a riguardo, perché sarebbe tutto chiaro e farebbe esattamente quello che vogliono (o almeno comunicherebbe chiaramente perché non può farlo).

Anche gli sviluppatori sono esseri umani

Le persone sono emotive. Le persone sono irrazionali. Le persone sono stupide. Non sempre, certo, ma a volte! E non crederete, ma anche gli sviluppatori sono esseri umani.

C'è una fantasia che noi, sviluppatori, amiamo ripetere a noi stessi: «Lavoriamo con i computer, quindi dobbiamo essere razionali. Comprendiamo simboli misteriosi, quindi dobbiamo essere intelligenti. I programmi hanno conquistato il mondo, quindi dobbiamo essere fighi! Figo! Andiamo!!!»

Non è così. E se lo fosse, Dio aiuti gli altri. Anche su Stack Overflow, questo strumento per professionisti creato come base di conoscenza oggettiva, continuo a imbattermi in ogni sorta di follia nel mio angolo estremamente specifico di VS Code: fallacie logiche, insulti, pensiero di gruppo, e così via.

Non ingannatevi: probabilmente non siete così perfetti come pensate. Ma questo non significa che non dobbiamo sforzarci di superare i nostri difetti.

Ragazzo, sono proprio io a averlo creato.

Anch'io sono 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 dà semplicemente risposte errate a domande relative a VS Code — un prodotto che ho creato e di cui sono esperto. È strano, ma sembra che più sia errata una risposta, maggiore sia la probabilità che qualcuno la consideri una verità indiscutibile.

Quando succede, agisco come nella foto e scrivo la risposta corretta.

Cosa ho imparato in 10 anni su Stack Overflow

E diverse volte questo ha portato alla creazione di lunghe discussioni: povero me, che ho osato mettere in discussione la loro conoscenza su ciò che ho creato! Smettetela di cercare di avere sempre ragione, dannati sapientoni! Perché ho ragione io!!!

È facile diventare cinici in questa oscurità

Di fronte a un'infinita sequenza di domande di scarsa qualità, è facile diventare cinici. Non ha mai sentito parlare di Google? Ha almeno un'idea di come costruire frasi coerenti? Ma che diavolo, cane?

A volte guardo dozzine di nuove domande al giorno. Continuamente osservando tutte queste domande di scarso valore, si rischia di cadere nel disprezzo o nel cinismo. Questo cinismo può riversarsi sul sito, come può confermare chiunque sia mai stato in contatto con un moderatore troppo zelante o abbia speso alcune ore per ricercare e formulare una domanda, solo per ricevere in cambio solo voti negativi e scomparire nell'oblio senza alcuna spiegazione.

Certo, ci sono utenti che non si impegnano minimamente e pubblicano domande di scarsa qualità. Ma credo che la maggior parte delle domande non valide provenga da persone con buone intenzioni (anche se poco esperte). Cerco sempre di ricordare cosa significa essere un principiante. Quando si inizia, non si capisce come funziona effettivamente tutto qui. In alcuni casi, non si sa nemmeno quali parole usare per esprimere il proprio problema correttamente. Credetemi, è difficile trovarsi in una situazione del genere. E sgradevole quando si viene criticati solo per aver posto una domanda.

Anche se Stack Overflow ha fatto molto per aiutare i principianti, c'è ancora molto da fare. Ho cercato di trovare un equilibrio tra il rispetto degli standard stabiliti dal sito e la comprensione nei confronti degli utenti inesperti. Questo può includere spiegare perché ho votato per chiudere una domanda o lasciare un commento che incoraggi l'utente a fornire ulteriori informazioni. Ho ancora molto da imparare.

D'altro canto, non esiterei a penalizzare gli utenti con una reputazione di 50.000 che pubblicano domande come «Quali sono le migliori impostazioni per VS Code per lo sviluppo JavaScript?» o che caricano screenshot di codice sgranati invece di testo.

A volte voglio semplicemente ringraziarti.

Su Stack Overflow, la cultura della gratitudine è poco sviluppata. Ricordo che un tempo sul sito venivano automaticamente rimossi dalle domande i termini «ciao» e «grazie». Forse lo fanno ancora, non ho controllato.

Oggi chiunque abbia lavorato nel supporto clienti sa bene che un'eccessiva cortesia può ostacolare e persino sembrare finta. Ma a volte su questo sito qualcuno fa qualcosa di davvero importante per te, e l'unico modo per ringraziarlo è mettere un 'positivo'. È frustrante.

L'efficienza non richiede che ci trasformiamo in robot privi di anima. Un canale secondario può assicurare una comunicazione più autentica tra le persone, se gli utenti, ovviamente, lo desiderano.

A volte mi interessa sapere che cosa è successo dopo aver ricevuto una risposta.

Stack Overflow funziona secondo il principio delle transazioni: alcune persone fanno domande, altre rispondono. Ma cosa succede dopo aver ricevuto una risposta? Chi lo sa? A volte mi interessa scoprirlo. La mia risposta è stata utile? A quale umile progetto ha aiutato? Cosa ha imparato l'autore della domanda?

Certo, non è possibile soddisfare questa curiosità. Chiedere agli utenti di rendicontare come utilizzeranno le informazioni ricevute sarebbe molto problematico, anche se potessi farlo. Ma è interessante riflettere su questo.

La gamification è efficace…

…nel trasformare i processi in un gioco.

Sono ancora un po' nervoso quando vedo nella barra di stato una piccola icona +10 o +25. Forse questi piccoli sprazzi di gamification sono la ragione per cui torno sul sito da 10 anni. Ma con il passare del tempo ho anche iniziato a chiedermi che tipo di gioco sia Stack Overflow e cosa significhi vincere in esso.

Sono sicuro che il sistema sia stato creato con le migliori intenzioni: premiare le persone per domande e risposte utili. Ma non appena aggiungi punteggi elevati, entra in gioco la legge di Goodhart, e parte degli utenti inizia a adattare le proprie azioni non per massimizzare il valore, ma per ottenere punteggi più alti. E questo è importante perché...

La reputazione non significa quello che pensi.

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

Non voglio dire che la reputazione sia inutile. Solo che non significa ciò che l'amministrazione di Stack Overflow o ciò che dovrebbe significare la parola «reputazione». Ho capito che la reputazione è una misura dell'influenza. Consideriamo due risposte ipotetiche pubblicate sul sito:

  • Una su un'operazione git comune. Ho scritto una risposta in tre righe in due minuti usando Google.
  • L'altra su una complessa teoria dei grafi. Forse solo un centinaio di persone nel mondo possono rispondere a questo. Ho scritto alcuni paragrafi e un esempio di codice che spiegano il problema e come risolverlo.

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

In un certo senso, è molto ingiusto. Perché premiare ciò che si è trovato nel posto giusto al momento giusto? (Non tutto è determinato dalla fortuna, gioca un ruolo enorme la comprensione delle regole del gioco). D'altro canto, la prima domanda ha davvero aiutato un numero molto maggiore di persone rispetto alla seconda. Forse vale la pena riconoscere che in un certo senso il riconoscimento porta a un accumulo di «reputazione»?

Pertanto, considero la «reputazione» su Stack Overflow una sorta di misura dell'influenza. La vera reputazione non può essere misurata semplicemente con dei punteggi, si sviluppa all'interno della comunità. A quali consigli prestiamo attenzione, chi aiuta gli altri, di chi ci fidiamo? Forse tutte queste saranno persone diverse, a seconda che stia scrivendo in PHP o per iOS.

Detto ciò, non so cosa dovrebbe fare Stack Overflow al riguardo. Gli utenti saranno altrettanto motivati se invece della 'reputazione' guadagnano 'punti furbi'? Gli utenti rimarranno così coinvolti se non ci sarà affatto un sistema di punti? Penso di no. E il mito che la 'reputazione' su Stack Overflow equivalga a una vera reputazione giova non solo al sito stesso, ma anche agli utenti più attivi. Insomma, a chi non fa piacere accrescere la propria reputazione?

No, come avviene più spesso nella vita, per avere una vera comprensione di ciò che sta accadendo, è necessario analizzare non solo i numeri. Se un post ha accumulato 10.000 punti su Stack Overflow, guarda come si comporta quella persona, quali domande e risposte pubblica. E in tutti i casi, tranne quelli eccezionali, tieni presente che i punti su Stack Overflow non dicono molto, a parte la capacità di quella persona di utilizzare il sito. E per la mia esperienza, spesso non dicono neanche questo.

Il mio lavoro non sarebbe stato produttivo senza Stack Overflow.

Ogni volta che devo fare qualcosa di complesso 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 un errore strano durante la compilazione, vado su Stack Overflow.

Non sono produttivo senza IntelliSense, un motore di ricerca e Stack Overflow. A giudicare da alcuni libri, questo mi rende un programmatore davvero scarso. Probabilmente avrei fallito molti esami e non avrei risolto molti problemi in classe. Che sia così. Seriamente, ogni volta che uso .sort in JavaScript, devo cercare informazioni su quando riceverò -1, 0 o 1, eppure scrivo quotidianamente in JS, sviluppando il più popolare editor per questo linguaggio.

No, Stack Overflow è uno strumento incredibile. Solo un idiota non utilizzerebbe tutti gli strumenti disponibili. Quindi perché non essere un idiota interiore, come me? Risparmia risorse cerebrali per conoscenze importanti, come memorizzare tutte le trame di "Seinfeld" o inventare giochi di parole sofisticati (che mancano in questo articolo, ma ce ne saranno molti altri, di natura completamente diversa).

Stack Overflow è un miracolo

Stack Overflow permette a chiunque, indipendentemente dall'esperienza o dalla conoscenza, di pubblicare domande relative alla programmazione. Queste domande ricevono risposte da persone sconosciute, la maggior parte delle quali dedica parte della propria vita e carriera ad offrire supporto gratuito agli altri.

È straordinario il semplice fatto che Stack Overflow esista e funzioni. Sono certo che non tutto va come speravano i suoi creatori, ma si impegnano. Nonostante tutti i difetti, il sito aiuta da anni un'enorme quantità di persone, me compreso.

Stack Overflow non esisterà per sempre. Un giorno, apparirà qualcosa di migliore. Spero che questa nuova piattaforma apprenda dagli errori di Stack Overflow e ne tragga il meglio. Fino ad allora, speriamo di non dare per scontato questo sito. È sia un riferimento che una comunità viva, costantemente arricchita da nuove persone. Se ti interessa, ricorda che tutto questo è molto fragile, e anche piccoli gesti — come aiutare i neofiti ben intenzionati, ma ancora inesperti — possono avere un effetto positivo. Critico questo sito solo perché mi interessa e so come farlo diventare migliore.

P.S.

Ero ancora uno studente delle medie quando sono arrivato su Stack Overflow. Ero alle prime armi con JavaScript (ES5!) in Eclipse e sembrava che il 90% delle domande iniziasse con "Sto usando jQuery, semplicemente..." E anche se non capivo cosa stessi facendo, degli sconosciuti spendevano il loro tempo ad aiutarmi. Non credo di averlo apprezzato veramente allora, ma non lo dimenticherò.

Le persone vorranno sempre che Stack Overflow sia qualcosa di diverso: un sito di domande e risposte; uno strumento per risolvere problemi quotidiani; un modello vivo di programmazione. E per me, nonostante la sua crescita e i suoi difetti, questo sito è essenzialmente una comunità aperta in cui gli sconosciuti si aiutano a vicenda a imparare e a migliorarsi. Ed è meraviglioso. Sono felice di aver fatto parte di Stack Overflow negli ultimi 10 anni e spero che continuerà così in futuro. Voglio imparare non meno cose nuove nel prossimo decennio di quanto ne abbia appreso nel decennio precedente.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster