Come spiegare ai non programmatori che la programmazione non è un'attività ripetitiva? [chiuso]

10

Alcune persone hanno l'idea di programmare che si tratta solo di digitare ripetutamente su una tastiera. Niente di tutto questo è vero. Prima di tutto, c'è ancora molto altro da fare che digitare il codice, come l'architettura del design e così via. In secondo luogo, potrebbe essere un compito molto variabile, non ripetitivo, con nuove sfide che arrivano di continuo.

Come dovresti spiegare che la programmazione è non un'attività ripetitiva per non-programmatori ?

    
posta Anto 27.04.2011 - 15:37
fonte

11 risposte

31

Fornisci loro esempi a cui possono riguardare.

Il tennis è ripetitivo. Continui a colpire la palla sempre verso l'altro lato della rete.

Il calcio è ripetitivo. Continui a calciare la palla ogni volta finché non trovi un palo della porta.

Suonare il piano è ripetitivo. Continui a muovere le dita sul tabellone.

Accidenti, tutto così noioso !!!

    
risposta data 27.04.2011 - 15:44
fonte
18

Puoi sempre dire che la programmazione è una digitazione ripetitiva esattamente nello stesso modo in cui la scrittura in prosa è una digitazione ripetitiva. Uno scriverà un romanzo grande (o anche mediocre) sedendosi e mettendo insieme le lettere con attenzione?

    
risposta data 27.04.2011 - 15:41
fonte
18

Beh, è in un modo. Si ripetono ripetutamente le stesse lettere (A-Z, a-z, 0-9) più e più volte. Solo in diverse combinazioni.

Di solito cerco di evitare tali discussioni con queste persone.

    
risposta data 27.04.2011 - 15:44
fonte
13

La programmazione è simile alla composizione musicale . Che è lontano dall'essere un processo ripetitivo.

  • Inizi a pensare alla visione generale di ciò che devi realizzare
  • Pensi a una piccola porzione della tua composizione e la scrivi
  • Una volta terminato, lo riproduci (F5 in Visual Studio)
  • Ripeti la procedura, se necessario
  • A volte prendi in prestito idee o lasciati ispirare da altri compositori
  • A volte puoi refactoring del brano spostando o rielaborando le parti

A volte, non sai quello che vuoi, e giochi. Probabilmente il modo migliore per ottenere composizioni più interessanti ...

    
risposta data 27.04.2011 - 16:24
fonte
4

Di solito spiego che la programmazione è un problema creativo. Hai un problema: vuoi una funzionalità in un prodotto (e di solito scelgo un prodotto ben noto, Amazon.com, MS Word, ecc.) E non c'è. Non è mai stato fatto prima, e tu sei il primo, quindi questo è come qualsiasi progetto artistico - hai una visione, ma devi capire un percorso.

Mi concentro anche sul fatto che ci sia più di un modo per risolvere il problema, un sacco di modi davvero cattivi e probabilmente più di un buon modo. A lungo termine potrebbe esserci un modo migliore , ma quel modo migliore non sarà ovvio per molto tempo (estensibilità, riutilizzabilità, ecc.), Quindi al momento dello sviluppo, c'è un molte importanti chiamate di giudizio.

Infine, il prodotto finale può essere amato o odiato dal destinatario. Proprio come alcune persone amano Picasso e alcune non possono fare la testa o la coda dell'arte moderna - alcune persone potrebbero amare una caratteristica, e alcune potrebbero odiarla. Fai il meglio che puoi per la maggior parte delle persone e capisci che non puoi accontentare tutti.

Concentrarsi su:

  • territorio sconosciuto
  • nessuna risposta
  • soggetto a interpretazione

Mostra che questo lavoro è molto più simile all'arte e molto meno come lavoro noioso ripetitivo.

