Programmazione vs pianificazione [chiuso]


15

Di recente, mi è stato assegnato il compito di incarichi di pianificazione di più alto livello a causa dello sviluppatore principale della mia partenza di squadra. Odio la pianificazione a lungo termine. Il mio cervello non sembra naturalmente cablato per questo, e non mi interessa abbastanza da spendere il tempo per impararlo (è abbastanza difficile tenere il passo con il lato di programmazione dell'immagine).

Si può ancora essere un buon programmatore senza essere anche un pianificatore di alto livello?

Come programmatore senior, ci si aspetta che sia bravo a pianificare l'intero prodotto e scegliere una data di completamento?


Se la tua posizione è Developer, perché dovresti pianificare? Forse stima, ma non piano
superM

sì, è possibile. In questo caso, anche se la tua produttività dipenderà fortemente dalla qualità del tuo manager / team
moscerino

1
Questa è una domanda davvero interessante. Non penso che tu debba fare molte specifiche tecniche per essere un buon dev senior - nello sviluppo Agile molte delle caratteristiche di un nuovo sistema o progetto sono emergenti. Vedi la mia risposta per maggiori informazioni.
Robin Winslow,

1
Come va quella citazione? "I giorni di programmazione possono risparmiare ore di pianificazione" o qualcosa del genere.
Drake Clarris,

Risposte:


17

I piani di progetto dettagliati a lungo termine sono noti per essere generalmente imprecisi. Le funzionalità del sistema cambieranno inevitabilmente prima del lancio, e le persone di solito impiegano molto tempo a elaborare le specifiche che vanno nelle specifiche solo per fare in modo che gli stakeholder le diano uno sguardo veloce.

Dovresti leggere di più sulla pianificazione Agile , potresti trovare che si adatta meglio alla tua mentalità. Molte metodologie Agili cercano di trovare il modo di abbandonare una pianificazione dettagliata a lungo termine.

Metodologie agili cercano di ridurre al minimo le specifiche tecniche dettagliate e la documentazione a favore del codice autocompensante e delle storie utente isolate e atomiche e del software funzionante. In un efficiente team Agile, ci sarà un minimo di tempo speso per la pianificazione.

Leggi il Manifesto Agile e guarda Scrum . Utilizzare lo sviluppo iterativo e il metodo di sviluppo dinamico dei sistemi per guidare il progetto.

Il principale svantaggio degli approcci Agile è che devi ammettere apertamente di non conoscere l'esatta portata del tuo progetto e che l'acquisizione da parte della direzione di questa idea può essere estremamente difficile e di solito richiede del tempo. Vedi questa domanda e risposta e questo post per alcuni suggerimenti al riguardo.

Tuttavia è certamente vero che, man mano che diventerai un programmatore più senior, probabilmente eseguirai meno programmazione, ma penso che in un team Agile invece di significare che scrivi più specifiche tecniche, significherebbe che dedichi più tempo a gestire e tutorare i membri del tuo team e prendere decisioni architettoniche sul codice.


4
"I piani di progetto dettagliati a lungo termine sono noti per essere generalmente estremamente imprecisi." DING DING DING +1
Ryan Kinal,

11

Sì, è possibile. Tuttavia, se vuoi essere un buon ingegnere del software o un architetto del software, è qui che entra in gioco la tua pianificazione di alto livello. Per me, la differenza principale tra un programmatore e un ingegnere è stata la capacità di vedere il quadro generale.


1
Non mi dispiace pianificare il lavoro che sto facendo in questo momento / nelle prossime 2 settimane. Significa che se quello che sto per scrivere riguarda più pezzi, non mi dispiace pianificare ad alto livello e poi farlo (in effetti - è esattamente quello che farei). Non riesco a trovare un appuntamento per mesi in futuro, quindi cerco di capire perché non riusciremo a colpirlo. È qui che la mia frustrazione personale inizia a raggiungere il picco.
Matt,

Cerco di non lasciarmi frustrare personalmente. Cerco di aggiungere questo tipo di cose ai project manager;).
Blaise Swanwick,

