Perché le scadenze sono sempre così brevi? [duplicare]

31

Sono uno sviluppatore junior in una piccola azienda (in un team di 2 sviluppatori). Ogni volta che ci viene chiesto di implementare una nuova funzione:

  • la scadenza è impostata in modo da avere il tempo di fare lo sviluppo: non c'è margine di errore (se qualcosa richiede un po 'più del previsto, siamo in ritardo); quasi nessun tempo per i test (siamo abbastanza sicuri che ci saranno dei bug); non c'è tempo per refactoring

  • ci viene chiesto di avviare lo sviluppo prima che le funzionalità siano completamente specificate, quindi vengono visualizzate nuove cose da fare ma la scadenza rimane invariata

Il risultato è che forniamo software con bug e che il debito tecnico continua a crescere. Utilizziamo la tecnologia che è stata considerata una versione recente nel 2006 o giù di lì.

C'era una versione che ricordo molto bene. Quando abbiamo fatto una dimostrazione al capo, ci ha detto "Cosa? Hai impiegato due settimane per produrlo ?!" e tutto ciò a cui potevamo rispondere era "No, in effetti ci sono volute tre settimane". Ho avuto un incontro con lui e un altro giovane sviluppatore (che ha lasciato la compagnia a causa di questo incontro!), E in pratica ci ha detto che non era contento perché quello che abbiamo pubblicato era una schifezza.

Il debito tecnico e la necessità di refactoring erano così grandi nelle parti che dovevamo modificare (ma ci è stato detto di non refactor perché non abbiamo tempo):

  • abbiamo dovuto aggiungere uno strato di codice errato in cima al codice già cattivo;
  • abbiamo impiegato molto tempo per cercare di capire il codice completamente incomprensibile.

Non mi sento responsabile di questa brutta versione, penso che sia responsabilità del capo assumere dei buoni sviluppatori che, almeno, comprendono i principi di base dell'OOP. Ma assumere junior è molto meno costoso ...

Sta già dicendo che siamo in ritardo per lo sviluppo su cui sto lavorando al momento. Ha passato più di un anno a "ridisegnare" uno strumento che era già presente nella nostra applicazione, ma ora vuole che lo implementiamo in due settimane. Personalmente penso che se vogliamo farlo correttamente, abbiamo bisogno di almeno un mese, o forse anche di 6 settimane.

Non so cosa fare, perché penso che il capo pensi che siamo solo lenti e inefficaci. Non è il modo in cui otterrò il rilancio che penso di meritare.

Perché è così? Non sembra così difficile capire che se ho bisogno di x giorni per completare un compito, non posso farlo in x / 2 giorni, anche se dici "per favore" e chiedi con un sorriso. Sembra così ovvio che la scadenza verrà ignorata e / o che i requisiti di qualità non saranno soddisfatti.

Non ho bisogno di sapere come posso spiegare al mio capo che lo sviluppo del software è un processo più lungo che fa semplicemente clic su un'icona. Perché spero che lo sappia già.

    
posta Mathieu 07.08.2014 - 08:12
fonte

9 risposte

31

Due scelte in realtà: esci o cresci un backbone.

Penso di non dover spiegare molto su come smettere .. quello è ovvio. Se non puoi né prenderlo né il coraggio di cambiarlo, è l'unico modo per andare avanti.

Se vuoi cambiare questo, è tua responsabilità oppormi a questo. Questo ha bisogno di "una spina dorsale", perché andrai contro il tuo capo e essere licenziato è una possibilità reale lì! Quindi calpestati con cautela, ma smetti di essere spinto in giro.

Perché sto dicendo che sei spinto in giro? Beh, naturalmente, gli sviluppatori junior sono più facili da spingere rispetto agli anziani, perché mancano di esperienza, ma c'è un problema fondamentale che sembra sia mancato qui (che è stato superato anche per te): le scadenze sono meglio fatte da gli sviluppatori, non dalla direzione.

Se il tuo capo o qualche manager dice che ci vogliono 2 settimane e pensi che sia troppo breve, il comportamento professionale impone di informare i tuoi superiori di questa intuizione. Dopotutto, sei lo sviluppatore che passerà queste 2 settimane a fare il lavoro. Non c'è nessuno - assolutamente nessuno - che è più qualificato per giudicare la correttezza di questa stima di te! I tuoi manager possono ricorrere a precedenti esperienze o prestazioni di altre squadre, ma conosci il vero affare. Conosci la particolare base di codice, i suoi punti deboli, i suoi rischi, ecc. Non è possibile che una scadenza significativa possa essere fatta senza il tuo contributo.

