Estos son los posibles escenarios
1) Si se contrata para facturar por horas, no sería ético hacerlo de otra manera. El hecho de que reutilices o no el código (suponiendo que estés legalmente autorizado a hacerlo), no es un factor.
2) Si ofrece un presupuesto fijo, si es capaz de ofrecer un alto valor por menos esfuerzo de su parte, tiene todo el derecho a hacerlo.
Ambos enfoques son válidos (facturación por horas o precio fijo) y la reutilización de su código (siempre que esté legalmente permitido) es un "hecho" en el mundo actual.
De hecho, trato de encontrar un término medio feliz repercutiendo algunos ahorros de costes, y mejorando mi $$$ por hora, adoptando el siguiente enfoque con los clientes:
"He hecho un proyecto similar antes y puedo reutilizar gran parte del código, así que puedo ahorrarte algo de dinero en el desarrollo".
Personalmente, mi preferencia, como autónomo, son los proyectos de "precio fijo y alcance fijo" y me atengo a ello, así que si he hecho $50,000 worth of development work for one client, and it's going to take me 10% of the time, I'm not going to charge only $ 5.000 - Yo cobraría 12.500 dólares, y aquí está mi justificación:
1) El cliente sólo paga el 25% del coste de "desarrollo completo": se ahorra mucho;
2) Tus clientes están en el negocio para ganar dinero, tú también y no eres una "obra de caridad", mereces ganar por tu trabajo y por el "valor" que aportas.
(ASIDE: Por supuesto, hago excepciones especiales con las organizaciones sin ánimo de lucro y de caridad, y las ayudo cuando puedo).
Por otro lado, si consigo un proyecto pagado para desarrollar un código que sé que voy a poder reutilizar y revender, entonces podría cotizar mucho más bajo que el "coste por hora" real de desarrollo - es un movimiento comercial inteligente, porque ahora has añadido a tu biblioteca.
Entonces puedes ir a los clientes y decirles: "Acabo de desarrollar esto para el cliente XYZ y creo que puedo proporcionar estas 'actualizaciones' a su sitio por un coste reducido si quiere incorporar estos cambios".
Mientras seas honesto y transparente con tus clientes, no hay nada poco ético en estos enfoques, se entiende que así se hacen las cosas.
También se entiende que construir relaciones basadas en la confianza es fundamental para el éxito empresarial a largo plazo.
(ADVERTENCIA: Utilice el sentido común en este caso. Si utilizas este enfoque con un competidor directo del cliente, en mi opinión, estás siendo poco ético (y sórdido)), pero por ejemplo, si construyes una función de 'Localizador de tiendas' para un cliente que vende regalos para hombres, y tiene una pequeña cadena de 'Tiendas de Mascotas' - puedes utilizar con seguridad este enfoque).
Recuerda que, sobre todo cuando te metes a desarrollar "aplicaciones a medida", los precios son muy "arbitrarios".
Si cobra demasiado poco, es probable que sus clientes no respeten su nivel de experiencia.
Si cobra demasiado, sus clientes sentirán que se está aprovechando de ellos.
Si puede, intente hablar con el cliente de lo que cree que vale el proyecto, pregúntele. (te sorprenderá la frecuencia con la que te proponen una cifra mayor de la que tenías en mente) y busca un consenso.
Hay cierta "seguridad" en cobrar por hora -mucha gente lo prefiere-, pero estás limitando tu potencial para ganar dinero, y ser capaz de reutilizar el código y usar los repositorios de código, etc. debería permitirte ganar mucho más en general, a la vez que ofreces un mejor valor.
Por eso, preguntas como "¿Cuál era el presupuesto que tenía en mente para este proyecto?" son herramientas poderosas en su arsenal como autónomo que tiene que calcular los costes de los proyectos.
Si te dicen un precio con el que estás contento, sólo tienes que responder: "Sí, podemos hacerlo", rebuscar en tu biblioteca de códigos, ganar dinero y hacer feliz a tu cliente.