Quanto è significativo il concetto di "artigianato del software"?

7

Ultimamente, sembra esserci molto entusiasmo intorno al artigianato del software .

È un concetto ben definito? Cosa implica? In che misura la programmazione è efficacemente un'attività artigianale?

    
posta vemv 18.04.2012 - 02:58
fonte

2 risposte

11

Tra gli altri usi della parola, il termine Craft può essere definito come:

  • un'attività, come in artigianato (specialmente come hobby)
  • un'arte, un commercio o un'occupazione che richiede un'abilità speciale.

Il concetto di artigianato del software è stato gettato in giro per molti anni. Ricordo di aver discusso di questo con i colleghi fin dalla fine degli anni '90, tuttavia probabilmente è stato preso un po 'più sul serio da quando è stata rilasciata la prima copia del Pragmatic Programmer - come indicato nei commenti elencati nella domanda sugli OP.

Per quanto riguarda una definizione specifica, non conosco personalmente alcuna singola affermazione chiara che dice "questo [inserire le cose qui] è ciò che significa essere un artigiano del software". L'unico documento a cui riesco a pensare con il massimo della mente che si avvicina, è la dichiarazione e i 12 principi che definiscono il Manifesto Agile.

L'implicazione tuttavia è relativamente chiara, in quanto per fornire un software della massima qualità possibile, è necessario:

  • O soddisfare i requisiti del cliente o essere idoneo allo scopo previsto
  • Avere un'implementazione chiara e pulita
  • Sii magro - come nel non soffrire di dorature
  • Essere scalabile e amp; estendibile
  • Sii chiaramente documentato (e sì, includo il codice "leggibile" in questo)
  • Essere supportato dai test
  • hanno relativamente pochi difetti
  • Consegnato in modo tempestivo

Ottenere tutto quanto sopra "giusto" richiede un professionista altamente qualificato - o una squadra - con l'esperienza e la dedizione per ottenere il miglior risultato possibile.

La principale differenza tra i professionisti di oggi e gli sviluppatori di software professionali dipende in realtà da come sono educati, dal corpus di conoscenze che dovrebbero assorbire e dalla loro rapida diffusione nel mondo del lavoro. Un altro è quanto velocemente la conoscenza attuale diventa obsoleta e richiede nuove conoscenze per tenere il passo con le tendenze e i cambiamenti del settore. Gli sviluppatori di software sono tenuti a continuare la loro formazione per l'intera carriera, al fine di rimanere adeguatamente qualificati, mentre scambia conoscenze come carpenteria o cambiamenti di muratura raramente, se non mai durante la carriera del commerciante.

Come mestiere, puoi tracciare una serie di parallelismi tra lo sviluppo del software e alcuni dei vecchi mestieri:

  • Stagisti, laureati e junior sono effettivamente gli apprendisti . Sì, hanno studiato e hanno la laurea, ma hanno ancora molto da imparare sulla creazione di software. Nessuna azienda li assumerebbe seriamente per gestire un progetto software, o per lavorare interamente da solo senza una sorta di mentore che li guidasse, e gli "apprendisti" dovrebbero commettere errori e imparare.
  • Gli sviluppatori di medio livello sono effettivamente Journeymen , che di solito vanno nel mondo per assumersi per lavorare sotto un'altra persona altamente qualificata per ricevere una guida, ma di solito sono lasciati a lavorare con poco supervisione e si prevede di affinare le proprie capacità ed espandere le proprie esperienze.
  • Anziani e presidi sono effettivamente i Maestri artigiani , che dovrebbero avere una vasta conoscenza, ma potrebbero anche scegliere di diventare specialisti in una particolare area del loro "mestiere".

Per quanto riguarda il livello effettivo di sviluppo del software, ciò dipende dalla professionalità del singolo programmatore e dallo standard a cui quel programmatore è disposto a lavorare per fornire la massima qualità possibile nel proprio lavoro . Il fallimento dell'analogia degli artigiani è che ci sono molte persone in ruoli di gestione degli alti e medi che sono arrivate alla loro posizione senza effettivamente imparare come ottenere un elevato standard di qualità nel loro lavoro, e in qualche modo l'industria nel suo insieme ha sofferto di conseguenza. Questo è probabilmente il motivo per cui quelli di noi che considerano lo sviluppo del software più un'arte che una scienza cercano di lavorare con altri che pensano allo sviluppo del software in modo simile.

Come piccola annotazione / aneddoto, ho recentemente intervistato un laureato e gli ho fatto la domanda: "Vedi lo sviluppo del software più come un'arte, o una scienza?". Senza neanche un battito di ciglia, né prendendosi il tempo per tirare un respiro, la sua risposta immediata fu "Arte". Il suo ragionamento era basato su problemi di qualità, e solo su questa domanda l'avrei assunto sul posto se non fossi stato incalzato dalla direzione a trovare qualcuno più anziano. Inutile dire che ho tenuto quella C.V. di quel ragazzo, e lo terrò d'occhio per l'anno prossimo o per due.

    
risposta data 18.04.2012 - 06:31
fonte
2

Per dimostrare quanta variazione c'è nella definizione, aggiungerò la mia vista alla risposta eccellente di S.Robins.

L'artigianalità del software è riconducibile all'idea dell'artigiano, come un falegname. È un uomo esperto nel suo campo, capace di trasformare la richiesta del cliente in un oggetto fisico. Può farlo perché ha una serie specifica di abilità:

  • Una metodologia di costruzione (agile, a cascata, mista)
  • Abilità di problem solving (metodo scientifico, "toolbox" mentale dei modi per risolvere i problemi)
  • Conoscenza del campo (quando e dove utilizzare DB / lingua / ottimizzazione / concorrenza)
  • Esercitati con strumenti specifici (Vim, valgrind, c, python, sql, git / hg, tecnologia "hot" corrente)
  • Un miglioramento professionale

Quindi, quando l'artigiano si trova ad affrontare un problema per un cliente, non solo ha tutti i prerequisiti per costruire sull'oggetto in questione, ha le capacità necessarie per risolvere qualsiasi problema lungo il percorso, apprende nuove abilità se necessario, e per tutto il tempo si comportano in modo professionale.

Come professionista, sa che sono affari. È fuori a fare il meglio per tutti gli interessati (incluso se stesso), producendo la migliore soluzione possibile entro i vincoli dati. Capisce che l'emozione non ha posto qui (è un affare, non personale), e che quando si verificano errori ed errori che possono essere affrontati e risolti dalle sue abilità esistenti.

    
risposta data 18.04.2012 - 16:28
fonte

Leggi altre domande sui tag