Refactoring: questo è sempre un argomento interessante e ci sono molte buone letture su come incorporarlo in un programma. L'essenza di questi però è che a) non avrai mai tempo dedicato al refactoring dal tuo manager e b) non dovresti nemmeno chiederlo, perché anche quando lo prendi, non sarà abbastanza. Il refactoring è qualcosa che deve diventare parte del tuo lavoro quotidiano. Deve far parte delle tue stime e fa parte di ciò che stai facendo. Così tanto che non è necessario nemmeno menzionarlo verso la direzione. Questo è il modo in cui lavoriamo professionalmente dopo tutto. Puoi saltarlo una o due volte sottolineando che le prossime scadenze devono renderlo conto, ma se non riesci a inventarlo, allora il modo professionale è di farlo funzionare correttamente la prima volta. Certo, devi mantenere un equilibrio e non rifattorizzare l'intero codice base per almeno sei mesi. Attenetevi comunque a ciò su cui state lavorando e cercate di mantenere il debito tecnico invece di aumentarlo, se possibile ridurlo anche un po '.

Quando si avvicina una scadenza, in particolare se la scadenza è stata data da fonti esterne senza la tua approvazione, è giusto dire semplicemente che non hai finito. Se hai detto fin dall'inizio che 2 settimane non saranno sufficienti, nessuno ti può biasimare per non aver finito dopo 2 settimane. Il modo di sviluppo da junior a senior significa imparare a essere in grado di mantenere la faccia seria quando si dice ai propri dirigenti che non è fatto a causa delle loro decisioni. Tieni presente che se hai stimato 4 settimane, ma dovevi consegnare entro 2 settimane, che qualsiasi ritardo è non colpa tua.

Tuttavia, i manager cercheranno di incolpare te / il tuo team per eventuali ritardi. Se vuoi continuare con questa compagnia, affronti una sfida ancora più dura: devi cambiare idea ai tuoi manager! Devi ricordare loro che non si tratta di assegnare la colpa, ma di fornire valore al business. Dovresti lavorare insieme, non uno contro l'altro, ma da quello che dici sembra che ci sia un grosso problema di fiducia tra gli sviluppatori e il management. Difendere le scadenze ridicole è una cosa, ma ti porterà solo lontano. Se devi costantemente combattere contro i tuoi manager, allora sei destinato a fallire (entrambe le parti in realtà).

In sintesi, se ritieni di essere abbastanza strong e in grado di tenere il passo con la pressione e lo stress, allora dovresti 1) assicurarti di far parte della decisione di scadenza dall'inizio e 2) migliorare la fiducia e la fiducia tra sviluppatori e manager . Il primo è relativamente veloce e facile, mentre il secondo è un processo lento e delicato che potrebbe richiedere anni.

    
risposta data 07.08.2014 - 09:01
fonte
21

Ci sono molti motivi per cui le scadenze saranno sempre strette.

Una delle teorie principali qui è la legge di Parkinson.

Il Parkinson afferma: "Il lavoro si espande in modo da riempire il tempo disponibile per il suo completamento".

Quindi, se hai un progetto che richiede 3 mesi e hai una scadenza di 6 mesi? Quanto tempo ci vorrà? 6 mesi, naturalmente, perché c'è sempre qualcosa che può essere migliorato.

Impostando scadenze più strette, la direzione cerca di far emergere il meglio delle persone. Il potere delle scadenze ravvicinate.

Ci sono molti motivi per fissare scadenze ravvicinate, alcune buone, altre cattive. Ci sono anche molti buoni e cattivi manager, che non capiscono o no la teoria della gestione.

    
risposta data 07.08.2014 - 09:35
fonte
9

Why are deadlines always so short ?

Perché manager come quello della tua storia prendono il controllo del processo di stima e impongono le proprie opinioni agli sviluppatori. Spesso è perché sono gli stessi sviluppatori e pensano di poter fare delle buone stime grazie alla loro esperienza.

In un mondo ideale, i manager si fidano dei programmatori e si assumono la responsabilità di produrre stime, come faresti con qualsiasi professionista che si rispetti. Le scadenze definite dal cliente verrebbero soddisfatte non deteriorando la qualità ma negoziando lo scopo con il cliente.

    
risposta data 07.08.2014 - 11:09
fonte
9

