Programmare è un’arte?


Tom Armitage offre un punto di vista sull’attività di scrivere software.

Chi non si è mai posto il problema di come nasca il software spesso crede che sia un’attività di tipo prettamente tecnico, quasi meccanico.

Chi, sempre esterno al mondo della programmazione, ha visto all’opera alcuni programmatori spesso li definisce artisti, per come riescono ad utilizzare la creatività per risolvere i problemi (è capitato molte volte anche a me di sentirmi definire tale).

Chi scrive software probabilmente non si riconosce in nessuna delle due categorie.

Armitage nella sua trattazione paragona l’attività di programmare a quella dell’architetto, che deve bilanciare la parte ingegneristica-strutturale con quella estetica. Questa definizione probabilmente viene da una concezione piuttosto recente e minoritaria secondo la quale il software debba essere bellodi design prima ancora che utile, sicuro o efficiente.

L’artista crea perché ispirato o perché vuole trasmettere un’idea o un messaggio attraverso la sua arte; il programmatore crea per risolvere un problema.

Quindi il programmatore non è un artista, ma un solutore, più vicino all’enigmistica classica (quella che non comprende i cruciverba e assimilati, per intenderci) che all’arte.

Ci sono delle affinità nel modus operandi di artisti e programmatori, ma le ragioni che li muovono e gli scopi ultimi divergono decisamente.

La programmazione obbliga a scomporre iterativamente (o ricorsivamente, se si è bravi) i problemi fino ad arrivare al problema atomico, che si risolve con una singola riga di codice, tenendo sempre ben presente il problema più grosso e la conseguenza di quella riga di codice in campo locale e generale. Insomma, si lavora con un occhio al microscopio e l’altro al telescopio.

Indubbiamente la programmazione richiede multidisciplinarità. Oltre al linguaggio e alla piattaforma su cui si scrive, bisogna avere delle conoscenze di matematica (con particolare riferimento al calcolo combinatorio), comunicazione dati, sistemi operativi, archiviazione e sicurezza. A queste vanno aggiunte le discipline relative all’oggetto del software: negli anni mi sono dovuto imparare i computi metrici, la gestione dei biglietti SIAE, la contabilità, la produzione dei cartoni ondulati, le strategie di marketing, i metodi per approcciare clienti e fornitori, la gestione dei pazienti e un sacco di altre cose.

In una cosa Armitage ha ragione: i linguaggi informatici sono paragonabili a quelli umani. Una persona che parla bene una lingua lo fa quando inizia a pensare in quella lingua e ad usare parole o costrutti che non sono presenti nelle grammatiche. Analogamente, il bravo programmatore deve sapere anticipare il comportamento del computer quando scrive un blocco di codice. Deve sapere se la query che sta lanciando verrà eseguita dal server in una frazione di secondo oppure lo metterà in ginocchio.

Per rispondere quindi alla domanda del titolo, no non credo che scrivere software sia un’arte. L’ultima prova? Provate a far scegliere i colori dell’interfaccia utente ad un programmatore.

, ,

