Come decidi se dovresti prendere un progetto?


11

Sono uno sviluppatore abbastanza nuovo. Professionalmente ho programmato in C # per due anni come stagista e 6 mesi come sviluppatore junior. Un amico della mia famiglia ha bisogno di aiuto con un progetto scritto in VB.net. Non ho mai usato VB.net, quindi sono un po 'preoccupato lì.

Ma la vera domanda arriva dal fatto che una volta che ho esaminato i documenti per il progetto ho la sensazione che non ne deriverà nulla di veramente buono. Ho la sensazione che causerà più stress di quello che vorrei avere nella mia vita attualmente.

In che modo gli sviluppatori esperti prendono la decisione se prendere il progetto o lasciarlo andare? Quali sono alcuni parametri utili per semplificare la decisione?

modificare

Questo in realtà sembra un ERP molto grande su cui vorrebbe che io lavorassi e non credo che sappia qualcosa sulla programmazione, quindi non penso che il fatto di essere molto giovane gli abbia nemmeno fatto un pensiero.


10
È una decisione difficile? Non ti piacciono le specifiche e non ci credi. Perché vorresti prendere questo progetto?
Vitor Py,

2
Questo è un vero esempio che ho in questo momento, ma ho sentito che sarebbe utile in generale aprire una discussione su come si scelgono i progetti, perché non ci sono domande simili.
J Lundberg,

@J Lundberg: ho aggiornato la mia risposta in risposta al tuo aggiornamento.
FrustratedWithFormsDesigner

3
Se non conosce alcuna programmazione, perché insiste su VB.NET? Ovviamente non lavorerà al progetto con te. Non c'è motivo di usarlo su C # in .NET. Puoi compilare il VB.NET esistente e usarlo come libreria nel tuo codice C # o viceversa.
Jonathan Henson,

"ha bisogno di aiuto" - è pagato o non pagato?

Risposte:


11

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


5
+1 per "non lavorare mai per la famiglia". A meno che nessuna delle parti abbia investito troppo in esso e lo consideri puro divertimento, e anche allora si dovrebbe fare attenzione.
Ethel Evans,

11

In che modo gli sviluppatori esperti prendono la decisione se prendere il progetto o lasciarlo andare?

Ho bisogno del lavoro? In tal caso, "prendo" il progetto.

Quali sono alcuni parametri utili per semplificare la decisione?

Quante scelte ho? Più di 1? Posso scegliere tra le alternative.

Solo 1? Bene. Questo è tutto.

La domanda "stress nella mia vita" è discutibile; mancata accettazione di un progetto significa mancata conservazione dell'occupazione; che ha conseguenze disastrose.

Se hai il tipo di libertà finanziaria in cui lo "stress" è un fattore decisivo, è davvero fantastico.


3
+1: Penseresti che ce ne sarebbe di più, ma è praticamente ciò a cui si riduce ogni volta.
Ryan Hayes,

@ S.Lott- Sono sicuro che hai spesso l'opportunità di lavorare su più progetti. Sembra improbabile che tu sia in situazioni di tipo "fai o muori" molto spesso. Potrei supporre troppo, ma questo sembra essere un po 'un uomo di paglia, dal momento che qualcuno con la tua esperienza ha sicuramente scelto di rifiutare un progetto qua e là e probabilmente ha anche accettato progetti prima quando non ne avevi bisogno senso "a corto di soldi".
Morgan Herlocker,

1
@ironcode: "Potrei supporre troppo". Vero. Non ho mai avuto l'opportunità di rifiutare un progetto a causa dello stress.
S.Lott

@ S. Lott Voglio dire stress in un certo senso che ho già un lavoro e fare qualcosa del genere potrebbe lasciarmi senza tempo per la mia famiglia.
J Lundberg,

@J Lundberg: aggiorna la tua domanda per includere tutti i fatti.
S.Lott

5