È stato menzionato "Growing balls", ma questo è principalmente un problema del manager, che ha una pressione dall'alto e si lascia parlare di promesse che non può mantenere. Sul mio posto di lavoro le cose sono migliorate molto quando il manager del mio manager, che non è mai riuscito a ottenere i risultati che aveva promesso, è stato sostituito. Al nuovo manager è stata data una lista di 10 cose da realizzare, e ha appena detto "no" a sette di loro. E non si è spostato un po 'dai sette "no", non importa quanto provassero a farlo pressione. E poi le squadre sotto di lui, senza ridicole scadenze, hanno raggiunto i tre compiti che aveva accettato. Quale il precedente manager avrebbe omesso di fare. Tutti (su e giù) sono davvero contenti di lui.

Che cattiva impostazione delle scadenze si ottiene: stress inutile, calo della produttività, sentirsi male perché tutti falliscono, possibilmente affrettati e prodotti di bassa qualità.

Cosa puoi ottenere con scadenze: cambia le priorità in modo che le attività alcune siano terminate. Ad esempio, se il lavoro A sembra essere finito al 90% e il lavoro B sembra terminato al 60%, sposta lo sforzo da B a A in modo che uno di essi venga eseguito entro la scadenza. O ridurre l'ambito di un lavoro. Se il lavoro A con tutte le funzionalità pianificate non può essere raggiunto entro la scadenza, si riducono le funzionalità.

Informazioni sulle stime: se si effettua una stima ottimale per il tempo richiesto da un'attività e si è veramente molto bravi, l'attività richiederà il tempo stimato, più o meno un po 'di tempo extra casuale. Ecco perché è definita una "migliore stima". Se fai un preventivo, nessuno può cambiarlo. Non consentire mai a nessuno di farti modificare le stime (a meno che non riducano prima l'attività stimata). Il tuo manager può quindi fissare obiettivi. Se questi obiettivi non concordano con le stime, è colpa sua. Se si stima "ci vogliono tre mesi" e lui dice "fallo tra due settimane", è colpa sua se non finisci tra due settimane. È ancora più colpa sua se ti sottolinea e non finisci neanche nei tre mesi previsti.

    
risposta data 07.08.2014 - 12:22
fonte
3

Il tuo team soffre chiaramente di pianificazioni eccessivamente ottimistiche :

The challenges faced by someone building a three-month application are quite different than the challenges faced by someone building a one-year application. Setting an overly optimistic schedule sets a project up for failure by underscoping the project, undermining effective planning, and abbreviating critical upstream development activities such as requirements analysis and design. It also puts excessive pressure on developers, which hurts developer morale and productivity.

Se stai davvero lavorando sodo, allora è il problema della gestione.

is it always like that? Are the deadlines always short?

La mia esperienza è: sì, lo sono di solito. Ma se il piano è troppo ottimistico, allora è destinato a fallire.

is there something I can do about it?

Da nessuna parte hai detto che sei coinvolto nella pianificazione del programma, il che è davvero strano. Immagino, è così, perché sei ancora uno sviluppatore junior. Anche allora, dovrebbero chiederti.

L'unica risposta ragionevole è pianificare correttamente. Quanto durerà la progettazione, lo sviluppo e il refactoring? Fornisci le stime migliori, più probabili e peggiori e presentale al tuo manager. Ciò che è importante non è fare il backup delle stime e non consentire trattative su di loro (vedi questo ).

    
risposta data 07.08.2014 - 14:08
fonte
1

Quando presentiamo una stima uomo-anno, quel numero è determinato da una sensazione istintiva basata sull'esperienza, su indovinare i rischi di nuovi strumenti, nuovi problemi, ecc. Normalmente otteniamo il giusto, ma possiamo ' t giustificare questo Ai vecchi tempi, quando gli anni uomo crescevano sugli alberi, i nostri capi, che erano loro stessi ex softies, si fidavano di noi, ci davano quelle ore e partivamo.

Da allora sono successe due cose; i budget sono stati tagliati ei corsi di gestione sono stati inventati come un sostituto economico per l'ingegneria.

Così ora abbiamo capi che sono sottoposti a una strong pressione per tagliare i costi, perché anche la concorrenza ha tagliato i costi, e queste persone hanno poca o nessuna preparazione tecnica. Quindi se tu dici 5 anni-uomo, lui dirà, beh, ti darò 4, perché questo funziona per lui quando entra un idraulico. Bene, sappiamo che l'impianto idraulico economico e frettoloso significa perdite nel futuro, ma a quel punto avrà trasferito la casa, o nel caso del manager è andato a lavorare meglio in un'altra filiale.

