Come condividi il tuo mestiere con i non programmatori?


43

A volte mi sento un musicista che non riesce a suonare spettacoli dal vivo. La programmazione è un'abilità piuttosto interessante, e un mondo molto vasto, ma molto accade "fuori dalla telecamera" - nella tua testa, nel tuo ufficio, lontano dagli spettatori.

Ovviamente puoi parlare di programmazione con altri programmatori, c'è la programmazione tra pari e puoi creare qualcosa che puoi mostrare alle persone, ma quando si tratta di spiegare ai non programmatori cosa fai o come sono la tua giornata di lavoro, è un po 'complicata.

Come riesci a far capire ai non programmatori della tua vita cosa fai?

NOTA: questa non è una ripetizione di Far comprendere ai non programmatori il processo di sviluppo , perché quella domanda riguardava la gestione delle aspettative del cliente.


Questa è la natura della professione: ci sono poche ricompense tangibili per i tuoi sforzi perché sei l'unico che capisce quello che fai. Tuttavia, la conoscenza, i soldi sono abbastanza gratificanti per la maggior parte.
Nessuno il


12
Sii contento di non scrivere cose per motivi di sicurezza. La sicurezza è persino meno dimostrabile di ogni altra cosa. "Vedi, sta facendo la stessa cosa che ha fatto prima, solo ora è sicuro ..."
Shawn D.

2
Qualcuno può spiegarmi, quale categoria rientra in programmers.stackexchange.com/faq
Noname

1
@Dave si adatta alla categoria di domande che sono state pubblicate quando il sito era ancora in beta, se la memoria mi serve bene. Le regole non erano completamente perfezionate allora.
Epsilon,

Risposte:


31

Tre parole:

dumb it down

La programmazione è complessa. Ci vuole molto lavoro per capirlo. E le gioie della programmazione sono ancora più sottili.

Per comunicare i miei successi e simili ad altri (ad esempio la famiglia), devo comunicare a un livello più comune. Confronta la programmazione con le normali cose del mondo reale.

(ovvero un oggetto di un'auto con un cruscotto, sedili e ...)

È ancora meglio se conosci qualcosa del tuo pubblico perché puoi usare cose che comprendono che sono più complesse dei normali concetti di tutti i giorni.

Ad esempio, mia moglie era un'insegnante di scuola, quindi posso confrontare alcuni dei miei processi di sviluppo software con i processi di insegnamento che doveva usare. Aiuta immensamente.

Ma alla fine devi semplificare, semplificare e semplificare ancora un po '. E anche allora, è difficile far capire a qualcuno quanto sia bella una classe ben realizzata con buoni test unitari. :)


25
+1 per "E anche allora, è difficile far capire a qualcuno quanto sia bella una classe ben realizzata con un buon test unitario." Ho difficoltà a convincere alcuni programmatori a capirlo.
CaffGeek

3
Sono un fan dell'utilizzo di analogie sbagliate per spiegare concetti esoterici.
Malachi,

49

Non ci provo nemmeno. Se non sono abbastanza orientati alla tecnologia da avere almeno una conoscenza di base della programmazione, li annoierò solo con i dettagli. Di solito vado con qualcosa di altissimo livello come "creo siti Web" o "scrivo programmi per computer per fare X"


13
+1: utilizzo sempre questo metodo. Se voglio davvero che sappiano come è andata la mia giornata, lancerò loro dei termini e guarderò quello sguardo vetroso che prende il sopravvento sui loro occhi. Quindi qualcuno cambia argomento.
Joel Etherton

7
Ho scoperto che le persone tendono a cambiare argomento non appena menziono i computer. O quello o iniziano a lamentarsi del proprio computer e chiedere consigli. Immagino che i dottori abbiano lo stesso problema.
Brian Ortiz,

3
@Brian tranne che per la maggior parte dei medici risolve i problemi piuttosto che costruire nuovi sistemi;)
Armand

2
Sì. La risposta più semplice è "Creo roba ... più specificamente, creo un sistema di cluster in tempo reale ad alta disponibilità, per ..." - ed eccoli qui ...
Sorantis

Questo è ciò che faccio. Poi aspetto i 5 secondi di silenzio e dico "Annnnnd c'è quel killer di conversazione fuori dai piedi. Allora, cosa fai?"
pdr

12

Cerco di spiegarlo in termini di risoluzione di un problema. Ho appena scelto di utilizzare un programma per computer per risolvere il problema. In questo modo puoi discutere di ciò che hai fatto in termini di problema che stai cercando di risolvere. Una volta capito, il salto per risolverlo attraverso la programmazione non è molto lontano e di solito può essere fatto da tipi non tecnici.


