Scrittori poveri fanno programmatori poveri? [chiuso]


16

Sto leggendo Coders at Work di Peter Seibel, e molte volte è stato menzionato che i programmatori che non sanno scrivere in genere sono programmatori poveri - è stato affermato da Douglas Crockford, Joshua Bloch, Joe Armstrong, Dijkstra (e ho leggi solo metà del libro).

Cosa ne pensi di questo? L'incapacità di esprimerti nella scrittura in un linguaggio naturale come l'inglese è un ostacolo alla scrittura di un buon codice?


9
Non conosco l'abilità come programmatore, ma per VENDERE te stesso come programmatore, intelligente = sexy nel mondo freelance. Pertanto, se riesci a scrivere (e parlare) bene, verrai percepito come intelligente ed essere considerato più affidabile come sviluppatore (anche se potrebbe essere completamente privo di messa a terra).
Dan Rosenstark,

Con "non riesco a scrivere", vuoi dire che la loro grammatica non è corretta? Questo è probabilmente un problema più grande di cose come flusso scarso, ecc.
Maxpm

1
@Maxpm: Forse, ma anche l'incapacità di trasmettere il loro significato per iscritto, nonostante sia grammaticalmente corretto.
gablin

Risposte:


30

C'è molto di più nella programmazione di "scrivere codice". Una parte importante dell'essere un programmatore di successo implica la comunicazione; Essere in grado di connettersi con i clienti, comprendere le loro esigenze, tradurli nel regno tecnico, esprimerli in codice e quindi spiegare il risultato ai clienti.

I programmatori che hanno difficoltà a esprimersi chiaramente nella scrittura potrebbero non essere in grado di comunicare bene in generale, mentre quelli che hanno una buona conoscenza del linguaggio e della scrittura possono generalmente tradurre tali abilità nel codice che scrivono.

Penso che non essere in grado di scrivere bene, e quindi comunicare bene, impedirà di essere un ottimo programmatore.

Come dicono Jason Fried e David Heinemeier Hansson (di 37 segnali) nel loro libro Rework:

Se stai cercando di decidere tra alcune persone di occupare una posizione, assumi il miglior scrittore.

Essere un bravo scrittore non significa solo scrivere. Scrivere chiaramente è un segno di pensiero chiaro. I grandi scrittori sanno come comunicare.


2
Sì, e penso che quasi tutti concordino sul fatto che la qualità di un buon programmatore sia la capacità di esprimersi chiaramente nel codice, quindi questo non mi sorprenderebbe che la capacità di esprimersi chiaramente per iscritto sia correlata alla capacità di esprimere chiaramente nel tuo codice (e viceversa). +1
n1ckp

2
Lo farei secondo. Devi comunicare, non solo con la macchina. Le persone intorno a te e i programmatori che vengono dopo di te hanno bisogno di chiarezza nella comunicazione, sia parlata che scritta. Parlato perché prima o poi devi parlare con le persone e scritto perché questo è il tuo codice E I TUOI COMMENTI.
quick_now

Ho trovato la tua risposta molto interessante! Ma quando ho guardato indietro nella mia memoria per scoprire chi erano i migliori programmatori con cui ho lavorato, lavorato o lavorato per me, ho scoperto che molti di loro erano molto cattivi nello scrivere. Tuttavia, erano ridicolmente buoni. Tuttavia, terrò presente la tua risposta eccellente e la proverò in futuro. +1

16
  • Se non riesci a spiegare qualcosa abbastanza bene, probabilmente non lo capisci abbastanza bene Essere una persona intelligente significa che lavorerai con altre persone intelligenti e dovrai comunicare con loro in modo efficace.
  • Ogni grande idea che hai è inutile se esiste solo nella tua testa
    Essere in grado di comunicare efficacemente le tue idee è un segno di grande comprensione. Questo vale non solo per il campo della programmazione.

4

Penso che se esaminiamo la domanda, otteniamo direttamente la risposta:

L'incapacità di esprimerti nella scrittura in un linguaggio naturale come l'inglese è un ostacolo alla scrittura di un buon codice?

Cosa significa effettivamente scrivere un buon codice?

I programmi devono essere scritti per essere letti dalle persone e solo per inciso per l'esecuzione delle macchine.
- Abelson & Sussman, Struttura e interpretazione dei programmi per computer

Significa esprimersi in modo chiaro, conciso, corretto ed elegante in un linguaggio di programmazione.

L'unica differenza tra esprimersi abilmente in inglese o un linguaggio di programmazione è che l'inglese è molto più indulgente.


3

