it-swarm.it

È normale che il programmatore lavori contemporaneamente su più progetti

In un lavoro attuale ho due progetti su cui lavorare. Il primo è un sistema enorme e il secondo è più piccolo ma anche grande (il primo progetto è stato sviluppato per 12 anni, il secondo per 4 anni).

All'inizio stavo lavorando solo al primo progetto e stavo cercando di abituarmi. Quindi sono stato trasferito al secondo progetto e ci ho provato, quindi le mie conoscenze sul primo progetto sono diventate losche. Ora devo lavorare su entrambi i progetti contemporaneamente.

È molto difficile per me perché nonostante entrambi utilizzino Java, usano diversi framework e la quantità di codice e logica aziendale da comprendere è molto grande, quindi non riesco davvero a tenere entrambi i progetti in testa.

È normale e dovrei abituarmi, anche se la mia esperienza è diventata molto squashy, cosa non succederebbe se lavorassi solo su un singolo progetto? O dovrei sollevare un problema o forse cambiare datore di lavoro?

40
user1449

Non sono completamente d'accordo quando le persone dicono "sì, il multitasking è normale"

È non normale! Niente affatto, è molto innaturale per uno sviluppatore multi-task in diversi progetti (spiegherò più avanti). D'altra parte il multi-tasking è molto comune tra gli sviluppatori. Questo è sicuramente qualcosa a cui dovresti abituarti. Quindi la vera risposta alla tua domanda è: come multi-task?

Prima di tutto, non dovresti semplicemente accettare il tuo destino perché "sei un dipendente così eccellente" e questo significa che devi svolgere più compiti di quanti ne possa gestire. Niente affatto. A volte alle persone vengono assegnati più compiti perché non c'è nessun altro. A volte i manager non riescono a gestire il proprio lavoro, quindi delegano, applicando il multi-tasking al proprio team perché essi non sono in grado di gestire correttamente la pianificazione del progetto. Quindi dovresti assolutamente provare a determinare se ti viene chiesto di svolgere più attività perché fa parte del tuo lavoro o perché altre persone sono incompetenti. Ad ogni modo, puoi giudicare da solo se è accettabile o meno. Se non ti senti a tuo agio [con il tuo lavoro], ci sono altri posti in cui puoi trovare lavoro. [Tu, lo sviluppatore, sei la merce. I datori di lavoro lo sanno e pregano che tu non te ne accorga mai.]

Ora riguardo al multi-tasking, non sono d'accordo al 100% quando le persone dicono "sì, basta andare avanti e indietro e assicurarsi che si stia facendo lo stesso importo su ciascun progetto". Scusa ma è un pessimo consiglio.

Per prima cosa devi capire come funziona il tuo cervello quando sviluppi un software (so che ci sono altri compiti coinvolti, ma concentriamoci su quello). Devi prima essere "cablato", il che significa che devi concentrarti molto e mettere la tua mente in una posizione in cui hai tutto mappato nella tua testa. Tutti i nomi delle variabili e dei metodi, il flusso di lavoro del codice, il modello a oggetti, i thread che affiancano, tutto. Di solito mi impiegano 15 forse 20 minuti per arrivare "nella zona".

Quando arrivi a quello stato stai davvero volando via e scrivendo codice come se stessi andando in bicicletta. Nel momento in cui vieni interrotto, puoi perdere tutto. Se l'interruzione è abbastanza lunga (5, 10 forse 30 minuti) perderai questo stato d'animo e dovrai ricominciare tutto da capo.

Quindi il multitasking è terribile perché ti costringe a lasciare "la zona" e passare a qualcos'altro. Se cambi costantemente ciò significa che non sei produttivo perché ogni volta che passi a un nuovo compito/progetto devi perdere quei 15-20 minuti per rientrare nella zona (per non parlare del fatto che il cervello si scioglie lentamente).

È come il multi-threading: a un certo punto il costo di cambiare il contesto del thread ogni paio di cicli è troppo alto, quindi la CPU finisce per passare più tempo a cambiare contesto che a eseguire le attività reali.

Consiglio vivamente di leggere un articolo di Joel Spolsky su questo argomento:

http://www.joelonsoftware.com/articles/fog0000000022.html