12

Ho avuto mio fratello Rob a chiedermelo. (È un artista e illustratore, come libri per bambini, interni di musei, cose del genere.)

Ho cercato di spiegarlo mostrandogli il Relay Computer di Harry Porter , perché penso che catturi l'essenza dei computer e della programmazione in un certo senso.

Non era quello che voleva, ed ero un po 'confuso.

Solo più tardi mi sono reso conto di quale fosse il vero problema. Mi è venuta in mente questa citazione di Oscar Wilde:

Il fatto è che la civiltà richiede schiavi. I Greci erano proprio lì. A meno che non ci siano schiavi per fare il lavoro brutto, orribile, poco interessante, la cultura e la contemplazione diventano quasi impossibili. La schiavitù umana è sbagliata, insicura e demoralizzante. Dalla schiavitù meccanica, dalla schiavitù della macchina, dipende il futuro del mondo.

Ciò che mi entusiasma come ingegnere è che sto costruendo schiavi meccanici. Da bambino volevo mettere una diga nel torrente e fare in modo che una ruota idraulica producesse elettricità, in modo che potesse fare qualcosa per me , mentre guardavo. Nel motore di un'auto è presente un albero a camme. In realtà è un programma primitivo. Apre e chiude le valvole quando lo voglio, quindi non devo farlo.

Il mondo di un artista è completamente diverso. Se ascolti, con gli occhi chiusi, una resa della nona sinfonia di Beethoven, verrai trasportato. Devi dargli la tua completa attenzione, e quando è finito, lo desideri. Se visiti Falling Water, il capolavoro di Frank LLoyd Wright, verrai trasportato. Onestamente non so come si possa vivere. Dove puoi fare casino? Ti cattura completamente. È una sinfonia architettonica.

L'arte non fa qualcosa per te, fa qualcosa per te.

Ho cercato di trovare l'arte in quello che faccio. C'è bellezza, se guardi, ma devi guardare. Questo è ciò che ci avrebbe collegati.


3
Ho letto che inizialmente come Relay Computer di Harry Potter , la magia è spesso usata per descrivere ciò che facciamo ovviamente;)
jk.

@jk: Scommetto che da solo porta gli studenti nelle sue classi :)
Mike Dunlavey il

@jk. Il più delle volte vedo la magia nera nei nostri lavori.
heishe

7

Raccontare una storia. Non concentrarti su ciò che fai, ma su come ti senti quando lo fai, su come sei appassionato o annoiato, sui rapporti con i tuoi colleghi.


1
+1 per concentrarsi sui rapporti con i colleghi. Tutti possono relazionarsi con quel tipo di cose. "Sono andato a pranzo con il capo e stava dicendo ..." è molto simile a "Ho trascorso metà della mia giornata cercando di rimuovere le condizioni di gara"
Andy Hunt,

3

Le mie due analogie privilegiate per questo scopo sono: una ricetta e un'enorme burocrazia. Questo è quello che ho spiegato in questo QA: 30 minuti per spiegare la programmazione a un bambino di 15 anni

Ho usato l'analogia della ricetta molte volte per spiegare come la programmazione riguarda la scrittura di un insieme rigoroso di istruzioni che hanno un risultato tangibile e prevedibile quando vengono seguite.

In realtà ho usato l'analogia della burocrazia solo un paio di volte, perché la maggior parte delle persone non ha davvero bisogno di capire oltre l'analogia della ricetta, ma entrambe le volte sono state molto illuminanti per la persona. Sembrava che la programmazione significasse il richiamo totale di ogni riga di codice (ad es. "Ma se hai una memoria così scadente, come puoi programmare un computer?"), Ma in realtà si tratta di costruire molti moduli autonomi che lavorano insieme per raggiungere l'obiettivo più grande. I moduli di un programma sono come i dipartimenti di una grande azienda: unità autonome che si occupano principalmente del proprio pezzetto di tutto e comunicano con altri reparti attraverso memo.


Qualcuno ha detto che stavano costruendo schiavi meccanici, dopo l'ennesimo "problema" del cliente, mi sento come se fossimo gli schiavi e stiamo costruendo distopie meccaniche con cui vivere.
gbjbaanb

2

Penso di ottenere la maggior risposta quando spiego qualcosa in termini dell'idea alla base del codice anziché del codice stesso. Ho semplicemente eliminato tutto il gergo tecnico, evito di menzionare i termini relativi alla programmazione e parlo solo dell'idea e di ciò che viene effettivamente fatto .