Ma non è sempre così male. Hai un caso estremo, e quella ditta sta per andare in panchina qualche volta, quindi pensa seriamente a trovare un nuovo lavoro.

    
risposta data 07.08.2014 - 14:13
fonte
1

Un problema che ho visto poche volte è che i PHB non capiscono che la prima versione funzionante di un prodotto è lontana dall'essere fatta - non possono vedere che è ancora una bozza di massima.

Oggi chiedo loro "quindi, quando scrivi una proposta, la completi e la invii al cliente o passi attraverso un processo di stesura?"

Il refactoring è il nostro processo di stesura.

    
risposta data 07.08.2014 - 15:27
fonte
0

Le scadenze sono sempre troppo brevi perché le stime sono imprecise.

Ci sono due punti importanti da considerare con le scadenze:

  1. Le stime devono essere basate su tutti gli sforzi previsti (compresa la comprensione, l'implementazione, il test del comportamento nuovo / precedente e la distribuzione e altro ancora)
  2. A volte le stime sono sbagliate

Il punto 1 parla da solo poiché le stime devono riflettere il lavoro richiesto e alla velocità della / e persona / e che sta facendo il lavoro .

Il punto 2 tuttavia riconosce che mentre le stime possono migliorare nel tempo e il tipico principio di Scotty dovrebbe applicarsi, c'è sempre la possibilità che la stima sia semplicemente sbagliata.

Spetta a tutto il team ( tutti compreso il gestore ) accettare che le scadenze troppo brevi indicano un problema nelle stime.

Il tuo caso indica che il problema potrebbe essere che le tue scadenze ti vengono date senza un'adeguata indagine sul livello di impegno richiesto (ad esempio chiedendoti quanto tempo ci vorrà per svolgere il lavoro).

A volte la scadenza è inamovibile, ad es. rilasciando prima della data X significa che tutti vieni pagato, mentre dopo significa che nessuno compra / paga per il lavoro; qui tutti devono accettare che non c'è tempo per portare a termine il lavoro nel modo più completo possibile.

Infine, potrebbe esserci un problema di fiducia in cui il manager è stato masterizzato in passato a causa di un sovrastimato del lavoro; Se consegni in anticipo e riferisci questo al tuo manager, costruirai fiducia e l'atteggiamento del team migliorerà.

Decidi quanti sforzi mettere in questo; se ancora non funziona decidi di trasferirti in un'altra squadra / azienda.

Tieni presente che questo scenario non è limitato a questo specifico gestore, a questa specifica società, e prima determinerai il tuo modo di gestirlo meglio sarà.

    
risposta data 07.08.2014 - 14:57
fonte
0

Credo che il motivo principale per cui le scadenze sono spesso troppo rigide deriva da un profondo malinteso.

Ci sono diverse variabili da manipolare quando si produce qualcosa:

  • impegno: la durata necessaria da spendere per produrre
  • trascorso: la durata tra l'inizio e la fine

Lo sforzo non è negoziabile, se ci vogliono 10 ore per svolgere un compito non c'è nulla che tu possa fare al riguardo. Tuttavia, un'altra persona potrebbe essere in grado di farlo più velocemente o più lentamente. Nelle pratiche Agile, la raccomandazione è di misurare lo sforzo in punti per tenere conto delle differenze di velocità tra gli sviluppatori.

Il trascorso tuttavia, varia ampiamente: dipende da quante persone lavoreranno in parallelo, quante ore al giorno lavoreranno su di esso, ecc ... Alla fine, quindi, il tempo trascorso dipende da pianificazione : chi sarà interessato all'attività, quando, ...

Spesso le scadenze sono negoziate. Poiché il tempo trascorso dipende molto dalla pianificazione (e dalle priorità mutevoli), c'è in effetti un po 'di spazio, e quindi possono essere negoziati in una certa misura . I cattivi manager, tuttavia, tendono a imporre scadenze irrealistiche perché continuano a spingerli oltre il ragionamento di quel grado che, dal momento che sono riusciti a respingerne alcuni, potrebbero anche provare altri.

Quando ti capita, e continuano a farti pressione, potresti essere interessante nel movimento Agile. Agile "ingannato" introducendo una terza variabile: scope.

Invece di dimensionare il tutto, ridimensionalo in modo frammentario (e rendi esplicite le dipendenze tra i pezzi). Se il tuo manager desidera ridurre il tempo trascorso, può quindi rimuovere alcuni pezzi.

    
risposta data 07.08.2014 - 15:44
fonte

Leggi altre domande sui tag