Quali sono i tuoi obblighi quando si carica a ore vs ricarica per progetto?
Essenzialmente lo stesso. Sii professionale.
Se si accetta di intraprendere un progetto, fornire una stima approssimativa che potrebbe richiedere 10 giorni per lavorare e addebitare £ X all'ora - sei obbligato a lavorare gratuitamente dopo quei 10 giorni e non sei ancora riuscito completare il tuo progetto a causa di problemi imprevisti?
No, basta che siano circa 10 giorni, quindi stai bene. Definirei all'incirca 10 giorni come tra 50 e 120 ore ai bordi estremi. Qualsiasi cosa per oltre 120 ore (un sovraccarico del 50%) è praticamente al di là del pallido.
Anche se "problemi imprevisti" lascia molta vaghezza. I professionisti con esperienza anticipano molte più problematiche rispetto ai nuovi sviluppatori. Tuttavia, se il cliente sa che sei un nuovo sviluppatore (e sa che sta ottenendo uno sconto significativo a causa di ciò), allora c'è un po 'di spazio qui.
Che cosa succede se hai consegnato il progetto ma vengono rilevati dei bug: dovresti correggerli gratuitamente se i 10 giorni sono scaduti o dovresti addebitare al tuo cliente?
Bugs? Sì, dovresti risolverli gratuitamente. Non ricevi pagamenti per 10 giorni per produrre codice non funzionante.
Ora, di nuovo, "bug" è un po 'vago. Ci sono bug per lo show-stopper (come, il programma non funziona - ovviamente per colpa tua) e bug per i casi limite (il programma tronca il testo su Windows localizzato in turco con l'IME cinese abilitato - non molto ragionevole). La maggior parte cade da qualche parte nel mezzo, ma l'onere della prova è su di te.
Ci sono anche bug sulle specifiche: questi sono i più difficili. Dovrai usare il tuo giudizio sul fatto se avresti dovuto ragionevolmente anticipare, mettere in discussione o implicare la modifica delle specifiche. Ancora una volta, ti avrei messo l'onere della prova.
Per un progetto di 10 giorni (80 ore) con uno sviluppatore ecologico, altre 10-15 ore di correzioni di bug non sarebbero troppo da chiedere. A parte questo, proverei a calcolare il pagamento per - anche se probabilmente farei altre 5-10 ore gratis prima di licenziare il cliente.
Inoltre, per il progetto di cui sopra, quale dovrebbe essere il risultato quando inizi il progetto, ma dopo i 10 giorni per qualsiasi motivo devi rinunciare e dire al tuo cliente che non puoi più farlo? Mi rendo conto che questo non fa nulla per rafforzare la tua reputazione e il tuo rapporto con il cliente, ma sei obbligato a rimborsare i soldi che ti sono stati pagati o hai semplicemente consegnato il codice sorgente mezzo / quasi completato e li hai aiutati a trovare qualcun altro per completarlo?
Restituisci i soldi. Se non riesci a terminare il progetto, è probabile che tu non possa giudicare mezzo completato. Se il cliente ti ha assunto, è ancora più probabile che non riescano a giudicare mezzo completato. Se riesci a trovare qualcun altro per finirlo, puoi subappaltare a loro - la differenza in ciò che ti fanno pagare e ciò che hai già fatto è il tuo profitto (o perdita).
Alla fine, è spesso meglio piegarsi al cliente e segnarlo come una lezione appresa. Dopo un po ', sarai in grado di individuare i "clienti problematici" ed evitarli (o ricaricarli) all'inizio. Imparerai anche a stimare un po 'meglio, a integrare i costi di correzione dei bug nei tuoi prezzi, ecc.
Come sviluppatore studente, hai un po 'di margine di manovra. Probabilmente nessuno ti farà causa per la miseria che hai addebitato per un progetto di 10 giorni. Non avrai mai più affari da quel cliente (o dai suoi amici), ma, dato che hanno assunto uno sviluppatore di studenti, è probabile che vogliano solo manodopera a basso costo e non capiscano quanto costa effettivamente assumere un buon sviluppatore comunque. Non perderai molto in futuro, tranne il mal di testa, anche se a scapito di una coscienza pulita.
Il mio consiglio? Basta finirlo: ti sentirai meglio, il cliente si sentirà meglio e sarai uno sviluppatore e un uomo d'affari migliori per questo. Non è che valga la pena lavorare per anni - e hai tutti i tuoi amici su Stackoverflow e Stackexchange per aiutarti. ;)