Parlo spesso con gli artisti (e sembrano avere una convinzione istintiva che il lavoro al computer non sia creativo, ma di solito riesco anche a metterlo in relazione con la forma d'arte preferita dell'artista .. Ad un certo livello, molti artisti sono anche i tecnici - pittura, danza, musica e probabilmente qualsiasi altra arte - implicano tutte una serie di attività ripetitive che ti portano al punto dell'esecuzione di qualcosa di nuovo, diverso e creativo. In questo modo, gli artisti hanno generalmente problemi a negare quella apparentemente ripetitiva le attività possono portare a opere di ispirazione e bellezza.

A quel punto, di solito sono disposti ad ammettere che solo perché la mia "arte" coinvolge una serie di affermazioni sintattiche bizzarre e diagrammi UML insignificanti, ciò non significa che non sia creativo in quelle righe di codice e modelli del sistema alla fine rendono qualcosa di molto diverso dalla somma delle sue parti.

    
risposta data 27.04.2011 - 17:02
fonte
3

La programmazione riguarda le astrazioni. Più scrivi e più somiglianze puoi vedere. Ma poi è il momento di astrarre. Con il refactoring si evolve un framework che elimina la duplicazione. Ciò riduce la complessità nel codice del dominio problematico.

La programmazione ripetitiva è possibile. Ma è inefficiente.

    
risposta data 27.04.2011 - 15:48
fonte
3

Se lo fosse davvero, dovremmo semplicemente usare copia e incolla: D

Una delle sfide chiave nella programmazione è creare blocchi di alta qualità, in modo tale che

  • può usarli per costruire il tuo edificio (cioè il software che stai costruendo) di componenti solidi, quindi aumentare la stabilità
  • può riutilizzarli più volte nello stesso edificio o anche in edifici diversi (per ridurre la ripetizione) e quindi aumentare la produttività
  • sarà in grado di modificare un blocco senza causare il collasso dell'intero edificio, quindi aumentare la flessibilità locale
  • sarà in grado di modificare tutte le istanze di un blocco contemporaneamente, quindi aumentare la flessibilità globale

Per sua natura, questa sfida richiede di non ripetersi .

Come corollario: se ti ripeti come programmatore, perdi tempo nella creazione di software, che non è né stabile, né flessibile.

    
risposta data 27.04.2011 - 15:59
fonte
1

A parte le altre risposte che indicano come la ripetitività o la digitazione / il clic siano superficiali, si potrebbe anche rilevare che la programmazione è in genere molto più relativa alla risoluzione dei problemi rispetto alla tipizzazione (e penso che sia stato Djikstra a dire che il computer la scienza riguarda tanto i computer quanto l'astronomia riguarda i telescopi: o qualcosa di simile ).

La digitazione è solo un modo per implementare la soluzione (e attualmente la più popolare), sebbene ci siano altri modi, come ad esempio:

  • pseudocodice su una lavagna bianca (che illustra la soluzione, ma in realtà non esegue o fa qualcosa, sfortunatamente)
  • schede perforate (ora considerate obsolete)
  • Forse matrici di logica programmabili o se vuoi che la tua soluzione sia implementata direttamente nell'hardware (anche se molto probabilmente ci sarà alcuni digitando per ottenere la soluzione dal tuo cervello al PLA, non so quanto sia comune "codificare" direttamente queste cose - non lavoro davvero con loro, basta sapere di loro da altri che lo fanno).
  • persone (ho sentito di recente un gruppo che ha implementato algoritmi di ordinamento come danza)
  • rocce in un deserto . ;)
risposta data 27.04.2011 - 15:57
fonte
0

Gran parte dell'atto di programmazione è la digitazione. Dipingere implica accarezzare con un pennello ma chiamare ripetitivo è piuttosto superficiale.

Applicherebbero quella logica per:  - I venditori parlano molto al telefono.  - I manager vanno a un sacco di incontri.  - I cantanti cantano.  - Gli attori ripetono gli script.

Se è così, è per questo che non sono un programmatore.

    
risposta data 27.04.2011 - 17:22
fonte
-2

Se vuoi essere bravo a programmare è ripetitivo, ma lo stesso può dirsi per qualsiasi cosa. La ripetizione è al centro del dominio di qualsiasi abilità.

    
risposta data 27.04.2011 - 16:00
fonte
-2

Ben programmare può davvero essere un compito piuttosto ripetitivo. Soprattutto quando l'infrastruttura è stata costruita, inizia il noioso processo di creazione della stessa finestra di dialogo / software aziendale (solo leggermente diversi). Sei fortunato se non devi partecipare per rispettare le scadenze o se hai abbastanza junior per fare quel tipo di lavoro.

    
risposta data 27.04.2011 - 17:20
fonte

Leggi altre domande sui tag