Cosa otterrai da questo progetto? I soldi? Esperienza? Qualcos'altro?

  • Soldi: proviene da un membro della famiglia (cerco di non fare affari con la famiglia, ma è tutta un'altra discussione), è piccolo (quindi lo fai sembrare), sei abbastanza giovane, quindi non aspettarti un sacco di soldi da esso (basato sulle mie esperienze).

  • Esperienza: imparerai una nuova lingua! Ciò potrebbe essere utile in futuro, potrebbe darti un leggero vantaggio rispetto agli sviluppatori .NET che conoscono solo C #.

Ma il tuo istinto ti dice che questo progetto sarà cattivo . Perché? Sembra che tu possa almeno avere qualche esperienza da questo.

La maggior parte degli appaltatori inizierebbe osservando quanti soldi avrebbero potuto decidere di intraprendere un progetto. Idealmente, i progetti più difficili portano a più soldi. Se questo è difficile, dovrebbe pagare bene, ma non conosco i dettagli per sapere se effettivamente verrai pagato bene ...


In risposta ai dettagli del tuo aggiornamento: digli che questo va ben oltre lo scopo di un singolo programmatore junior. Potresti essere in grado di fare qualche minuto di ricerca e vedere se esiste un prodotto esistente in grado di fare quello che vuole e vedere se la pagina "Funzionalità" parla di personalizzazione / plugin / estensibilità. Potrebbe anche voler parlare con un negozio di software personalizzato se non è presente alcun prodotto esistente o se è necessario eseguire un ampio lavoro di programmazione dei plug-in. Non c'è niente di sbagliato nell'ammettere un progetto che è troppo grande per te da gestire - è molto meglio che accettarlo e fallire completamente (specialmente se si tratta di un membro della famiglia - le funzioni familiari potrebbero essere scomode e tese per anni).


3
A friend of my family

Personalmente se questa frase è coinvolta, non prendo il progetto.


2

Come libero professionista, accetto solo progetti in cui sono fiducioso di poterlo completare in tempo, nel budget e in buona qualità. Rifiutare un progetto non significa disoccupazione - almeno non per sempre. Accettare un progetto che non è possibile offrire costa tutto: denaro, reputazione, salute.

A volte è un po 'più difficile quando un buon cliente ha bisogno di aiuto per un nuovo progetto che semplicemente non si adatta alle mie capacità; ma anche allora, è meglio essere onesti e lasciare che qualcun altro lo faccia.

Nel tuo caso, puoi e dovresti negare il progetto: non hai abbastanza esperienza, non conosci la lingua, è troppo grande per te.


1

Ho programmato come freelance da oltre vent'anni. Perché un progetto abbia davvero successo, necessita almeno di quanto segue:

  1. Qualcuno che conosce le tecnologie di programmazione, software e hardware utilizzate per l'implementazione - o tecnologie abbastanza simili per apprendere le tecnologie di implementazione molto velocemente
  2. Qualcuno che conosce il dominio problematico ed è in grado e disposto a tradurlo in specifiche che il programmatore può usare. (Se il programmatore è anche l'esperto del dominio e il progetto è abbastanza semplice, le specifiche possono essere nella loro testa o note informali.)
  3. Qualcuno che è capace, disposto ed esperto nel gestire bene le attività del progetto, la sequenza temporale, ecc. E conosce i tipi di insidie ​​che è possibile affrontare con cose come la stima e come evitarle
  4. Qualcuno per gestire le comunicazioni e le relazioni tra tutte le parti interessate del progetto, inclusi i programmatori e i clienti
  5. Persone di entrambe le parti, consulenti e clienti, che hanno esperienza nel mantenere solide le questioni commerciali in corso, inclusi contratti e denaro. Se non hai questa esperienza da solo, puoi cavartela con un consulente esperto fino a quando non lo sei.
  6. Una relazione d'affari a distanza in cui, se devi prendere una decisione aziendale difficile, non hai problemi al di fuori del lavoro
  7. Un team abbastanza grande, con la giusta combinazione di competenze, strumenti e risorse, per fornire un prodotto di qualità entro i tempi richiesti

Descrivi un amico di famiglia che non sa nulla di programmazione, che ti vuole - un programmatore inesperto - per costruire un sistema ERP usando una tecnologia che non conosci.

Mi sembra che questa situazione manchi sicuramente su # 1, # 3, # 6 e # 7, e forse tutte. Come dice Adam su Mythbusters, "Questa è una ricetta per il disastro".

Cavolo, non lo toccherei con un palo da dieci piedi. Potrei andare avanti all'infinito sulle altre bandiere rosse che vedo qui, ma fondamentalmente, il mio consiglio per te è di andare con la tua sensazione viscerale, perché hai ragione: "nulla di veramente buono verrà da esso".

Dato che questo è un amico di famiglia, se fossi in te, direi semplicemente "Hai un grande progetto e hai bisogno di qualcuno davvero bravo, e sono troppo inesperto per darti i risultati che dovresti avere", e lascialo a quello.

Ho anche scoperto che quando hai un cliente che è un problema in un'area, è probabile che sia un problema in altre. Un potenziale cliente che considererebbe persino di avere un sistema ERP progettato e implementato da un programmatore junior è o così ignorante da costituire un pericolo per se stesso e per gli altri, o ridicolmente economico, e uno di questi li metterebbe nella mia lista "stai lontano" .


FWIW, come consulente / libero professionista, finisco per ricoprire i ruoli dalla mia parte, con il consiglio di mia moglie. Abbiamo capito cosa sono tutti quegli elementi vedendo i progetti fallire a causa della mancanza di essi - a volte, sono stati i nostri progetti. E anche dopo vent'anni, e nonostante abbia verificato questi criteri, mi ritrovo ancora con un progetto occasionale che non funziona: quel rischio fa sempre parte del lavoro. Ora mi assicuro che i progetti non falliscono a causa di qualcosa che ho fatto di sbagliato e che i contratti sono strutturati, quindi vengo pagato se l'altra parte si rovina.


0

Vuoi lavorare con le altre persone coinvolte?

Il progetto è solo una scusa per incontrarsi e associarsi con le persone.


Mi piace quel punto di vista. Dovremmo lavorare insieme su un progetto.
Jonathan Henson,

Mi è servito molto bene. I dettagli del progetto possono spostarsi come sabbie durante una tempesta. Le persone possono ancora sorprenderti, ma cambiano più lentamente.
bmike,

0

La mia opinione personale sarebbe quella di fare una piccola esplorazione di ciò che sta cercando, quale linea temporale, che tipo di costi si aspetta, ecc. Se questo è in realtà un grande ERP, l'aiuto potrebbe durare per anni e diventare davvero brutto. La gestione dei rifiuti rispetto a SAP sarebbe un esempio di quanto questo potrebbe costare se si intende davvero grandi come budget di progetto a 9 cifre.

Il mio punto nel fare l'esplorazione è di tracciare una linea nella sabbia in modo che sia chiaro il motivo per cui sto ponendo le domande e ciò che intendo avere di conseguenza. "Quanto posso vedere questo essere?" è la domanda che avrei avuto mentre avrei messo in discussione metodologia, budget e tempistiche in anticipo e poi fare una piccola ricerca per vedere se le cose sembrano essere al livello o è qualcosa che potrebbe finire in qualche sito umoristico IT come il Daily WTF .

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.