Como proveedor independiente que es contratado para escribir un producto para una empresa, ¿es razonable enviar solo el código fuente y la documentación del usuario sin incluir documentos de diseño, diagramas de arquitectura, pruebas unitarias, etc. (básicamente cualquier otra cosa que no sea estrictamente necesaria para ejecutar el producto o extiéndelo)?
El objetivo es hacer que el producto final sea extensible para el cliente para que pueda avanzar en su desarrollo internamente, pero no de forma gratuita. Tendrían que profundizar en la fuente para dar sentido a algunas decisiones de diseño, etc., y serán responsables de escribir sus propias pruebas exhaustivas para evitar que se introduzcan regresiones.
La idea aquí no es hacer que el código sea ininteligible. Solo me gustaría crear una oportunidad futura para ser contratado para escribir extensiones en virtud del "conocimiento interno" y la experiencia que tengo de ser el autor original.
¿Se consideraría esto poco ético?
Editar: El contrato se está negociando actualmente, por lo que la cuestión de lo que constituye los resultados finales no se ha decidido con firmeza. Además, debería haber mencionado que mantendré la propiedad del producto. Solo otorgaré al cliente una licencia de uso. ¿Este detalle hace una diferencia en si esto se considera una mala forma?
fuente
Respuestas:
Contractualmente, serían inteligentes al incluir algún tipo de cláusula sobre el alcance de la documentación que desean. Deben compensarlo por presentarlos en un formato comprensible y profesional (rehacer el boceto de la servilleta).
No es poco ético hacer solo lo que se le pide y se paga, pero hacer todo lo posible para retener información es simplemente incorrecto.
Si me das una aplicación poco documentada y complicada con la que no puedo trabajar, estoy más inclinado a pensar que eres un mal programador que algún tipo de genio sin el cual mi compañía no puede prescindir. Construir una reputación de hacer las cosas bien.
fuente
¿Los cobraron por desarrollar las pruebas unitarias y los documentos? y pagaron la factura? Si es así, tienen derecho a recibir lo que le pagaron.
De lo contrario, la próxima semana veremos una pregunta aquí en p.se.com titulada '¿Cómo obligamos a nuestro contratista a que nos brinde toda la documentación técnica y las pruebas unitarias por las que les pagamos? "
fuente
Solo te estás haciendo daño a ti mismo. Si su personal interno analiza lo que has hecho y encuentra una falta total de documentación, pensarán que eres un tonto y será menos probable que te retenga en el futuro.
fuente
Preguntaría cuál de estos cree que lo describe:
o
No intentes mezclar y combinar esas dos configuraciones. Podría cobrar más por el primero (ya que está aportando más habilidades y tomando más riesgos) o menos (ya que terminan teniendo menos) o lo mismo (si cree que esas cosas se equilibran). primero, y nos vuelven a contratar una y otra vez por ser geniales, no por retener información. Si has estado viviendo la vida de la segunda manera y quieres pasar a la primera, hay mucho más que no compartir tus documentos de diseño.
fuente
Lo consideraría poco ético, sí.
fuente
Realmente hay dos preguntas que deben responderse aquí, y las abordaré a ambas:
¿Me tengo que establecer que la documentación para el cliente?
Debe proporcionarles lo que su contrato dice que les proporcionará. En mi opinión, eso significa que si el código fuente no se puede mantener / modificar razonablemente sin proporcionar también la documentación, entonces también debe proporcionar la documentación adecuada.
Es posible que desee ver las Obras realizadas para contratar según la Ley de derechos de autor de 1976 de la Oficina de derechos de autor de EE. UU. Para ver si la documentación, las pruebas unitarias, etc. son propiedad de su cliente. Si lo son, definitivamente querrás dárselos.
¿ Debo proporcionar esa documentación al cliente?
Si alguna vez desea hacer negocios con ellos nuevamente, o si desea que le recomienden a otros, entonces debe hacer cualquier trabajo que sea necesario para convertirlos en fanáticos entusiastas de su negocio.
Eso significa que debe entregarles el código fuente de la más alta calidad, adecuadamente comentado, y cualquier otra cosa que les interese tener. Mi consejo sería que cuando te reúnas con ellos para entregarles los entregables, prepárate para darles las pruebas unitarias, etc. Después de que hayas repasado todas las cosas importantes y más importantes, diles algo como: "Por cierto, También generé pruebas unitarias para estos componentes. ¿Quieres esos también? "
Trabaje para generar lealtad con sus clientes y obtendrá su negocio nuevamente en el futuro.
fuente
Supongo que en este punto habría un contrato o acuerdo / documento escrito que enumerara toda la documentación que debe entregarles.
De lo contrario, podría dejarles claro que la personalización del producto, más allá de eso en las guías del usuario, requerirá un conocimiento adicional del funcionamiento del código interno. Y si está en una posición de negociación, puede pedirles que se comuniquen con usted para obtener más mejoras y recibir un pago por ello.
Por lo que entiendo, ya te pagan para escribir el código de su producto, es decir, ellos lo poseen. Por lo tanto, pueden considerar que no es ético si te vas sin documentarlo todo.
Le sugiero que escriba un documento esquemático con una arquitectura de alto nivel y punteros sobre dónde buscar las mejoras de las características clave. Cuáles son los archivos clave, etc. Si su trabajo es bueno, estarán encantados de volver a usted para realizar otras tareas.
fuente
Me gusta este artículo: http://unixwiz.net/techtips/be-consultant.html
Lo que estás describiendo no me daría la cálida sensación de que nunca más volveré a trabajar contigo.
Puede que seas un genio, pero si te caes muerto de A Bus , necesito mantener lo que te compré.
Si no me das esa habilidad, nunca volveré a contratarte o recomendaré contratarte para cualquier cosa con la que me ocupe.
Ahora, si está vendiendo un binario , por ejemplo, una "envoltura retráctil personalizada" donde puede vender el mismo producto a otras compañías, entonces es más razonable trabajar con el modelo de "menos información", porque ahora está vendiendo un producto.
La diferencia es que con la fuente, estoy comprando la capacidad de modificar el código fuente en el futuro. Sin embargo, con binario, simplemente estoy comprando la capacidad de ejecutarlo.
fuente