Non penso che sia un grosso ostacolo per una scimmia di codice (sto assumendo un certo livello / abilità di base per esprimere se stessi nella loro lingua madre). Tuttavia, penso che possa rapidamente diventare un grosso ostacolo poiché tu (lo sviluppatore) devi iniziare a articolare meglio i progetti / arco / piani per un pubblico non tecnico. Nella mia esperienza, trasmettere qualcosa a qualcun altro che è più o meno allo stesso livello tecnico di me stesso è la mia più semplice e richiede capacità linguistiche notevolmente meno (naturali) di quanto non faccia per articolare qualcosa a un cliente e / o manager. Allo stesso modo, anche quando si tratta di un pubblico tecnico in quanto l'argomento diventa meno concreto, la persona che ne scrive (o parla per quella materia) deve essere abbastanza articolata.


3

Dipende da cosa intendi per "buon codice".

Se intendi un codice che funziona, non c'è quasi alcuna relazione tra la capacità di comunicare con gli umani e la capacità di comunicare con i computer.

Se intendi un codice che funziona, è gestibile ed esprime chiaramente l'intenzione del codice, esiste assolutamente una relazione tra la scrittura di un buon codice e la scrittura in una lingua destinata esclusivamente agli umani.

Anche se non avresti bisogno di tutte le diverse abilità richieste per essere un buon scrittore per scrivere codice comprensibile, ci sono ancora alcuni degli elementi che devono essere lì, poiché entrambi saranno letti dagli umani. In un certo senso è ancora più difficile scrivere un buon codice, poiché dovrebbe descrivere l'intenzione con il codice, mentre non si usano costrutti che potrebbero funzionare male mentre vengono eseguiti dal computer.


2

Il fatto è che la programmazione è anche un'abilità di comunicazione. Jack Ganssle nella sua newsletter elettronica Embedded Muse ha recentemente citato Doug Abbott:

Quando scrivi un programma, quello che stai realmente facendo è comunicare a un altro essere umano cosa vuoi che faccia il computer. La programmazione riguarda la comunicazione, proprio come qualsiasi altra forma di scrittura. Quindi sì, gli studenti di informatica dovrebbero essere esposti a una buona scrittura. Ma dal momento che c'è così poco di prezioso nell'informatica, forse hanno solo bisogno di alcune lezioni di scrittura creativa di base.

I programmatori che non sanno come scrivere la prosa probabilmente non sanno nemmeno come scrivere il codice.

Maggiori informazioni su questo interessante articolo:

La cattiva scrittura riflette scarse capacità di programmazione?


2

Questo è del tutto aneddotico, ma:

Uno dei migliori programmatori "rock star" con cui abbia mai lavorato è stato uno scrittore molto povero. E quando dico "molto povero", intendo il tipo che si è imbattuto come se fosse estremamente ubriaco, o appena letterato - quando hai visto le sue e-mail. Gli errori di battitura, la mancanza di punteggiatura, la difficoltà di esprimere chiaramente le idee e gli errori di ortografia comuni ("i loro / sono" e simili) erano tutti abbondanti - a volte quasi in modo lancinante. Leggendo alcune delle sue e-mail - sarei stato preoccupato per lui e-mail direttamente ai clienti (non avevamo bisogno di farlo in quella società) - perché avrebbe fatto sembrare la società cattiva!

Tuttavia, era un programmatore di super star. Un ordine di grandezza più produttivo e acceso rispetto alla media.

Non sono sicuro di cosa farne. L'ho visto più volte con persone diverse. Alcuni sembrano non avere un talento per sedersi e scrivere cose. E spesso non sembra influenzare i loro talenti in altre aree (anche talenti relativamente apparentemente simili, "knowledge work", come la programmazione). Penseresti che sarebbe collegato, ma ho visto diversi esempi viventi come questo dove non lo era. Anche se immagino sia del tutto possibile che siano " eccezioni che dimostrano la regola " - probabilmente non ho mai pensato di notare i cattivi scrittori che non sono programmatori e i bravi scrittori che lo sono .


3
Ci sono sempre eccezioni alla regola. Ho lavorato anche con poche persone brillanti, che non abbiamo mai lasciato avvicinare ad un cliente perché sarebbero state trasformate in carne tritata. Ho passato anni a correggere i refusi e così via nella loro documentazione. Dagli però un problema tecnico e i lampi di intuizione e soluzioni sono stati sorprendenti. Tutto ciò dimostra che le risposte qui sono generalizzazioni. Tuttavia, le generalizzazioni si applicano alla maggior parte delle persone.
quick_now

3
@quickly_now: Mi chiederò (dato che non hai specificato) come leggere il loro codice. Possono essere molto intelligenti e risolventi di problemi ma se il loro codice è illeggibile non sono un programmatore eccezionale se vuoi la mia opinione.
n1ckp,