Ad esempio, di recente ho provato a spiegare come funziona un filtro antispam. Ho appena detto che tiene traccia delle parole che si trovano in genere nello spam e di quelle che non si trovano nello spam. Il record viene creato utilizzando e-mail di spam e non spam note. Dopodiché, ogni volta che arriva una nuova e-mail, controlliamo solo quante delle parole sembrano spammy (cioè si verificano nel nostro registro di parole spammy) e quante sembrano non spammy. Se ci sono troppe parole spam, probabilmente si tratta di spam e quindi viene inviato al cestino. Le persone non tecnologiche con cui stavo parlando hanno seguito abbastanza bene l'idea.


1

metafore

Molte volte, non lo descrivo affatto come un programma, provo a rappresentarlo come un concetto completamente diverso con interrelazioni simili.

Rende molto più interessante la visualizzazione del programma e talvolta mi aiuta a guardarlo sotto una nuova luce.

Non descrivi l'elettricità a qualcuno che non ha mai lavorato prima parlando di corrente e tensioni, vero? Inoltre, è divertente descrivere alcuni concetti come se un processo informatico ultra consapevole li facesse accadere come per magia. Una piccola storia che l'immaginazione non li danneggia come la realtà di quanto siano veramente freddi e razionali i computer.



1

Molte persone che non hanno programmato sembrano credere che un programmatore passi molto tempo a caccia di bug, cercando visivamente migliaia di righe di codice per una virgola errata. Quindi per prima cosa assicuro loro che non è così, e se lo fosse, sarei completamente senza speranza.

Confronto spesso la programmazione per computer con la scrittura di un libro di cucina. Un ricettario è un insieme di istruzioni per le persone, mentre un programma per computer è un insieme di istruzioni per un computer. Alcuni programmi sono molto più complessi dei libri di cucina e i programmi vengono modificati più frequentemente, ma c'è una certa somiglianza nella struttura. Se un libro di cucina contiene sette copie delle istruzioni per preparare una salsa e la ricetta deve essere cambiata, qualcuno deve trovare tutte quelle copie e sistemarle tutte.


Sarebbe un mondo doloroso in cui non è possibile programmare il computer per semplificare la programmazione ("ricerca visiva ... per una virgola errante").
compman,

1

Penso che una buona analogia stia costruendo una fabbrica. La maggior parte delle persone ha visto qualcosa come "Come è fatto" in cui si vede che un articolo viene spostato attraverso diversi nastri trasportatori e macchine con un prodotto finito che si spera alla fine. Dico alle persone che costruisco cose del genere, ma invece di essere fabbriche fisiche che lavorano su oggetti fisici, sono virtuali e lavorano sui dati. Ovviamente questa non è una buona analogia per tutto il tipo di programmazione, ma penso che dia una buona idea della complessità e parallelamente molti tipi di applicazioni.


0

Non puoi davvero condividere il tuo mestiere: solo titoli sul tuo lavoro con gli altri