Da aggiungere al commento di Blaise. I cattivi manager insistono nel rispettare il programma e incolpano la squadra per "impegni" mancanti. In quell'ambiente, i programmi sono certamente frustranti. I bravi manager si rendono conto che il programma iniziale è un'ipotesi di base e non un impegno. Sanno che alcune attività richiederanno più tempo e altre più brevi. Ciò a cui sono maggiormente interessati è la tendenza a lungo termine. ad esempio, stiamo attualmente registrando un ritardo del 20% rispetto al programma di base per 3 mesi. Ciò significa probabilmente che verremo investiti del 20% dalle attività simili rimanenti. Quindi utilizzano questo nuovo programma per la gestione del progetto.
Dunk

9

È possibile essere un buon programmatore e non un pianificatore di alto livello?

Per un po ', si. È possibile farlo a lungo? No.

Al giorno d'oggi con molti datori di lavoro è una procedura operativa standard fornire aumenti competitivi del settore della vita . Se non migliori te stesso, non cercare di affrontare problemi più grandi e più difficili, questi aumenti competitivi del settore ti porteranno fuori dal mercato in cinque o dieci anni. Continuate così e il vostro datore di lavoro alla fine inizierà a cercare un motivo per sbarazzarsi di voi, e anche la vostra occupabilità altrove sarà drasticamente ridotta.


Sono confuso. Un aumento del COL dovrebbe tenere il passo con il tasso di inflazione, in teoria. Stai suggerendo che il denaro reale pagato agli sviluppatori di software sta gradualmente diminuendo nel tempo? O che gli aumenti di COL sono generalmente superiori all'effettivo aumento del costo della vita? Direi che una preoccupazione maggiore è che l'incapacità di dimostrare la crescita è, di per sé, generalmente considerata negativa. Tuttavia, ci sono altri modi per dimostrare la crescita, come una maggiore ampiezza o profondità delle competenze tecniche.
Ethel Evans,

1
Avrei dovuto dire aumenti competitivi del settore piuttosto che aumenti del costo della vita. Ho modificato la mia risposta per dire proprio questo. Questi aumenti competitivi del settore sono piuttosto dolci per i giovani adulti, in genere molto meglio dell'inflazione. Gli aumenti del costo della vita sono per le vecchie nebbie. C'è un problema quando qualcuno aumenta più dell'inflazione ma le abilità di quella persona rimangono quelle di una nuova uscita.
David Hammen,

Gotcha! Grazie per il chiarimento, questo ha sicuramente senso.
Ethel Evans,

Direi, purtroppo, che nel tempo l'abilità di programmazione sta diventando più facile da imparare, e quindi l'abilità esistente, non di crescita, di un ingegnere svaluta oltre COL.
Nuova Alessandria,

6

Certo, puoi essere un buon programmatore, dal punto di vista di un programmatore. Dal punto di vista della direzione è tutta un'altra domanda. Nella mia esperienza, essere coinvolti nel processo di pianificazione è il modo migliore per 1) ottenere incarichi di programmazione più interessanti e 2) arrivare a svolgerli nel modo desiderato.

In altre parole, una volta che si arriva alla pianificazione a breve termine, molte opzioni sono fuori dal tavolo. Se la tua soluzione preferita richiederebbe sei settimane ma ne prevedevano solo due, sei bloccato con quello che hanno deciso. Se hai dubbi su qualcosa di cui hanno già discusso nella pianificazione a lungo termine, non vorranno ripeterlo.

Se sei soddisfatto di quello stato di cose, più potere per te. La maggior parte delle persone diventa meno soddisfatta di ciò, più esperienza acquisisce.

Il piccolo sporco segreto è che nessuno è molto bravo nella pianificazione e nella stima a lungo termine. I pianificatori migliori sono quelli che sono consapevoli dei loro limiti, quindi credici o no, sei davanti alla curva. Ottieni una formazione sulla contabilità per incertezza nella stima. Esamina tecniche come la pianificazione basata su prove o la mischia, che si basano su dati storici per mostrare la precisione delle stime. Sarai più felice a lungo termine se hai più voce in capitolo nel tuo lavoro.