Quindi il mio consiglio è: prova ad imparare come (non) multi-task perché è davvero comune. Ma assicurati anche di sentirti a tuo agio nel farlo. Alcune persone possono impiegare più tempo a concentrarsi e soffriranno più di altre quando il multitasking; e va bene lo stesso. Non è perché è comune che dovrebbe essere considerato normale.

Joel lo mise bene quando disse:

In effetti, la vera lezione di tutto ciò è che non dovresti mai lasciare che le persone lavorino su più di una cosa alla volta. Assicurati che sappiano di cosa si tratta. I bravi manager vedono la loro responsabilità come rimuovere gli ostacoli in modo che le persone possano concentrarsi su una cosa e farla davvero.

54
Alex

Sì, è prevedibile. E benvenuto.

Ci sono un paio di modi per vedere questo:

  1. Ci si aspetta che ci sia multi-task ed è quasi impossibile concentrarsi. Ciò si traduce in processi ingegneristici non ottimali, confusione occasionale quando si passa avanti e indietro, sensazione di sfruttamento, frustrazione, stress, ecc. Tutto ciò è ovviamente negativo; però,

  2. Ti fidi di più progetti, il che riflette bene sui risultati che produci e sulla fiducia che il tuo datore di lavoro ha nelle tue capacità. È un'opportunità per mostrare loro che la fiducia è garantita.

Il mio consiglio è di sviluppare un giudizio sobrio di quali compiti richiedono la tua attenzione immediata e quali possono attendere. A volte la risposta è che nessuno dei due può aspettare ed è necessario adottare un approccio creativo per fornire risultati (un po 'per il progetto A, quindi un po' per il progetto B, quindi risciacquare e ripetere). Coltiva le abilità per prosperare in questo tipo di situazione.

Normalmente (anche se non sempre), questo sarà premiato con più responsabilità, più progetti da destreggiarsi e più aspettative. Ad un certo punto sarai in grado e ti aspetterai di delegare parte di questo lavoro. È una misura del successo.

Quindi, anche se le tue abilità di giocoleria in crescita sono sfruttate solo dalla tua attuale azienda, queste sono buone abilità da avere e ti serviranno bene nella tua carriera.

Per quello che vale, di solito sto lavorando a un grande progetto, uno più piccolo, manutenzione e supporto di vecchi progetti e gestendone almeno un altro. È frustrante, confuso, noioso e sono molto grato.

33
b w

Sì! È completamente "normale"/normale quando lavori in una società di servizi xD

Anche se collabori con progetti open source, questa è la regola

Forse non è e lo stato ideale, ma è il pane di tutti i giorni.

15
yeradis

È comune. Ma non va bene, per i motivi che hai delineato. Passare dal contesto alla produttività, quindi, se puoi, prova a lavorare su un progetto per un periodo di tempo considerevole, ad es. un giorno.

12
Anthony

Lavoro attivamente su 2-3 progetti diversi ogni giorno. E mantieni qualche decina in più. Alcune settimane diventa un po 'travolgente. Alcuni dei progetti sono enormi, alcuni sono così piccoli che sono stati codificati in pochi giorni e raramente hanno bisogno di modifiche. Varia, ma mi tiene esposto a diversi modi di pensare e risolvere problemi, diverse tecnologie e aree di business. Mi fa piacere.

Quindi, per rispondere alla tua domanda, sì, è molto comune.

9
CaffGeek

Consulta l'articolo chiamato Multitasking ti arriva dopo . Questo grafico racconta la storia:

enter image description here

In altre parole, l'azienda sta perdendo tempo facendo lavorare i propri programmatori su più di un progetto alla volta. Con solo tre progetti, lo spreco è del 40%! Il resto del tempo è suddiviso in tre progetti.

Il motivo del multitasking è spesso indicato come "fare più cose". Ma questo è un ragionamento errato. Il multitasking comporta solo il ritardo di tutte le versioni. Questa immagine mostra l'effetto del doppio tasking rispetto al completamento di un progetto alla volta:

enter image description here

(L'immagine ignora completamente il sovraccarico. In realtà, il tempo sprecato renderebbe entrambi i progetti il ​​20% più tardi.)

8
Martin Wickman

Sì, nella mia esperienza è normale (anche se alcuni dei "progetti" sono abbastanza simili, ad esempio un progetto di manutenzione e funzionalità sullo stesso prodotto). Per evitare conflitti e aspettative non realistiche, concordare con i project manager e il proprio manager di allocare determinate frazioni del tempo a ciascun progetto (ad esempio tre giorni sul progetto X, due sul progetto Y a settimana). Normalmente puoi quindi distribuire tali allocazioni come preferisci, ad es. Lun-Mer su X, Gio-Ven su Y.

Occasionalmente ci saranno momenti in cui un progetto "genera un'eccezione" e su cui bisogna lavorare ora. Ci sono due cose da fare qui:

  1. assicurarsi che sia davvero un'eccezione, non solo un project manager invadente: respingere quest'ultimo caso.
  2. scambia le tue allocazioni di tempo in modo da lavorare sempre la stessa frazione su ciascun progetto.
4
user4051

Dipende dalla compagnia. L'IMO è desiderabile lavorare principalmente su un solo progetto, ma spesso ciò non è possibile, soprattutto con le piccole aziende.

Naturalmente, correzioni di errori, ecc. Possono sempre verificarsi con qualsiasi progetto.

4
user281377

Se hai difficoltà a tornare al passo con la struttura di un progetto o la logica aziendale quando torni ad esso, dovresti cogliere l'opportunità di scrivere tutta la documentazione che puoi mentre ci lavori. Descrivere in dettaglio come funziona un sistema complesso, con le tue parole, renderà molto più semplice tornare al progetto in seguito. Inoltre, questa documentazione può essere utile per i tuoi colleghi se mai hanno bisogno di assistenza.

Se il progetto ha già una buona copertura della documentazione tecnica, può comunque essere utile annotare i tuoi pensieri mentre lavori su aree complicate. In questo modo puoi riprendere il tuo processo di pensiero la prossima volta che torni indietro.

3
Matt G

Beh, non dovrebbe essere normale, ma ho molti progetti sulle spalle per il mio attuale datore di lavoro. Ci vuole un po 'di tempo per abituarsi, lo ammetto. Il consiglio più importante che potrei dare è quello di dare sempre la priorità al tuo lavoro. Forza il tuo capo a dirti qual è il compito prioritario e lavora solo su quello. Non fare pressioni da chi si lamenta degli altri tuoi progetti. Non è ancora necessario aggiornare il tuo curriculum ma assicurati che il carico non aumenti oltre qualcosa che puoi ragionevolmente gestire.

2
ChaosPandion

Penso che sia normale. Il modo in cui funziona il mio lavoro in questo momento (sono in un'azienda con circa 40 sviluppatori, dimensione totale dell'azienda di circa 700). E di solito ho un progetto "a lungo termine" con molti piccoli biglietti/difetti che emergono, quindi di solito finisce per essere il 50% di biglietti piccoli e il 50% di lavoro sul progetto a lungo termine. Ciò che può essere difficile è che l'interruzione costante può rallentare e far deragliare il progetto a lungo termine.

0
Bmw

Penso che sia normale lavorare su più progetti. La chiave è accettare che affronterai inizialmente alcune ambiguità in termini di quadro generale del sistema.

Se ti sforzi di ottenere un quadro più ampio, otterrai chiarezza e sarai in grado di individuare le parti mobili/fisse nel sistema e in che modo le modifiche influiscono sul sistema.

Per un periodo di tempo imparerai a trovare schemi comuni nei vari sistemi su cui lavori. Questi possono essere applicati ad altri progetti che ridurranno la quantità di informazioni granulari che è necessario tenere in testa alla volta.

0
Pradeep

In qualsiasi progetto non banale vi è assegnata più di una persona. Ciò significa che devi collaborare con gli altri e aspettare che facciano il loro lavoro, così come devono aspettarti.

Invece di tenere le persone inattive, è comune avere più progetti attivi in ​​modo che ci sia sempre un compito aperto da svolgere se necessario.

Dovresti comunque lavorare in blocchi considerevoli su ogni progetto in modo da poter ottenere "nella zona" ed essere produttivo, però.

0
user1249