@ n1ck: ora che me lo dici, il ragazzo a cui sto pensando non era molto bravo a documentare il suo codice. Il codice stesso era buono e ben progettato, ma non inseriva commenti nei bit intrinsecamente complessi di codice, il che significava che era più difficile da mantenere di quanto non dovrebbe essere. Non ci avevo pensato. :)
Bobby Tables,

Sono d'accordo con @ n1ckp. Sono anche disposto a scommettere che la sua scelta di nomi per variabili / metodi / classi a volte sarebbe criptica e confusa. Tendo ad essere molto diffidente nei confronti dei programmatori con una produttività estremamente elevata, perché spesso costa spendere un po 'di tempo extra per migliorare la manutenibilità a lungo termine.
Disilluso il

2

Se non sanno scrivere bene, come possono convincerti che sono dei bravi programmatori?


0

Qualcuno che non è in grado di esprimere con precisione un'organizzazione di sistema o un'idea che sia in grado di scrivere sarebbe in grado di scrivere codice - ovvero istruzioni precise - interpretato correttamente da un computer (molto) stupido?


Ma ottieni un ciclo di feedback molto chiaro e immediato dal computer se il tuo codice non è scritto correttamente. Ho il sospetto che potresti avere un inglese scritto estremamente scarso e che non ti viene quasi mai detto, per non parlare del feedback che devi migliorare.
Carson63000,

Devi imparare ad essere chiaro e corretto anche con il compilatore perché se non lo fai non compilerai mai nulla alla fine.
Klaim,

0

Penso che sia molto importante per un programmatore essere in grado di comunicare bene, sia con la lingua parlata che scritta. La capacità di tradurre un'idea in parole è un prerequisito per scrivere codice.

Sia che stiamo comunicando con un computer o una persona, dobbiamo mettere le parole in un ordine che abbia senso seguendo le regole della grammatica. Dobbiamo pronunciare correttamente le parole o compitarle correttamente affinché l'altra parte della conversazione le capisca. I computer genereranno errori di sintassi, i colleghi diranno "COSA?" o scartare ciò che viene detto come borbottio insano o, peggio ancora, una distrazione irritante.

Ho fortemente scoraggiato l'assunzione di candidati perché non potevano completare un pensiero o rimanere su un argomento. Una persona è stata assunta dal nostro capo comunque, e si è rivelata incapace di consegnare un semplice incarico in tempo perché era distratto da qualsiasi nuova tecnologia o giocattolo brillante e brillante attirasse la sua attenzione.

Quindi sì, è importante che i programmatori siano in grado di comunicare bene. Se non sono in grado di comunicare efficacemente con un essere umano, non possono farlo con un computer.


0

I poveri scrittori sono scrittori poveri e nient'altro. Scarse abilità di scrittura non significano che non possono affatto comunicare, ma non riescono a scrivere o esprimere molto bene. Naturalmente chiunque può dire che l'abilità comunicativa è importante e cruciale in compagnia e così via, ma ciò non significa che un programmatore con scarsa capacità comunicativa non possa svolgere bene il proprio lavoro. La programmazione e la scrittura sono arte, ma di tipo completamente diverso. Scrivere riguarda come far capire a qualche altro essere umano ciò che stai dicendo e / o agire di conseguenza, ma la programmazione non sta facendo capire al computer i tuoi requisiti, perché nessun computer capirà i requisiti degli utenti (almeno entro 100 anni da oggi IMO). La programmazione riguarda come tradurre i requisiti nel linguaggio di programmazione, ed è per questo che la capacità di scrivere non è così correlata.


1
Parte del lavoro di un programmatore è esprimersi chiaramente in codice (e commenti) in modo che, non solo il computer, ma anche altri umani possano leggere il codice. Avrebbe senso (ma non è dimostrato AFAIK) che queste abilità sono correlate.
n1ckp,

0

Assolutamente no!

Un bravo scrittore non è altro che un bravo scrittore. Chiedi a un bravo scrittore di descrivere il concetto di un database a una persona non tecnica. Cosa pensi che otterrai ...?

Un bravo scrittore, scrive. Un buon programmatore scrive un buon codice.

  • Codice che altri possono leggere sei mesi dopo che è stato sviluppato.
  • Codice che ha senso alle 2:00 del mattino quando il sistema non funziona e il debug è in corso.
  • Codice che a tutti gli altri piace prendere in prestito perché lo comprendono e possono modificarlo facilmente
  • Codice che funziona 24/7 365

Stavo andando avanti all'infinito, ma preferirei passare il tempo a rispondere ad altri post. Praticamente penso che voi ragazzi sappiate dove mi trovo su questo problema.


1
Penso che i punti elenco 1,2 e 3 richiedano uno per essere un buon scrittore oltre ad essere un buon programmatore. In sostanza, stai considerando le buone capacità di scrittura come un tratto implicito.
Mamta D
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.