Dalla mia esperienza: non fare mai un lavoro che coinvolga denaro per i familiari con cui devi trascorrere le vacanze o con gli amici che vuoi mantenere. Una delle parti coinvolte avrà sempre la sensazione che l'altra parte stia caricando troppo o non pagando abbastanza e che abbiano fatto un favore all'altra parte. Quando scade la scadenza, di solito sono la meno comprensibile, e di solito sono buchi di culo durante il beta test perché se hai un bug - che lo farai - non capiranno. È sempre un casino.
Ero idealista e pensavo che tutti gli altri avessero solo bisogno di migliori abilità delle persone, ma no, è così. Le persone che non comprendono il processo di sviluppo del software vanno SEMPRE fuori di testa quando qualcosa non soddisfa le loro aspettative nel primo momento in cui lo vedono. Questo è vero negli affari con i project manager tanto quanto con i membri della famiglia. Il problema è che devi mantenere una relazione con la famiglia e gli amici e le cose non sono mai strettamente commerciali.
Detto questo, se il progetto aumenterà i livelli di stress e non hai bisogno di soldi, perché prenderlo? Soprattutto se hai già un lavoro di sviluppo software in cui vuoi eccellere, direi che dovresti dedicare gran parte del tuo sforzo lavorativo ad essere eccellente nel tuo lavoro quotidiano perché è lì che alla fine sarai ricompensato per un lavoro di qualità.
Se hai bisogno di soldi e sei d'accordo con la potenziale perdita di un amico di famiglia, allora prendi il lavoro. La cosa peggiore che potrebbe accadere - a parte le cose che ho menzionato prima - è che impari cosa sei e in cui non sei bravo, o impari che hai morso più di quanto puoi masticare facendo diventare il progetto un cattivo mal di testa a causa della tua inesperienza. L'ho fatto due volte con il mio attuale lavoro - fortunatamente ho dei datori di lavoro molto comprensivi. Sebbene fosse una sofferenza mentre mi sentivo morto in acqua, sono emerso un programmatore molto migliore con un set di abilità molto più ampio di prima.
Non esiste un calcolo per determinare quali lavori lasciare e mantenere, solo esperienza e personalità. Devi solo decidere cosa apprezzi e perseguirlo. Cose da considerare:
È un progetto su cui mi divertirò a lavorare? La squadra è una squadra con cui mi divertirò a lavorare?
Che tipo di pagamento offriranno? Se nessuno, quale sviluppo professionale riceverò? Offrono qualche tipo di rischio condiviso (cioè opzioni su azioni, percentuale di profitti)? Questo è un grande persuasore per me.
Ad ogni modo, questi sono solo principi da utilizzare nel processo decisionale. Tutto dipende da ciò che apprezzi. Ad esempio, apprezzo le sfide intellettuali e il tempo con la mia famiglia, quindi di solito attribuisco un'alta priorità a ciò che è il progetto e alle competenze che imparerò a farlo. Tuttavia, mi assicuro anche di affermare in anticipo che lavoro solo 2 o 3 notti a settimana in modo da poter trascorrere del tempo con mia moglie e i miei figli poiché lavoro già tutto il giorno. Adeguo la scadenza per soddisfare questa richiesta. Se non gli piace, non accetto il lavoro.
Qualunque cosa tu faccia, assicurati di dichiarare chiaramente ciò che vuoi e non farai, e assicurati che dichiarino chiaramente le loro aspettative prima di assumere il lavoro. La cosa peggiore che può accadere è che il cliente abbia aspettative non dichiarate e che tu abbia sottovalutato tali aspettative.
PS Vorrei davvero aver letto questo articolo all'inizio della mia carriera. Si applica al mio ultimo paragrafo. http://www.joelonsoftware.com/articles/fog0000000356.html