6 risposte a “Programmare è un’arte?”

  1. un programmatore è spesso come un dottore: troppo occupato dalla propria materia per essere colto anche in altre. Questo avviene natualmente perché la loro materia è complessa e richiede il massimo dell’attenzione. Molta gente crede che il Design sia una disciplina artistica ma non è così: E’ una scienza. Solo adesso, a molti anni dalla nascita di questa disciplina, ci si sta rendendo conto della sua importanza in OGNI campo di applicazione. Un software ha la necessità di avere una certa ergonomia perché questa può sopperire in modo più semplice, elegante e funzionale a molti altri difetti. Non è il posto dove tenere lezioni di design ma sostanzialmente mi trovo d’accordo con te sul fatto che un programmatore non è un artista nello stesso modo in cui non lo è un cantante. Entrambi sono strumenti e sono atti ad un compito, c’è un solo ed unico modo per svolgerlo perfettamente e ce ne sono moltissimi altri, quasi infiniti, per svolgerlo bene. La strada intrapresa rende il programmatore un buon programmatore ed un cantante un ottimo cantante. Sembra assurdo ? Bene, perché è proprio per assurdo che sto ragionando. Prima di sancire se un programmatore sia o meno un artista bisogna definire il termine arte, e non è cosa da poco.

  2. “Artigiano”, sono uno sviluppatore da quasi vent’anni e spesso mi definisco così.

    Gli scopi di un artigiano sono decisamente pratici, essere un artigiano richiede visione sia del dettaglio che dell’insieme del progetto. I metodi di lavoro di un artigiano sono “generalizzabili” ma ogni volta devono essere adattati al singolo caso. Un software (od un dipinto od un mobile intarsiato) è una merce che deve essere ben realizzata, manutenibile e di costo contenuto.

    Arte? La storia finisce per ricordare i migliori tra gli artigiani come degli artisti. Francamente, lascio volentieri ai posteri il problema di capire se alcuni degli sviluppatori siano o meno degli artisti. Mi basta fare al meglio il mio lavoro.

    LLaP, Andrea

  3. Da musicista mi sento di dare la mia opinione.
    Posso essere parzialmente d’accordo sulle motivazioni che spingono un artista o un programmatore a “mettersi all’opera”: di fatto si parte da una necessità espressiva, poi dipende tutto dal ruolo che si ricopre nell’opera stessa. Un programmatore può decidere di creare un nuovo programma/funzione/algoritmo non per forza per una necessità tecnica, magari esistono programmi/funzioni/ecc che svolgono la stessa funzione, ma si vuole esprimere il proprio estro. Le meta-modalità di creazione sono fondamentalmente simili, così come un musicista esecutore vuole eseguire la propria interpretazione di una sonata di Bach o un pittore vuole rappresentare una natura morta. Può sembrare una similitudine presa per le pinze, ma da musicista appassionato di informatica che ha conosciuto diversi informatici e programmatori, le cose sono più simili di quanto non sembri.
    Sulla “scomposizione del problema” poi le cose sono ancora più vicine; l’artista sa bene quanto la cura del particolare sia fondamentale, possiamo passare ore a decidere quanto una nota possa durare (e siamo nell’ordine dei centesimi di secondo) sebbene sia un infinitesimo di un lavoro che dura per decine di minuti, eppure questo tipo di scelta influenza ed è a sua volta influenzata dalla visione d’insieme del brano. E questo riguarda sia l’esecuzione che la composizione. Esattamente come la scelta di una tonalità di colore impeccertibilmente diversa da un’altra in un’opera pittorica, ma che ben si deve bilanciare nell’insieme, altrimenti una singola microscopica pennellata rischia di danneggiare un affresco intero, esattamente come un punto e virgola nel posto sbagliato fa sballare il risultato di una query o occupa il doppio delle risorse necessarie.
    Per quanto riguarda la multidisciplinarietà, specialmente di questi tempi, non ci sono confini.
    Negli ultimi anni per un titolo di studio musicale sono necessari corsi che coprono dalla didattica alla psicologia, dall’informatica alla matematica (chi fa musica contemporanea e/o elettronica ha seguito corsi in gemellaggio col politecnico di matematica e fisica, ma anche programmazione), dal management alla tutela legale.
    In oltre, raramente un artista si occupa solo del suo campo (che già difficilmente è ristretto): aldilà della preparazione storico-culturale fondamentale, che va indietro di secoli ed è fondamentale anche per chi fa arte contemporanea, le necessità espressive devono per forza giungere da altre fonti. Non sono necessità in quanto requisiti senza i quali non si possa lavorare, quanto esigenze di crescita artistica, altrettanto importanti per la formazione.
    Certo, difficilmente ci capiterà di affrontare la produzione dei cartoni ondulati, i metodi per approcciare clienti e fornitori, o la gestione dei pazienti… Anche se per motivi di promozione e self management ho dovuto capire ed imparare la terminologia di grafica e stampa, contabilità, gestione di associazioni e non solo.
    E sull’affermazione di Armitage non mi affiderei tanto alla concezione di design estetico cui fai riferimento, quanto al design concettuale. Il design del codice vero e proprio, quello che quando voi leggete qualche riga di codice ben scritta, la guardate con soddisfazione. E lo so che lo fate!

    Insomma, secondo me siete più artisti di quanto tu non creda… A meno che tu in fondo non preferisca considerarvi una ulteriore categoria elitaria a parte, perché non volete uniformarvi alla massa artistica! 😉

    PS: non giudicare un programmatore dalla scelta dei colori della gui, quella non è arte, è roba da fighetti menosi! 😛

  4. Io mi definisco rettiliano… Scrivo in una linguaggio che solo le macchine possono capire, quando parlo gli altri mi guardano come un alieno….

  5. In ambienti strutturati la produzione di un codice prevede in genere la figura del software designer e quella del programmatore. IL software designer si occupa di progettare il software nella maniera più ergonomica possibile (user friendly) e il programmatore si occupa di farla funzionare nella maniera più efficiente possibile (computer friendly). Il confine tra UI e Engine è molto sfumato e spesso si compenetra con i limiti del linguaggio/runtime/fruizione/sistema ecc ecc…

    Il software designer usa molta psicologia, abbastanza programmazione e un pizzico di arte, il programmatore usa molta programmazione, abbastanza progettazione e un pizzico di arte.

    Sono entrambe figure creative e il processo creativo spicca quando la persona è dotata di genio o di senso artistico o di entrambi. Se poi le due figure sono racchiuse in una sola persona allora lo sforzo creativo e l’interdisciplinalità richiesti sono maggiori.

Rispondi a andcoz Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *