Che cosa è successo al modello di "Team chirurgico" da "The Mythical Man-Month"?


164

Anni fa, quando ho letto The Mythical Man-Month, ho trovato molte cose che già conoscevo da altre fonti. Tuttavia, c'erano anche cose nuove lì dentro, nonostante il libro fosse del 1975. Uno di questi era:

Il team chirurgico

Mills propone che ogni segmento di un grande lavoro sia affrontato da una squadra, ma che la squadra sia organizzata come una squadra chirurgica piuttosto che una squadra di macellazione del maiale. Cioè, invece che ogni membro tagli il problema, uno fa il taglio e gli altri gli danno tutto il supporto che migliorerà la sua efficacia e produttività.

Questo è un modello molto interessante per l'organizzazione di un team di sviluppo software, ma non l'ho mai trovato descritto in nessun altro libro di ingegneria del software, nemmeno menzionato da nessuna parte.

Perché?

  • All'epoca il "team chirurgico" era persino insolito?
  • Oppure è stato provato e fallito?
    • In tal caso, come è fallito?
    • In caso contrario, perché non vediamo questo modello implementato nei progetti software di oggi?

12
Direi che questo può solo portare risposte basate sull'opinione. La mia opinione istintiva è che nessun "ingegnere del software" vuole essere visto come un ruolo di "supporto". Vogliono essere considerati uguali a tutti gli altri membri della squadra. Ciò può essere dovuto al fatto che la maggior parte degli sviluppatori di software è estremamente giovane. La maggior parte delle squadre non ha nessuno che possa rivendicare l'anzianità ed essere considerata il "chirurgo" della squadra.
Euforico,

43
Un potenziale problema che vedo quando cerchi intenzionalmente di organizzare un team in questo modo è identificare correttamente chi dovrebbe essere il chirurgo.
Bart van Ingen Schenau,

9
@Euforico Non dimenticare alcuni dei manager che si illudono nel pensare di avere già il loro programmatore di chirurghi stellari super-uber-guru, quindi perché impiegare tutti quei contadini di supporto in primo luogo? Ho visto la mia parte di mons. Che non mostrava prove di comprensione dello sviluppo del software e delle sue sfide intrinseche mentre "gestivo" i team del software, o molto altro al di là dei loro colorati fogli di calcolo Excel, purtroppo (di solito, anche se non sempre, le persone vicine alla pensione ).
code_dredd

7
Potrebbe avere qualcosa a che fare con il fatto che la "chirurgia" è una delle branche della medicina più arretrate . In effetti, è uno scherzo ben noto nel Regno Unito che i chirurghi trascorrono 7 anni a studiare per poter essere chiamati "dottori", e poi altri 7 anni in modo che possano essere chiamati di nuovo "Mr" o "Mrs"! Infatti riorganizzare un intervento chirurgico per migliorare le sue prestazioni seguendo il "best practice" di altri settori con tassi di errore molto più bassi, ecc (in particolare, l'aviazione civile) è uno sforzo continuo all'interno della professione medica. ...
alephzero,

6
@alephzero: Quelle sono un paio di affermazioni divertenti. Dove hai praticato esattamente la chirurgia? Qui, la quantità di schifezze che chiamate "best practice" occupa gran parte del tempo di un chirurgo e produce zero benefici. Le persone super intelligenti [ironiche] si sforzano così tanto di migliorare qualcosa che non capiscono aggiungendo altre cazzate burocratiche quasi ogni settimana. Le cause del tasso di fallimento che lei menziona non sono tuttavia affrontate, al contrario. Quasi tutti i fallimenti sono dovuti alla privazione del sonno, all'istruzione insufficiente e alla sopravvalutazione. Spesso tutti e tre insieme.
Damon,

Risposte:


103

"The Mythical Man-Month" è uscito l'anno in cui ho iniziato il college e, per usare l'attuale vernacolo, UUUGE! :-) Quello che devi capire è la differenza nel modo in cui il software è stato sviluppato POI rispetto ad ORA. Back In The Day (tm) praticamente tutta la codifica è stata fatta per prima sulla carta, poi è stata inserita in un copione (indovinato) delle schede perforate, quindi è stata letta, compilata, collegata, eseguita, i risultati sono stati ottenuti e il processo ripetuto. Il tempo della CPU è stato costosoe risorsa limitata e non volevi sprecarla. Idem e allo stesso modo spazio su disco, tempo dell'unità nastro, ecc., Blah. Sprecare un tempo CPU perfettamente buono in una compilazione che ha provocato errori (shock e horror!) È stato ... beh, uno spreco di tempo CPU perfettamente buono. E questo è stato nel 1975. All'epoca in cui Fred Brooks stava sviluppando le sue idee, che era la CPU dalla metà alla fine degli anni '60, era ancora di piùcostoso, memoria / disco / qualunque cosa fosse ANCORA più limitata, ecc. ecc. L'idea alla base del team chirurgico era quella di garantire che lo sviluppatore di One Super Great Rockstar non dovesse perdere il suo tempo in attività banali come il codice di controllo da scrivania, il keypunching, invio di lavori, in attesa (talvolta per ore) di risultati. Rockstar Dude Developer Man doveva essere CODICE SCRITTURA. La sua legione di groupies / impiegati / sviluppatori junior avrebbe dovuto fare le cose banali.

Il problema era che entro 2 anni dalla pubblicazione del libro di Brooks le idee di base dietro The Surgical Team stavano venendo meno:

  1. Terminali CRT e file su disco hanno iniziato a sostituire i keypunch e i deck delle carte. Il tempo del computer è diventato meno costoso, sono diventati disponibili più computer e il tempo di consegna dei lavori è diminuito drasticamente. Quando sono arrivato al college (Miami University, Oxford, Ohio, classe '79, grazie per avermelo chiesto) beneil cambio di lavoro è stato di circa un'ora. Durante la settimana delle finali - quattro ore, forse, a volte sei. (Abbiamo gareggiato per il tempo della CPU con un gruppo di società commerciali e università - e gli utenti commerciali hanno avuto la priorità assoluta). Durante il mio ultimo anno, a quel punto Miami era uscita dal loro accordo di "computer condiviso", aveva installato il proprio IBM 370/145 nel campus e aveva un bel mini HP su cui lavoravo che fungeva da stazione RJE che potevamo trasformare mainframe lavori in giro in cinque minuti o meno. Ora valeva la pena inserire il codice sull'HP, inviarlo dall'HP al mainframe, modificare i pollici / fumare una sigaretta e recuperare l'output molto prima che tu potessi finire di controllare il tuo codice da scrivania.

  2. Il team chirurgico ha come premessa di base l'idea che tu (o il "management", dio ci aiuti tutti) puoi identificare The Rockstar Surgical Developer Dude. In effetti, dubito che sia possibile. Ci sono sviluppatori di rockstar, lo sanno tutti - gli studi hanno mostrato differenze di produttività tra i migliori e i peggiori sviluppatori fino al 2000% - ma identificando quella persona senza farli scrivere codice per un lungo periodo di tempoè molto probabilmente impossibile. L'unico modo per sapere se qualcuno è uno sviluppatore di Rockstar è far sì che sviluppino effettivamente il codice, ma se NON sono il Dude dello sviluppatore chirurgico di Rockstar, faranno cose eccitanti come il controllo da scrivania del suo codice, il keypunch su carte e schlepping di scatole di schede perforate fino al dipartimento Job Entry, quindi in piedi in attesa di risultati in modo da poterle riportare a Mr. Rockstar Surgical Developer Dude invece di imparare a programmare l'unico modo che funziona davvero: scrivendo codice, debug, ecc. Back In The Day (tm) non c'erano concorsi di programmazione, non c'era Stack Overflow, non avevi un PC su cui poter scrivere codice ogni volta che ne hai voglia, non c'erano libri di Algorithms For Idiots - l'unico modo per imparare a programmare era andare a scuola e specializzarsi in qualcosa in cui si doveva fare un po 'di programmazione. Ma programmazionedi per sé non è stato preso sul serio, e si pensava che fosse qualcosa che la gente non voleva fare . Nel mio primo corso universitario (SAN151 - Introduzione all'analisi dei sistemi, Dr. Tom Schaber - grazie, Tom :-) ci è stato detto dall'istruttore che "... dovevamo solo affrontare il fatto che avremmo dovuto spendere un un paio di anni come programmatori prima che potessimo diventare analisti di sistemi ". "Due anni?", Ho pensato. "DEVO FARE SOLO QUESTO PER DUE ANNI?!?". Sono stato seriamente sconvolto. Per fortuna aveva torto e da allora ho praticamente programmato un codice. :-)

  3. Il team chirurgico presume che i programmatori siano una risorsa relativamente rara. In realtà ci sono voluti ancora alcuni anni, ma con l'avvento dei PC nei primi anni '80 la programmazione è diventata qualcosa in cui tutti i geek potevano essere coinvolti. Il prezzo dei computer ha iniziato a scendere, il prezzo degli strumenti di sviluppo ha iniziato a scendere, ed è stato tutto grandine Turbo Pascal - per gli standard di oggi non era molto, ma al momento era un IDE Pascal completo per circa 40 dollari, il che era assolutamente pazzesco! Ora ANYBODY potrebbe entrare nella programmazione - se tu potessi permetterti un computer, e quando IBM ha deciso di mettere il PCjr (sì, il mio primo PC è stato uno dei più grandi errori di IBM :-) in vendita per circa $ 500 per sbarazzarsi di quei tacchini, contanti disadattati dappertutto saltarono i loro pagamenti di affitto per un mese ("Sì, lo so, ma io ... ho rotto la mia uuvula e ho dovuto fare un intervento chirurgico e ... .uh ... sì, la prossima settimana, nessun problema, grazie, amico ...) e li ha risucchiati a prezzi di vendita al fuoco. Quindi abbiamo speso più di quanto abbiamo pagato per il computer in componenti aggiuntivi per renderlo utilizzabile. ("Sì, amico, la prossima settimana, sicuramente, probabilmente ..." :-).

Ciò che mi rende davvero triste è che anche oggi, se chiedi alle persone se hanno mai letto "The Mythical Man-Month" o se comprendono la lezione principale ("L'aggiunta di risorse a un progetto in ritardo lo rende in seguito") ti danno uno spazio fissare - e quindi procedere a fare esattamente gli stessi errori commessi da Tutti quegli anni fa durante lo sviluppo di OS / 360. Tutto nuovo è nuovo di nuovo ...: -}


20
Se qualcuno che legge questo ha l'edizione del 20 ° anniversario del libro, vale la pena leggere la nuova prefazione e il nuovo capitolo 19. Mentre anche l'edizione del 20 ° anniversario ha più di 20 anni a partire dal 2017, l'autore sottolinea alcune delle affermazioni in questa risposta che viene spesso trascurata nella fretta di riassumere l'intero libro come "l'aggiunta di ingegneri a un progetto già in ritardo lo rende ancora più tardi".

1
Cosa significa "UUGE" nel mondo? Ottima risposta, a proposito.
Wayne Conrad,

5
@WayneConrad vernacolare per enorme .
zzzzBov,

1
Essendo stato un programmatore di sistemi IBM durante quel periodo, era comune avere ruoli ben definiti nel team, con una specialità in una particolare parte del sistema operativo. Ci si aspetterebbe che la persona in ciascuno di quei ruoli conoscesse o imparasse tutto ciò che c'era da sapere al riguardo e fungesse da personale di supporto per qualsiasi altro esperto. Abbiamo essenzialmente finito con un team chirurgico per membro dello staff, ognuno con la propria specialità.
Joe McMahon,

1
In risposta al tuo commento su come ripetere gli stessi errori più volte, l'articolo di Wikipedia per il libro ha una citazione dell'autore che ti potrebbe piacere: La tendenza dei manager a ripetere tali errori nello sviluppo del progetto ha portato Brooks a domare che il suo libro si chiama "La Bibbia dell'ingegneria del software", perché "tutti lo citano, alcune persone lo leggono e alcuni lo seguono".
Ryan,

87

Ci sono alcuni aspetti di quel concetto che a volte vengono implementati oggi, ci sono altri aspetti che vengono evitati .

Mantenere le squadre piccole è una delle caratteristiche di base dei metodi Agile, ma è anche praticata al di fuori di Agile.

I team interfunzionali sono anche un punto fermo di Agile, ma anche al di fuori di Agile.

Il ruolo dell'impiegato del programma è ampiamente ripreso da sistemi computerizzati come i sistemi di controllo della versione, i sistemi di gestione della configurazione del software, i sistemi di gestione delle modifiche, i sistemi di gestione dei documenti, i wiki, i sistemi di costruzione continua con depositi di manufatti e così via. Voglio dire, puoi davvero immaginare di pagare un dipendente a tempo pieno per stampare il codice sorgente e indicizzarlo e archiviarlo manualmente?

Allo stesso modo, il ruolo di amministratore di sistema (non parte del team chirurgico di Mills, ma parte di un tipico team interfunzionale degli ultimi anni) è stato superato da concetti come DevOps (che assorbe il ruolo di Sysadmin nel ruolo di ingegnere del software) , Platform-as-a-Service, Infrastructure-as-a-Service e Utility Computing (rendendo il ruolo di Sysadmin "il problema di qualcun altro"), o Infrastructure-as-Code (trasformando l'amministrazione del sistema in ingegneria del software).

Uno degli aspetti che cerchiamo di evitare oggi è che al massimo due persone capiscano il sistema. Solo il chirurgo è sicuro di comprendere appieno il sistema, il copilota può o meno. Questo dà un fattore bus compreso tra 1 e 2. Se il chirurgo si ammala, il progetto è morto. Periodo. La risposta agile a questa è la proprietà del codice collettivo, che è esattamente l'opposto di quel modello: nessuno è singolarmente responsabile di qualsiasi parte del sistema. Invece, tutti sono responsabili di tutto come gruppo .

Infine, ci sono alcuni presupposti integrati in quel concetto, che sono obsoleti. Ad esempio, anche se non è dichiarato esplicitamente, il team è organizzato in modo tale che solo una persona (il chirurgo) disponga effettivamente di un computer. Questo, ovviamente, perché al momento in cui l'articolo è stato scritto, anche l'idea che un'intera squadra avrebbe avuto un computer per sé, figuriamoci una persona nella squadra, era un tratto. (Anche nel 1980, quando venne rilasciato Smalltalk, una delle cose che contribuirono al suo fallimento fu il fatto che il sistema era impostato in modo tale che ogni sviluppatore e ogni utente avessero il proprio computer - completamente impensabile in quel momento.)

Quindi, in breve: non penso che il concetto sia stato implementato esattamente come descritto, ma alcuni aspetti di esso sono sicuramente implementati, alcuni aspetti sono considerati indesiderabili ed evitati attivamente, alcuni sono obsoleti e alcuni sono Probabilmente Good Ideas ™, ma nessuno lo fa.


1
Per quanto riguarda il penultimo paragrafo, penso che il chirurgo avrebbe dovuto lavorare con carta e penna e l'impiegato sarebbe stato l'unico membro del team con accesso al computer.
Bart van Ingen Schenau,

15
"puoi davvero immaginare di pagare un dipendente a tempo pieno per stampare il codice sorgente e indicizzarlo e archiviarlo manualmente?" No, ma posso sicuramente immaginare di pagare un dipendente a tempo pieno per gestire il controllo delle versioni e i sistemi di generazione continua, e in effetti in qualsiasi azienda di medie o grandi dimensioni questa è la norma. In effetti, gestire wiki, sistemi di gestione dei documenti e simili è un ruolo completamente separato, ancora più grande, che di solito c'è un intero periodo di scrittori tecnici pagati per fare a tempo pieno.
Miglia in rotta il

9
"l'intero team avrebbe avuto un computer per se stesso ... era un allungamento" - all'inizio degli anni '80 le organizzazioni avrebbero avuto minicomputer + sistemi basati su terminali, quindi mentre era lo stesso computer, gli utenti avrebbero comunque avuto accesso ad esso su un piano di parità base e la capacità di eseguire i propri programmi (presupponendo che esistessero isolamento e sicurezza degli utenti decenti).
Dai

2
Mentre i computer erano costosi nel 1975, i keypunch erano abbastanza economici. Quando ho programmato per la prima volta i mainframe (non in 75, ma 77) scrivevamo il codice su carta, lo perforavamo sulle carte, lo consegnavamo a un wicket e poi ricontrollavamo periodicamente per vedere se la stampa era stata riconsegnata. (Girare il tempo potrebbe essere di 2 ore per noi e in alcuni siti più di un giorno.) Un impiegato sarebbe stato molto utile per tutti tranne il primo di questi compiti. Non ho visto terminali fino al 1979 circa.
Theodore Norvell,

1
Ri: Smalltalk - non solo tutti gli sviluppatori e tutti gli utenti dovevano avere il proprio computer, ma quei computer dovevano anche essere potenti computer con molta memoria e una GUI . Pensa a "workstation" anziché a "PC". I PC IBM originali non avevano la potenza per eseguire Smalltalk. Un vero peccato, secondo me ...
Bob Jarvis il

20

Una volta, un'istruzione universitaria era qualcosa di unico e gli ingegneri erano tra i pochi eletti. I computer erano costosi e i team hanno lavorato a progetti con una ROI aziendale definita. Questi non erano molto comuni.

Quello che è successo sono stati i microcomputer, l'onnipresente istruzione universitaria e i sistemi informatici che non hanno nemmeno bisogno di titoli universitari per progredire. Inoltre, ciò che è accaduto è stato lo spostamento dell'economia e l'aumento del costo del lavoro.

L'economia di un supporto 8: 2: il rapporto degli ingegneri non ha più senso. Gli ingegneri devono essere il loro supporto. Un essere umano moderno con istruzione e competenze sufficienti per essere efficacemente collegato a un team di sviluppo è troppo costoso per non fare il proprio sviluppo in qualche modo.

(Un termine economico correlato è "la malattia dei costi del settore dei servizi").


5
Ho annullato il voto a causa dell'assurda affermazione relativa all'aumento del costo del lavoro. Il lavoro, anche con conoscenze specialistiche in ingegneria, oggi è più economico di quanto non fosse nel 1969. In effetti il ​​costo del lavoro oggi è più costoso alla base di tutta questa risposta ed è una falsa affermazione.
RibaldEddie,

2
@RibaldEddie rispetto a cosa? Se si confronta il lavoro con il costo della vita, è diminuito; un'ora di lavoro può procurarti più cibo / alloggio di quanto non potesse nel 1969
k_g

3
@k_g bene dipende dalla posizione. In termini di inflazione, nella maggior parte dei luoghi negli Stati Uniti, è possibile assumere uno sviluppatore per meno in dollari corretti per l'inflazione oggi rispetto al 1969. Per riferimento, nel libro Brooks suggerisce 20k per quello che oggi considereremmo un architetto di sviluppo senior e 10k per una corsa del programmatore del mulino che fa la maggior parte del lavoro. In dollari di oggi, quel 10k è di circa 65k. Oggi avere la maggior parte degli sviluppatori nella tua squadra che guadagna 65.000 è un ottimo prezzo.
RibaldEddie,

3
Questo, sostanzialmente, gli stipendi del software sono rimasti invariati rispetto al 1969. Data l'inflazione complessiva e il costo della vita più elevato, oggi gli sviluppatori sono significativamente più economici.
RibaldEddie,

11
In effetti, tutti i vantaggi del moderno ambiente economico in termini di produttività e manodopera più economica sono andati alla classe dirigente e azionista negli affari. Come ho detto, anche adeguati all'inflazione, i salari degli sviluppatori di software sono rimasti invariati, mentre la retribuzione dei dirigenti è aumentata di molte centinaia di volte superiore all'inflazione. Inoltre, molti luoghi, in particolare lungo la costa occidentale del Nord America, i costi della vita sono aumentati significativamente più rapidamente dell'inflazione (vedi immobili) e tuttavia i salari degli sviluppatori professionali hanno appena tenuto il passo con l'inflazione.
RibaldEddie,

13

Questo schema mi sembra molto simile alla programmazione Mob:

L'intero gruppo (QA, sviluppatori e persino Product Owner se necessario) sta lavorando allo stesso tempo nello stesso problema. No stand up, alta comunicazione, direttamente implementato in live.

Da http://codebetter.com/marcushammarberg/2013/08/06/mob-programming/

Il concetto di base della programmazione mob è semplice: l'intero team lavora come una squadra insieme su un compito alla volta. Cioè: una squadra - una tastiera (attiva) - uno schermo (proiettore ovviamente). È proprio come fare la programmazione di coppie a squadre complete.

Guardalo in azione qui: https://www.youtube.com/watch?v=dVqUcNKVbYg


Quella citazione è fondamentalmente quello che stavo pensando: sembra una programmazione di coppia, in cui il "chirurgo" è quello che abbiamo chiamato il "driver", tranne su una scala diversa.
Izkata,

7
Mi sembra che ciò richiederebbe agli sviluppatori di software competenti orientati alla gente estroversi. Buona fortuna con quello.
Bob Jarvis,

Sono venuto qui per dire questo; o varie forme di auto-organizzazione della squadra.
Marcin,

2
@BobJarvis Non sono d'accordo. Ho avuto un grande successo lavorando in team di introversi (e penso che alcuni includessero anche gli estroversi). La chiave sta nel creare uno spazio in cui le persone si sentano sicure e aperte a contribuire e siano disposte ad allungare le proprie inclinazioni naturali per un periodo a beneficio del gruppo. Susan Cain's Quiet è stato di grande aiuto per capire come lavorare bene con diversi temperamenti: ted.com/talks/susan_cain_the_power_of_introverts
David Carboni

12

Questo modello di squadra è menzionato di nuovo in Rapid Development - Taming Wild Software Schedules di Steve McConnell a pagina 305. Qui viene chiamato Chief-Programmer Team.

Questo modello è nato perché c'era un genio nel team e le risorse informatiche erano limitate. È caduto in disgrazia perché il genio è raro e con computer onnipresenti e controllo della versione distribuita abbiamo spazio per molte mani al tavolo operatorio.

Altre referenze:

Baker, F. Terry. "Capo team di programmatori di programmazione della produzione", IBM Systems Journal, vol. 11, n. 1, 1972, pagg. 56-73.

Baker, F. Terry e Harlan D. Mills. "Squadre capo programmatore". Datamation, Volume 19, Numero 12 (dicembre 1973), pagg. 58-61.


9

La mia ipotesi è che la maggior parte dei piccoli team auto-organizzanti tenderà comunque a sistemarsi in un modello di team chirurgico di fatto.

Le ultime due squadre in cui ho partecipato sono state tendenzialmente composte da tre o quattro persone, di solito un anziano (chirurgo), un intermedio (copilota) e un paio di junior / specialisti. Alcuni dei ruoli nel team chirurgico menzionati oggi da Brooks sono ricoperti da maestri e amministratori di sistema Scrum o fornitori di servizi cloud. Ricorda che il controllo del codice sorgente esisteva a malapena al momento, figuriamoci qualcosa di potente come Git.

Pensa alla regola delle due pizze di Bezos. Questa è la tua squadra chirurgica auto-organizzante proprio lì.


1
quindi in pratica non è successo nulla. +
gordy

1
@gordy si e no. Noterai che nell'esempio di Brook, con ogni probabilità spetterebbe ai manager determinare chi ricopriva ciascun ruolo nel team, ma in un concetto moderno e agile, il team si auto-organizza. Quindi i ruoli di chirurgo o copilota cadono naturalmente dal modo in cui il team lavora. Penso che sia una differenza fondamentale: auto-organizzante rispetto alla società.
RibaldEddie,

Vorrei cambiare "più" in "alcuni". Dipende molto dalle dinamiche del team. E sicuramente deve crescere organicamente se un chirurgo è dettato dall'alto il risultato sarà subottimale, quindi +1 per l'auto-organizzazione.
Peter,

2
Detti da Il Tao del software: #IV - Il Tao del lavoro di squadra: un buon software è scritto da piccoli team che lavorano velocemente. Il software cattivo viene scritto da grandi team che lavorano lentamente. Corollari: - La dimensione ottimale di una squadra è 1; - Il valore pratico massimo per le dimensioni della squadra è 3; - Per team di dimensioni> 3, (mis) la comunicazione diventa un problema serio; - Per team di dimensioni> 6, il completamento del progetto diventa gravemente compromesso. Il completamento del progetto alla scadenza è probabilmente fuori dalla finestra. In casi come questo gli sviluppatori più intelligenti useranno la porta ... Così è scritto ... ( BWOOoooonnnggggg !!! )
Bob Jarvis

6

C'era un documento di HP che suggeriva qualcosa di simile:

  • Ogni ingegnere del software richiederebbe più manager e più persone di supporto.
  • Dovrebbero esserci uno scrittore tecnico, un tester, un responsabile della costruzione e un produttore di strumenti per ciascun ingegnere.

Il giornale era nei giorni pre-web ed era di tanto in tanto divertente. Ogni anno è stato educato, il commento è passato un po 'di più da "così ridicolo è divertente" a "forse dovremmo farlo".

I test reali sono notoriamente difficili da progettare, quindi probabilmente rimane un'opinione. Potrebbero esistere alcuni sondaggi sui progetti e le loro percentuali di completamento.


9
La parte che mi fa sorridere (?) È la cosa "... gestori multipli ...". Un manager è più che sufficiente per ridurre la produttività. Manager multipli potrebbero indurre gli sviluppatori a pensare al suicidio (introverso) o all'omicidio (estroverso).
Bob Jarvis,

4
@BobJarvis - Ho avuto, a seconda del progetto, ben cinque "gestori" simultanei con vari titoli. L'effetto è praticamente come immagini.
Rob Crawford,

1
Ovviamente sei un estroverso. Quindi ... difesa dalla follia? Messico? O ... omicidio giusto ...? :-)
Bob Jarvis

Ecco perché avevo cinque capi in una società. Mentre ero lì, qualsiasi problema, che fosse mio o di qualcun altro, lo avrei sentito da 5 diverse prospettive. Di solito l'avevo analizzato quando è arrivato il numero 2 ed è stato solo fastidioso sentirlo lì più volte.
Robert Baron,

L'idea originale non era "avere cinque manager diversi che tentano di interferire", ma fornire, ad esempio, "una persona con benefici per le risorse umane" e "una persona per lo sviluppo della carriera nelle risorse umane" ecc. quanto spesso hanno contattato l'ingegnere. Farebbe un videogioco divertente!
Charles Merriam,

2

Mi chiedo quanto sia diventata ridondante la necessità di un team chirurgico a causa dell'ascesa di Internet, degli ambienti di sviluppo integrati e dei kit di sviluppo software , che possono assumere molte delle funzionalità che Fred Brooks ha attribuito al team chirurgico, tra cui:

  • Chirurgo: un programmatore
  • Co-pilota: accoppia programmatori , collaboratori, comunità online come StackExchange o IRC
  • Amministratore: ruolo generalmente assunto da un project manager del software
  • Editor: IDE che integrano generatori di documentazione come Javadoc o Doxygen; documentazione dai kit di sviluppo software
  • Segreteria: client di posta elettronica, strumenti di gestione dei progetti come tracker di problemi e richieste pull, chat room aziendali e mailing list
  • Impiegato di programma: IDE che memorizza informazioni sulla progettazione del progetto, con la possibilità aggiuntiva di refactoring del codice; documentazione ed esempi dai kit di sviluppo software
  • Toolmith: l'intera comunità open source
  • Tester: su base immediata, test suite e librerie di test. Ma ovviamente è necessario un processo di QA separato per il codice di produzione.
  • Avvocato linguistico: documentazione online, StackExchange

1

Penso che devi guardare la premessa di The Mythical Man Month. Assumere più programmatori non fa che peggiorare un progetto software problematico / scaduto. Il problema è nella comunicazione e nel rendere i programmatori appena aggiunti aggiornati sul progetto (richiede tempo dallo sviluppo esistente), sulla tecnologia e talvolta sul dominio stesso.

Un programmatore ben supportato elimina molti dei tempi di comunicazione e coordinamento. Supponiamo che tu assuma un consulente per Technology X. Invece di portare questo consulente ad accelerare il progetto abbastanza da consentire a questo individuo di fare tutto il codice in quell'area, egli guida lo sviluppatore esistente fino al punto in cui può ottenere qualcosa da costruire con un po 'di supervisione.

Uno dei motivi per cui non si vede molto di questo è perché la maggior parte dei software viene scritta da una persona comunque. Le squadre dividono il lavoro e tutti vanno e fanno le loro cose. Associare programmazione, recensioni e tutto ciò che profuma di microgestione è disapprovato. Molti non vedono la programmazione come uno sport di squadra. Una persona risolve un determinato problema con una certa considerazione per i vincoli generali.


0

Direi che più separiamo progettazione, implementazione, test, documentazione, costruzione, implementazione, operazioni, ecc. In ruoli univoci svolti da specialisti, più seguiamo la filosofia del "team chirurgico" (anche se forse non esattamente nel modo descritto ).

Nella mia esperienza, la filosofia devOps secondo cui ogni persona dovrebbe essere in grado di svolgere qualsiasi compito è un ritorno al modello di macellazione del maiale (per non dire che è male, solo diverso).


2
Questo non è sicuramente il modello DevOps.
RibaldEddie,

5
In effetti DevOps è più simile al modello di team chirurgico perché le Operazioni sviluppatore implicano che esistono operazioni in servizio allo sviluppo. DevOps si basa su due concetti fondamentali: che le operazioni dovrebbero essere viste come una pratica di sviluppo e quindi che gli strumenti e le tecniche utilizzate nello sviluppo, come il controllo del codice sorgente e i metodi di gestione agili, dovrebbero essere utilizzati dalle operazioni e che le operazioni siano lì per supportare lo sviluppo.
RibaldEddie,

1
@RibaldEddie Interessante. La mia esperienza con il gruppo DevOps nella mia azienda è che assumono solo sviluppatori e sono responsabili di tutto, dallo sviluppo del prodotto, al collaudo, alla documentazione, alla distribuzione, ecc. Viene in mente la parola "interfunzionale". Vabbè, con 2 downvotes e un voto di eliminazione entro 15 minuti, credo che starò lontano da questo sito.
Mike Ounsworth,

1
Ah, allora abbiamo una diversa definizione di "interfunzionale". Lo sto usando per significare che ogni membro del team è in grado di svolgere ogni compito - Jiras viene sistematicamente gettato tra le persone perché hanno eliminato la specializzazione. Qualcuno che sta sviluppando questa funzione testerà o documenterà la funzione successiva. Questo è il "DevOps" che ho sperimentato.
Mike Ounsworth,

1
@MikeOunsworth: è una squadra di cross-funzionali :-D
Jörg W Mittag

0

Come programmatore che ha spesso ricoperto i ruoli di DevOps e Build Master, ho sentito che spesso finivo in quella posizione di essere la squadra chirurgica ... err ... ragazzo nella squadra. Come build build ho avuto una visione d'insieme dell'intero codice ed è stata la prima riga quando non è riuscita. Spesso lo riparavo da solo.
Spesso sono stato io a scrivere questi sistemi di metriche e misurare i punti caldi nel codice, parti che fallivano più spesso, che attiravano il maggior numero di segnalazioni di errori, ecc. Non pubblicavo solo i risultati per il team, li analizzavo, trovavo anche nodo che ha causato problemi e proposto soluzioni e modifiche architettoniche per risolvere questo problema.

Come DevOps avrei automatizzato enormi parti di processo e spese generali. Ricercherei tecnologie e strumenti che semplificherebbero la vita del team, dell'intero team, degli sviluppatori, dei tester di controllo qualità fino alla gestione. Il mio ruolo era comprendere il processo, sì; ma tenendo gli occhi fissi sulla squadra (gli umani reali) usando (soffrendo) quel processo sono stato in grado di distillarlo al punto da renderlo completamente trasparente pur ottenendo una serie di dati utili per ottenere una visione obiettiva di ciò "quadro generale" sempre sfuggente.

È una posizione ingrata da avere e probabilmente il motivo per cui è evitato così tanto. So di aver fatto bene il mio lavoro quando nessuno ha notato quel processo, quando nessuno ha pensato alla pipeline di costruzione. Quindi sì, una macchina ben oliata viene rapidamente data per scontata. Ma sapevo, in effetti ho misurato, l'impatto moltiplicativo che questo lavoro può avere sulla produttività di una squadra e vale la pena investire.

Quindi sì, penso che quel ruolo sia ancora molto vivo oggi, anche se è vero che si è evoluto da quello che era allora.

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.