Tuttavia, quello che puoi fare è invece di condividere la tua arte, è condividere la tua vita con persone che sono nella tua stessa arte (:


0

Di solito non parlo di come è fatto, ma piuttosto delle caratteristiche del lavoro .

Di solito sottolineo che è incredibilmente complicato, così complicato che nessuna persona potrebbe sperare di iniziare a capire con precisione nei dettagli esattamente cosa sta succedendo. Probabilmente richiederebbero 30 anni di studio delle varie parti interagenti (dall'elettronica attraverso i framework), più circa un'ora per riga di codice attiva, e a quel punto dovresti tornare a studiare perché l'hardware sarebbe cambiato così tanto che sono altri 10 anni che fanno trekking sull'ultima versione.

L'altra parte importante è quanto possa essere gratificante creare qualcosa di così flessibile che migliaia, forse milioni di persone potrebbero usarlo per arricchire la propria vita, qualcosa di unico (almeno nei dettagli) e qualcosa da cui hai imparato molto.

Se nessuno mi ha riempito la bocca di calze a questo punto, dimostrerei felicemente un'applicazione, mostrando un po 'della complessità e flessibilità possibili.


0

Dico loro che al di fuori della scrittura di sinfonie e tesi e romanzi matematici, la programmazione è l'unica possibilità che avrai di impegnarti in compiti / strutture con questo livello di complessità e complessità. Ovviamente, non dire che un'app Web decente è un capolavoro storico, ma una volta che le persone si rendono conto che puoi usare la tua mente a questo tipo di livello ogni singolo giorno, allora "capiscono". Molti lavori sono degni e ben pagati, ma si riducono a un compito procedurale abbastanza semplice ripetuto ancora e ancora e ancora.

Almeno, è così che lo guardo. Potrei sbagliarmi.


0

In modo diverso prendere le altre 15 risposte ...

Invece di spiegare i dettagli del mio lavoro (programmazione), cerco di concentrarmi sulle soluzioni che il lavoro risolve, ovvero quali problemi i sistemi / software che costruisco effettivamente risolvono per l'utente. Di solito è un dominio non di programmazione, a meno che tu non stia scrivendo un compilatore o qualcosa del genere, nel qual caso dovresti spiegare perché è utile.

In questo modo, rende più facile per le persone capire che è una natura complessa e come si collega al "mondo reale".

Come analogia, come fabbro medievale, probabilmente spiegherei (alla signora nella taverna locale) che faccio delle spade per fare a pezzi il nemico, non come temperare l'acciaio e martellarlo con un certo angolo e forza (a meno che loro chiedono). Speriamo che capisca che è utile (...) tagliare un nemico a pezzi (...) e può essere difficile da fare (carenza di acciaio, nemici corazzati, luogo di lavoro fumoso, ecc.) E quindi si ottiene un certo apprezzamento per l'esecuzione di un compito complesso.

(Quindi, lanciare incudini equivarrebbe a creare compilatori e dovresti spiegare a cosa servono ...)


0

Lo paragono alla costruzione di una casa, se vivessimo in uno strano universo con particelle esotiche e anti tempo:

Hai un'idea per una casa davvero interessante, quindi costruisci un abbozzo di come sarà e avrai un piano generale su come procedere. Vai al negozio di ferramenta e acquisti un po 'di legname per costruire le pareti, ma continuano a cadere perché il terreno è irregolare. Quindi vai a comprare cemento per porre le fondamenta, ma il cemento non si asciugherà e non puoi capire perché. Torna al negozio di ferramenta e chiedi perché, ma l'impiegato diventa catatonico. Vai in 8 diversi negozi di ferramenta fino a quando uno ti dice che il cemento che hai usato è stato sviluppato nell'autunno del 1989, ma hai acquistato la tua proprietà nell'inverno del 1989, quindi sono incompatibili e ti vende il cemento 2013.1.1 più recente. Torna a gettare le fondamenta e appena lo fai, il cemento scompare. Questa volta tutti i dipendenti diventano catatonici, quindi vai su Google a casa tua e scopri che una volta era un sito di test nucleari. Quindi google gli effetti dei test nucleari sul suolo e scopri che provoca i radicali liberi. Lo cerchi su Google e inizi a ricercare radiazioni elettromagnetiche, quindi fermioni, poi bosone, poi teoria delle stringhe e qualcosa su un gatto. Non vuoi arrenderti perché hai perso così tanto tempo, quindi hai colpito forte la bottiglia. Torni a casa tardi e togli la tua rabbia a tua moglie, sostenendo che lei è la ragione per cui non puoi costruire la casa perché lei e i suoi figli stanno occupando tutto il tuo tempo ... Circa 3 mesi dopo ti accorgi di essere passato e qualcosa su un gatto. Non vuoi arrenderti perché hai perso così tanto tempo, quindi hai colpito forte la bottiglia. Torni a casa tardi e togli la tua rabbia a tua moglie, sostenendo che lei è la ragione per cui non puoi costruire la casa perché lei e i suoi figli stanno occupando tutto il tuo tempo ... Circa 3 mesi dopo ti accorgi di essere passato e qualcosa su un gatto. Non vuoi arrenderti perché hai perso così tanto tempo, quindi hai colpito forte la bottiglia. Torni a casa tardi e togli la tua rabbia a tua moglie, sostenendo che lei è la ragione per cui non puoi costruire la casa perché lei e i suoi figli stanno occupando tutto il tuo tempo ... Circa 3 mesi dopo ti accorgi di essere passatoquasi finendo la casa, per non sapere nemmeno perché volevi costruire la casa in primo luogo.


-1

Dico solo loro che quello che faccio è guardare a quello che fanno per il loro lavoro e creare software per computer che faciliterà il loro lavoro.


o sostituisci il loro lavoro, oh no !!!
jhocking

-2

Come alcuni di voi hanno detto, usate analogie che abbiano un senso per loro. Cerco sempre di portare Google in qualche modo, se il mio codice fa qualcosa di simile a google, o mostra i vantaggi finanziari, o come questo aiuta le persone in qualche modo ...


-2

A volte mi arrendo e dico solo che passo la mia giornata a modificare i file di testo. Che di solito è vero se non la storia completa.

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.