Nello sviluppo di software freelance, che tipo di sanzioni dovrebbero avere le aziende quando non rispettano le scadenze? [chiuso]


12

Stavo parlando con un co-sviluppatore.

Ha un cliente che voleva assicurarsi di consegnare in tempo. Il cliente desidera ripercussioni sulle scadenze mancate.

Anche se non lavoro come freelance, non ho potuto dare una risposta.

Quindi, la mia domanda è:

Quali ripercussioni concordate con i vostri clienti (liberi professionisti) se non rispettate le scadenze sui vostri risultati (oltre a essere licenziati)?


2
Sarebbe sciocco ad accettare qualsiasi penalità, almeno senza una clausola di esenzione basata sul cambiamento dei requisiti. La stima dell'attività è orribilmente imprecisa nel migliore dei casi, prima di prendere in considerazione la gestione delle modifiche. Fondamentalmente. Esegui
Matt D

4
Quindi il cliente avrebbe un interesse finanziario a farti perdere la scadenza? Non sembra davvero una buona idea. Ciò avrà senso solo se il cliente ha anche una forte perdita finanziaria in ritardo (come nell'esempio di MainMa).
Doc Brown,

2
Questo mi sembra perfettamente accettabile. Sono abbastanza sorpreso dai commenti. Ti aspetti che le persone paghino per lavoro, senza scadenza e senza incentivi per rispettare la scadenza? "La stima delle attività è orribilmente inaccurata" - non deve essere così.
NimChimpsky,

@DocBrown il cliente presumibilmente ha un interesse finanziario molto più grande nel rispettare la scadenza, quindi pagando il lavoro con una scadenza. Trovo che i programmatori non apprezzino le scadenze e la struttura a volte sorprendenti. Immagina di avere una nuova cucina attrezzata e il negozio dice oooooo no, non possiamo dirti quando sarà finito, ti addebiteremo solo a ore. Scapperei a un miglio da quello. La programmazione non è qualitativamente diversa da nessun altro progetto.
NimChimpsky,

5
Se stai installando una nuova cucina, verrai quotato per la costruzione come specificato. Se inizi a cambiare la superficie di taglio, le piastrelle, i rubinetti e i materiali del lavandino ti verranno addebitati costi aggiuntivi per entrambi i materiali sprecati e il tempo speso. È facile capire perché ti viene addebitato in questo caso, c'è una relazione fisica. La modifica dei requisiti software spesso non ha questa stessa comprensione e qualsiasi contratto che richiede di consegnare X per Y dove X non è inchiodato esattamente richiede problemi. Le cose cambieranno, non riuscire a spiegarlo è sciocco.
Matt D

Risposte:


25

Uno dei più efficaci: penalità per giorno di ritardo. Questo è anche ciò che viene fatto per i grandi progetti, la pena è a volte migliaia di dollari al giorno.

Se una scadenza precisa è importante (ad esempio se si sviluppa per le Olimpiadi un'app Web che gestirà la trasmissione dell'evento nel 2014, la scadenza sarebbe l'inizio dei Giochi olimpici nel 2014), quindi la misura efficace potrebbe essere quella in un caso in cui il progetto è in ritardo, la società non è pagata affatto e dovrebbe anche pagare una penalità.

Se tali misure drastiche non sono appropriate, l'unico fatto che un cliente ben pagato lascerà se il progetto è in ritardo può fare il trucco.

Nota per il cliente:

  1. Molti ritardi sono colpa dei clienti stessi. Le cause possono essere multiple:

    • Nessun SRS, ma invece due paragrafi che descrivono perdutamente ciò che il cliente immagina essere i suoi bisogni (e, naturalmente, il cliente non vuole pagare per la raccolta dei requisiti, considerando questo passaggio una perdita di tempo).

    • Arrivare due settimane prima della scadenza finale e dire che non importava che il progetto fosse stato realizzato fino ad ora in Java e che utilizzava Oracle: è indispensabile che venga riscritto in Python e utilizzato MySQL, perché il cliente ha letto una rivista ieri dicendo che quelle tecnologie sono il futuro.

    • Venire con una nuova serie di requisiti in ogni riunione. Punti bonus quando tali requisiti contraddicono quasi tutti i requisiti dati fino ad ora.

  2. Una buona comunicazione è essenziale per un buon progetto.

    Molti altri ritardi sono dovuti alla mancanza di comunicazione. Pratiche in cui il cliente non ha alcuna comunicazione da mesi con l'azienda e si aspetta di essere contattato solo una volta che il prodotto è finito e lucidato invitano a un disastro.

  3. Si ottiene quello che si paga.

    Esistono procedure specifiche che aiutano a mantenere organizzato il progetto e, in realtà, la programmazione dovrebbe richiedere solo il 10-15% del tempo per progetti di grandi dimensioni e dal 15% al ​​20% di tempo per i progetti di medie dimensioni. Tali progetti dovrebbero essere realizzati anche da persone che sanno cosa stanno facendo.

    In pratica, i clienti non sono disposti a pagare $ 800 al giorno per un analista che creerà architettura e progettazione di software e non vogliono pagare per altri passaggi. Un programmatore albanese alle prime armi che è felice di lavorare per $ 50 al giorno sembra molto più vantaggioso.

    Non lamentarti del fatto che il progetto è un disastro quando sei pronto a pagare solo per progetti disastrosi.

  4. Non negoziare il tempo necessario per fare il lavoro.

    Incontro spesso discussioni del genere:

    Sviluppatore: dati i requisiti, posso consegnarlo in quattro mesi.
    Cliente: impossibile. Il progetto dovrebbe essere realizzato tra due mesi.
    Sviluppatore: beh, a meno che tu non abbia tagliato alcune funzionalità ...
    Cliente: Non posso! Sono necessarie tutte le funzionalità. Perché non riesci a fare il lavoro in due mesi? Ho contattato un programmatore indiano, un mio amico, che può consegnarlo in un mese e mezzo e chiede solo la metà del prezzo!

    Negoziare il tempo è una ricetta per il disastro.

  5. Conosci le tue priorità.

    Prendi in considerazione la regola del 90%. Quando il progetto viene gestito in modo errato, non è insolito vedere gli sviluppatori dire che hanno effettuato il 90% del progetto un mese dopo l'avvio del progetto. Quindi, un mese dopo, è ancora del 90%. E un mese dopo.

    Ciò può avere due cause:

    • Quando il progetto non viene eseguito correttamente, vale a dire il 100% del tempo è dedicato alla programmazione, che lascia lo 0% per la raccolta dei requisiti, l'architettura, la progettazione e i test, ciò che accade è che i programmatori non hanno idea del lavoro da svolgere e scoprono nuovi compiti durante tutta la vita del progetto. La preparazione del progetto aiuterebbe ad avere una comprensione più ampia di tutti i compiti che dovrebbero essere svolti.

    • Quando il cliente ha fretta, non è insolito per alcune aziende consegnare velocemente qualche schifezza, quindi dedicare un'enorme quantità di tempo alla risoluzione dei bug. Alcune aziende lavorano solo in questo modo, il che li aiuta a rimanere competitivi e affermano di aver realizzato un determinato progetto in tre settimane, anche se in seguito hanno trascorso tre anni a risolvere il caos.

    Mettendo le priorità in chiaro e richiedendo che il progetto venga svolto correttamente, si eliminano quelle aziende dalla lista dei candidati.


3
"Non lamentarti del fatto che il progetto è un disastro quando sei pronto a pagare solo per progetti disastrosi." Posso usarlo? Questo è un ottimo post tra cui, e riassume bene i rischi di entrambe le parti.
Matt D

+1 Punti molto buoni. Inoltre, è un piacere leggere :)
Radu Murzea,

5
@MattD: le risposte su Stack Exchange sono concesse in licenza Creative Commons Attribution-ShareAlike 3.0 Unported, quindi sì, puoi farlo. Inoltre, sentiti libero di leggere un post correlato sul mio blog: quantificare tempi e costi: perché sbagli sempre? , nonché le risposte alla mia domanda qui: programmers.stackexchange.com/q/158640/6605
Arseni Mourzenko

Perché non c'è una parte 4, 5, 6 ecc. In quel post sul blog?
Radu Murzea,
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.