"Il piccolo sporco segreto è che nessuno è molto bravo nella pianificazione e nella stima a lungo termine". Non è quella la verità! +1 solo per quello. Anche con una buona storia, ci sono molti numeri che devono essere presi dal cielo azzurro perché il prossimo progetto non è mai una copia esatta di nessun progetto precedente. Se lo fosse, saremmo in grado di riutilizzare tutto il codice così com'è e di farlo al più presto. C'è sempre qualcosa di nuovo e le performance passate non sono sempre un buon indicatore di come lo sforzo necessario per quella nuova roba.
David Hammen,

Ok - quindi forse la frustrazione (e persino l' ego ) sono più di ciò che devo gestire. Se non riesco a picchiarmi troppo male e riesco solo a migliorare con il tempo (invece di dire "Non mi piace farlo"), starò meglio a lungo termine. Posso essere duro con me stesso quando lo sto facendo male - ma sembra (sulla base delle risposte qui) farei meglio a imparare a farlo bene se voglio rimanere impiegato come ingegnere del software. Apprezzo i pensieri di tutti. Davvero non ho nessuno nella mia azienda da cui imparare questo, quindi ascoltarlo da tutti qui è di grande aiuto!
Matt,

3

È possibile essere un buon programmatore e non un pianificatore di alto livello?

Risposta breve: Sì, è possibile.

Tuttavia, più acquisisci esperienza con il tipo di progetti coinvolti, più idee progettuali avrai. Idealmente, come programmatore abbiamo un approccio su come risolvere il problema o ne cerchiamo uno. Pertanto, se conosciamo l'approccio, potremmo iniziare a pensare alla pianificazione :)

Un'altra possibile via è che un programmatore che diventa un buon pianificatore si dirige infine verso la gestione del progetto. Pertanto, se sei interessato alla gestione dei progetti, potresti fare uno sforzo in più in quella direzione.


1

Sì e No sono le tue risposte.

Da un lato, vieni spinto verso la gestione del progetto. IMO, tutti i bravi programmatori hanno un certo grado di capacità di gestione del progetto, ma sono diverse competenze. La capacità di pianificare a lungo termine migliora la capacità di comunicare con l'effettiva gestione del progetto. Quindi "no" non puoi essere un buon programmatore senza la possibilità di pianificare a lungo termine.

Detto questo, la gestione del progetto è un insieme di competenze diverse che fa appello ad aspetti correlati ma diversi dalla programmazione. Quindi ecco dove entra in gioco il "sì". Non devi essere un project manager per essere un grande programmatore.

Per la tua situazione specifica, cerca di diventare più obiettivo su ciò di cui l'azienda ha bisogno e su ciò che ti piace fare. C'è un po 'troppo ego riflesso nella tua domanda e questo sta influenzando la tua capacità di guardare questa situazione. Se riesci a trovare modi per contribuire maggiormente al tuo datore di lavoro mentre fai ancora le cose che ti piacciono, allora dovresti considerarle e discutere la questione con il tuo capo.


1

Planning and the Bungie-Boss

Dilbert ha molte strisce sul bungie-boss. Le nostre sfide e aspettative in merito alla pianificazione possono essere sia la causa che l'effetto della caduta della leadership. La mia esperienza in una società Fortune 100 è stata che in un anno tutti quelli che hanno iniziato l'anno come capo progetto sono usciti. Forse questo era dovuto al problema di pianificazione. Non sono sicuro che il tuo ex lead sia partito per questo motivo, ma quando il tuo ruolo richiede che tu faccia un piano con un impegno, se non accade, spesso, ne deriva un'uscita correlata alla scadenza.

Contesto organizzativo della pianificazione

Se non ti senti a tuo agio con la pianificazione, forse non ti senti a tuo agio con la responsabilità degli impegni assunti con il marketing o altre parti interessate prima che i problemi da risolvere siano documentati o compresi. Questo è un buon istinto.

La pianificazione è uno strumento importante. Non trascurarlo. Non fraintenderlo.

La pianificazione è integralmente collegata agli impegni, alla responsabilità e al potere negoziale. La pianificazione agile ha molti meriti. Dovresti conoscere le sue tecniche, così come le tecniche delle metodologie pianificate. La tua organizzazione può avere il suo approccio e ottenere consigli e lavorare con qualcuno che è sopravvissuto alla leadership di molti progetti, molti di cui possono essere sorprendentemente utili.

Un semplice esempio di pianificazione - Non deve riguardare il software ...

Se una società di copertura venisse a casa mia per fare un'offerta su un sostituto, se fanno un'offerta troppo bassa, potrebbero perdere soldi per il lavoro, ma se fanno un'offerta troppo alta, non otterranno affatto il lavoro. Ad ogni modo, sono fuori dal mercato. Nel tuo nuovo ruolo, se diventi troppo basso, eseguirai il progetto fino a quando non inizia la responsabilità, quindi avrai problemi. Se stimate un progetto con abbastanza imbottitura per assicurare il successo entro la scadenza, molti scelgono semplicemente qualcun altro da guidare. Il kicker è che non sei come il roofer. Può vedere quanto è grande il tetto e ha dati storici su quanto tempo impiega quel tetto di dimensioni.

Diventare un pianificatore migliore

Potresti prendere in considerazione un qualche tipo di allenamento. Nelle metodologie Agili e nelle più recenti metodologie pianificate, la stima è un'attività a livello di team. Di conseguenza, dovresti considerare di allenarti anche per la tua squadra.

Per esperienza, posso dirti che può essere frustrante ottenere stime dai membri del team che lo rimandano, darti stime che fanno in due minuti in base al nome dell'attività senza riferimento a un requisito o alla descrizione della funzione o al codice esistente, oppure che insistono sul fatto che molti dei compiti elencati possono essere svolti in una frazione del giorno anche se i progetti passati hanno trascorso settimane su problemi simili.

Esistono vari corsi di formazione e certificazioni per i project manager, ma vorrei controllarne uno accreditato in modo indipendente. Potrebbe valere la pena di ripensarci prima di scegliere di certificare con approcci basati su metodologie pianificate se si prevede di lavorare con i team Agile (o viceversa).

SLIM è un metodo inventato da Putnam dopo aver lavorato presso GE e altre società su progetti DoD negli anni '70. SLIM è influente e la sua società QSM offre una certificazione che sembra uscire da uno strumento che producono. A seconda che la tua azienda abbia adottato il proprio strumento, potrebbe non avere valore o valore elevato.

Steve McConnell (autore di Code Complete) ha anche scritto un libro sulla stima del software e la sua società Construx insegna due classi per crediti PDU che sono accreditati attraverso il Project Management Institute. Ho il suo libro e se volessi conoscere l'argomento attraverso la formazione in classe, probabilmente sceglierei Construx. Fanno anche formazione Scrum e amministrano varie valutazioni Scrum accreditate tramite Scrum.org.

Un'altra fonte che potrebbe fornire una grande formazione accademica sulla stima di progetti software, sarebbe il gruppo di Barry Boehm alla USC , basato sul loro ampio lavoro sulla modellazione costruttiva dei costi COCOMO e COSYSMO che è stato utilizzato dalla NASA e da altri grandi appaltatori per stimare progetti molto grandi. Non sono sicuro di essere un vero sostenitore di COCOMO, ma mi piace il lavoro empirico che hanno svolto per correlare gli effetti della scala e dei driver di costo sulla durata del programma.

Ho anche trovato un capitolo di un libro di testo pubblicato da O'Reilly che discute brevemente i principali metodi di stima del software tra cui Watts Humphreys PROBE e il gioco di pianificazione di Kent Beck. SONDA include l'idea che gli ingegneri tengono traccia delle metriche sulla propria produttività, quindi le applicano alla parte assegnata a nuovi progetti. Planning Game è estremamente collaborativo tra sviluppatori e altre parti interessate.

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.