¿Cuáles son sus obligaciones al cobrar por hora frente a cobrar por proyecto?
Esencialmente lo mismo. Ser profesional.
Si acepta participar en un proyecto, haga una estimación aproximada de que podría llevarle 10 días trabajar y cobrar £ X por hora. ¿Está obligado a trabajar de forma gratuita después de que hayan transcurrido esos 10 días y aún no lo haya logrado? completar su proyecto debido a problemas imprevistos?
No, mientras sean aproximadamente 10 días, entonces estás bien. Definiría aproximadamente 10 días como entre 50 y 120 horas en los extremos. Cualquier cosa que supere las 120 horas (un 50% de desbordamiento) está más allá del límite.
Aunque los "problemas imprevistos" dejan mucha vaguedad. Los profesionales experimentados anticipan muchos más problemas que los nuevos desarrolladores. Sin embargo, si el cliente sabe que usted es un desarrollador nuevo (y sabe que está obteniendo un descuento significativo por ello), entonces hay algo de margen de maniobra aquí.
¿Qué sucede si ha entregado el proyecto pero se encuentran errores?
¿Loco? Sí, deberías arreglarlos gratis. No se le paga por 10 días para producir un código roto.
Ahora, de nuevo, "error" es un poco vago. Hay errores de show-stopper (como, el programa no se ejecuta, obviamente es su culpa) y errores de borde (el programa trunca el texto en Windows localizado en Turquía con IME chino habilitado, no es realmente razonable). La mayoría cae en algún punto intermedio, pero la carga de la prueba recae sobre usted.
También hay errores de especificación: estos son los más difíciles. Tendrá que usar su criterio sobre si debería haber anticipado, cuestionado o implicado razonablemente el cambio de especificación. Nuevamente, pondría la carga de la prueba sobre ti.
Para un proyecto de 10 días (80 horas) con un desarrollador ecológico, otras 10 a 15 horas de corrección de errores no serían mucho pedir. Sobre cualquier cosa, trataría de calcular el pago, aunque probablemente haría otras 5 a 10 horas gratis antes de despedir al cliente.
Además, para el proyecto anterior, ¿cuál debería ser el resultado cuando comience el proyecto, pero después de los 10 días por cualquier motivo, tiene que renunciar y decirle a su cliente que ya no puede hacerlo? Me doy cuenta de que esto no hace nada para construir su reputación y relación con el cliente, pero ¿está obligado a devolver el dinero que se le pagó o simplemente entrega el código fuente medio / casi completado y lo ayuda a encontrar a alguien más para completarlo?
Usted devuelve el dinero. Si no puede terminar el proyecto, es probable que no pueda juzgar a medio completar. Si el cliente lo contrató, es aún más probable que no puedan juzgar a medio completar. Si puede encontrar a alguien más para terminarlo, puede subcontratarlo: la diferencia en lo que le cobran y lo que ya obtuvo es su ganancia (o pérdida).
Al final, a menudo es mejor inclinarse ante el cliente y marcarlo como una lección aprendida. Después de un tiempo, podrá detectar a los "clientes problemáticos" y evitarlos (o recargarlos) al principio. También aprenderá a estimar un poco mejor, incorporar los costos de corrección de errores en sus precios, etc.
Como desarrollador de estudiantes, tienes un margen de maniobra. Es probable que nadie lo demande por la miseria que cobró por un proyecto de 10 días. Nunca volverá a obtener negocios de ese cliente (o sus amigos), pero, dado que contrataron a un desarrollador de estudiantes, es probable que solo quieran mano de obra barata y de todos modos no entienden lo que realmente cuesta contratar a un buen desarrollador. No perderá mucho en el futuro, excepto dolores de cabeza, aunque a costa de una conciencia limpia.
¿Mi consejo? Simplemente termínelo: se sentirá mejor, el cliente se sentirá mejor y será un mejor desarrollador y empresario por ello. No es que valga la pena un año de trabajo, y tiene todos sus amigos en Stackoverflow y Stackexchange para ayudar. ;)