Código fuente ¿se debe entregar?
Hoy he leÃdo un post en decabeza titulado Archivos fuentes, ¿se deben entregar? que me ha parecido muy interesante. Como mi opinión es bastante extensa, he decidido continuar la conversación aquà (weedo, espero que no te importe ;) ) Como el tÃtulo indica, el tema versa sobre si se debe entregar el código fuente al cliente y si éste debe pagar un plus por ello.
Antes de nada, comentar que he estado en las dos bandas: programando para clientes hace tiempo y actualmente externalizando muchos proyectos en mi agencia. Por lo tanto, mi opinión está basada en las dos experiencias.
Para ponernos en situación: vamos a asumir que cuando hablamos de código fuente hay una parte que corresponde puramente al encargo, y en muchos proyectos hay otra parte de “valor añadido” (porque se está utilizando un framework propio, unas librerÃas muy complejas, una clase que facilita muchÃsimo x tarea, etc). Entiendo que con la primera no hay problema, porque al fin y al cabo te pagan por eso, y es en el segundo caso donde sabe mal “regalar” nuestro trabajo. A partir de aquà pienso todo el rato en situaciones con este “código de valor añadido”.
Para mÃ, casi siempre se debe entregar el código fuente. Sino se hace asÃ, el cliente está encadenado. ¿Qué le impedirÃa luego al desarrollador pedir cantidades desorbitadas por cualquier cambio? En caso de que al cliente no le interese trabajar con el autor original, debe tener la posibilidad de modificar él mismo el programa o pasárselo a terceras personas. Obviamente habrá excepciones, por ejemplo desarrollos muy complejos donde se entra en un sistema de licencias para explotación.
Si el cliente puede (y deberÃa) exigir los archivos, el programador también puede pedir una cantidad mayor. En el primer comentario del post original se lee “para entregarse los fuentes, tiene que haber mucho dinero encima”, y me consta que hay muchÃsima gente de la misma opinión. Si un programador tiene el derecho de pedir mucho dinero, obviamente el cliente tiene el derecho de preguntar qué está comprando:
- ¿una clase propia para validar un mail? ¿un gestor entero de contenidos?
- ¿y qué calidad tiene el código fuente? ¿tipo Grant Skinner o tipo estudiante de segundo curso?
- ¿está el código 100% libre de bugs?
- ¿es fácil de implementar? ¿es fácil de extender?
- antes de que yo ponga encima de la mesa el dinero ¿me vas dejar investigar a ver si merece la pena?
- y más allá del código en sÅ ¿me puedes asegurar que es imprescindible utilizar ese código que aumenta tanto el presupuesto?
Intento ilustrar las preguntas anteriores con un par de ejemplos:
1) Yo como “contratista”, hago un encargo a un freelance que me pasa un presupuesto muy elevado porque incluye el código fuente de un motor de tweens que ha desarrollado durante 2 años. Habiendo librerÃas gratuitas tan buenas como GTween o TweenLite, me niego a pagar el coste (seguramente nadie lo harÃa)
Ahora lo hacemos extensible, por ejemplo, a un conjunto de Expresiones Regulares. El freelance se ha currado una librerÃa durante meses con decenas de ellas, y piensa que el cliente podrá aprovecharse de ello para otros proyectos. Yo dudo si pagarlo, porque considero se pueden encontrar en google de manera más o menos fácil.
Y lo hacemos extensible a un algoritmo que se ha inventando Yugop para deformar imágenes y que no se consigue en ningún lado y blablabla y yo lo pago encantado.
¿Qué marca el lÃmite sobre lo que es fácil de conseguir y lo que no? ¿qué es reutilizable y qué no? ¿qué es único y qué no? Y más importante, ¿tienen nuestros clientes un nivel de conocimientos suficiente para tratar estas cuestiones?
2) Un cliente me contrata para un proyecto. Decido utilizar mi package de utilidades, que simplifica un montón de tareas y me permitirá hacer el trabajo en 5 dÃas. El cliente se niega a pagarme el código, asà que yo rehago el presupuesto sin incluir mis “utils”, lo voy a hacer todo de cero. Esto significa que en vez de 5 estaré 10 dÃas y que doblo el presu final. Para el cliente no soy competitivo y se busca otra alternativa.
Son sólo dos ejemplos, pero a mà personalmente me responden muchas cuestiones. Y aún más, vamos a alejarnos un poquito de la perspectiva flash, por ejemplo pensando que hacemos un site en html+css+php, ¿no entregas todo? ¿el programador php teme que utilicen sus clases? ¿que aprovechen el css para otro site?
Mi conclusión final es que como programador siempre voy a dar el código fuente, y como cliente no voy a trabajar con nadie que no lo entregue. Y no voy a exigir más dinero al darlo, y no voy a pagar más si me lo dan. Para mà la gracia del negocio está en el valor que aporta el programador. Si trabajo con una persona que me resuelve cualquier problema, si puede aplicar cambios sin estar 4 dÃas, si al pedir un cambio de funcionalidad no tiene que tirar media web abajo porque la implementó con patrones, si el código está perfectamente documentado… eso sà que no me importa pagarlo.  Y por contra, si el presupuesto es muy justo, pues se puede avisar de que se programará “rápido” (que no mal), que será más difÃcil de extender, poco modulable, etc.
Y en cuanto a nuestro trabajo de “valor añadido”, pues seamos listos. Si no se le quiere dar un plus al cliente, pues no metamos el package entero, simplemente las funciones/clases imprescindibles; si se utiliza un módulo que se puede reutilizar para otros proyectos, pues se crea un biblioteca de clases (swc); si paga las horas justÃsimas, pues no se comenta el código por falta de tiempo; etcétera etcétera.
Y obviamente, lo expuesto aquà es mi opinión. Cada uno es libre de valorar su trabajo y sus horas como quiera. Al final, como cada proyecto, cada cliente y cada programador es un mundo, se convierte en una ecuación de infinitas posibilidades. Por eso, se piense como se piense, lo importante es dejarlo todo por escrito desde el principio.
13 comentarios
#1 WeeDo
Hola Llop como andas?
Me parece perfecto que sigas el tema por acá, la idea es justamente compartir y generar opiniones.
Tocaste varios puntos interesantes del lado de las agencias que yo no nombre.
En resumen creo que el secreto está en hablarlo y amoldarse según cada proyectos y no convertirse en un “defensor de tu código”… Ya que no era la idea de mi post.
Pero si, si uno considera cobrar un 10% más del presupuesto por entregarlos, si el cliente está de acuerdo, bienvenido sea.
Saludos, Sebas!
Nov 6, 2009
#2 Zarate
Si a todo! Estoy de acuerdo al 100% contigo Llops. Yo siempre entrego los fuentes y no pido mas por ello, considero que va en mi tarifa (que seguramente no sea de las mas bajas).
No solo eso, normalmente curro con SVN mio o del cliente (o lo que sea), por lo que el cliente tiene acceso a los fuentes en cualquier momento. Seguramente me pueda jugar una mala pasada en el futuro, pero por suerte aun no me ha pasado.
Solo una apreciacion sobre el HTML. Los PSDs se entregan tambien? Y las fuentes usadas? Y si son de pago?
Salud!
pd: ya que no tienes anuncios en el blog, te importaria poner el post completo en el RSS? Es un conyazo tener que venir aqui a verlo, sobre todo si estoy leyendo el Reader en el telefono cuando voy en el tren!
Nov 6, 2009
#3 LLops
hi!
@weedo
La verdad es que tu post es muy correcto y ya se ve que no te cierras con una única opción ;) Si cobras un % por fuentes y a tus clientes les parece bien, genial. Por otro lado, me alineo más con la posición de Zárate, de cobrar un poco más caro y que vaya todo en un paquete.
De todas maneras, eres tú quien mejor conoce a tus clientes y a lo mejor todos no pueden pagar un 10-15% más caro.
@Zarate
Joer, cuanta transparencia con lo del svn :) La verdad es que si no son de confianza da como un poco de rollo, no?
En cuanto a lo de los PSD, es muy buena pregunta. Hay como un pensamiento generalizado de que nunca se deben entregar, pero realmente es un curro que te encarga al cliente, asà que supongo que sÃ. Igualmente no tengo un postura 100% definida con esto…
En cuanto a las fuentes sÃ: si las usas de pago las tiene que pagar el cliente. Sino se le presenta un diseño con Arial y a lo mejor se le convence :p
pd: ya he cambiado lo del RSS, supongo que cuando escriba el próximo post se actualizará. De todas maneras, siempre he tenido varias dudas con esto, porque algunos lectores interpretan el “more” y lo cortan igualmente y otros jurarÃa que no. Eso sà que no lo cambiaré, porque con los posts tan largos que escribo es un coñazo encontrártelos enteros cuando llegas al blog…
Nov 9, 2009
#4 Luis Adrián
Hola Dani,
Excelente post, estoy completamente de acuerdo contigo y Zarate. Desde siempre he trabajado asÃ, porque pienso que todo lo que puedas facilitarle la vida al cliente y quedar bien con él tanto mejor para ti, pues quedará contento y volverá por más.
Saludos!!!
Nov 9, 2009
#5 alba
Dependiendo de lo que se entienda que va dentro del presupuesto. Pero esto hay que dejarlo muy claro al principio. Yo suelo entregarlo.
Viva el Open Source. :)
Nov 10, 2009
#6 Javi
Interesante artÃculo, yo soy de los que entregan el código, creo que si trabajo bien me van a pedir a mà los cambios.
Además si no tengo disponibilidad de hacerlos siempre los puede hacer el cliente (o al menos tratarlo, que últimamente yo estoy muy friki y en las agencias están muy pez).
Lo que si hay que dejar claro es que al entregar los fuentes pierden cualquier tipo de garantÃa que puedas dar, si por ejemplo descubren un bug o algo parecido que se ha pasado por alto, ya que no puedes saber si lo hiciste tú mal o han “metido la zarpa”.
Esto lo digo por experiencia, ya me he hartado de que me digan que algo no corre bien y ver 40 enterframes encima de mi codigo, o que me digan que se para el sonido y encontrar un stopAllSounds (!!)
Un saludo
Nov 11, 2009
#7 LLops
Es un buen punto el que comentas, Javi, y deberÃa ser una “cláusula” en cualquier contrato.
También entiendo que no se pierde automáticamente la garantÃa por entregar el código y que alguien lo modifique, sino porque se haga indebidamente. Luego ya entra la parte de quién hace de perito. Una de mis condiciones serÃa que yo, como proveedor, reviso los bugs, pero si descubro que no es mi culpa cobro esas horas.
Saludos!
Nov 12, 2009
#8 elSuricatoRojo
Para mi no entregar los códigos fuente son por lo general un signo de amateur. Según vas teniendo experiencia es dificil que no aprecies las ventajas de entregarlos respecto a la de quedartelos pajo llave.
La principal es la de fomentar la cofianza con tu cliente. Si este ya se ha visto en una situación de comerse una aplicación en flash sin poder cambiar un número de teléfono porque no le han pasado los fuentes, cuando tu le digas que se los das y ademas con instrucciones para que el u otro desarrollador puedan heredar la aplicación, vas a destacar positivamente y va a apreciar el valor añadido de ceder los fuentes.
Por otro lado quedarte con los fuentes para garantizar posible futuras modificaciones es tirarse piedras a tu propio tejado. Si no das los códigos fuentes obligas al cliente a tirar de ti.. pero yo lo veo mas como que te obligas a ti mismo a estar disponible para cualquier modificación y esa modificación chorra que apenas se puede cobrar te va a implicar parar con el desarrollo en curso, buscar tus fuentes, hacer una inmersión en ese proyecto, hacer los cambios y volver al proyecto con el que estabas. Si das los códigos fuentes maximizas las posibilidades de ese tipo de modificaciones las haga el cliente.
Si de lo que se trata es de hacer un nuevo módulo o un cambio mas complicado y que si te pueda interesar como proyecto, aunque el cliente tenga los códigos fuente tu posiblemente seas la opción mas rentable ya que conoces la arquitectura de la aplicación y el código te es familiar. Habrá casos en los que el cliente lo haga él o lo subcontrate a otros, pero mi experiencia es que casi siempre se lo intentan encargar a quien lo ha desarrollado porque va a ser mas rápido y por lo tanto mas barato.
Lo unico que aconsejarÃa es que si noy hay ya una confianza enter tu y el cliente no des los códigos fuentes hasta no haber cobrado todo o parte o al menos tener garantias pr escrito de cobro.
Nov 13, 2009
#9 spasmos
Lo cierto es que el tema del codigo es un tanto delicado. Es cierto que el hecho de no entregar el código fuente en lenguages compilados como Flash es dejar al cliente atado de pies y manos pero creo que se han de valorar dos aspectos fundamentales.
Principalmente, el precio. Cuando haces proyectos a precios muy bajos para poder conseguir al cliente no creo que se le haya de regalar el código. No tanto por el código en si sino por una manera de hacer. Cuando entregas el código fuente al cliente no sólo le entregas lineas de programación sino tambien una experiencia adquirida a lo largo de muchos proyectos. Cuando un cliente desea hacer una página web para tener presencia en la red, tu sadisfaces esa necesidad; es decir, el cliente paga por tener su web, su sitio en internet, no por el conocimiento que requiere ese trabajo. Es como si al ir a comprar un coche le pidieses al fabricante que te pasara los planos por si te interesa cambiar algo. Y asà puede haber multitud de ejemplos. El cliente paga por un servicio. Si tu como desarrollador le quieres regalar tu manera de hacer al cliente como un valor añadido tuyo, adelante.
En segundo lugar, tu entorno. Como empresa, has de competir con otras empresas y si consideras que tu manera de hacer las cosas tiene un valor del cual el resto carece regalarlo implica que tus competidores se enriquezcan de tu saber hacer. Esto último podrÃa sonar casi a Microsoft y otras empresas que crean aplicaciones cerradas pero no hablamos de aplicaciones para millones de personas si no de una página web. La cual una vez hecha y entregado el código al cliente, deja de estar en tu poder, que tu manera de hacer las cosas pueda llegar a tus competidores que se pueden enriquecer con tu trabajo.
En definitiva, pienso que cuando el cliente paga es por un servicio, por su presencia en la red y que si desea tu manera de hacer las cosas se ha de pagar aparte.
Una solución a medias en estos casos es la de externalizar la información de la web. Es decir, yo con la web al cliente le proporciono un motor con el que poder presentar su información y que dicha información se recoja desde fuera del motor para que el cliente tenga acceso total a cambiar cualquier dato. En flash los .xml cumplen perfectamente este cometido asà como otros formatos y encaso de querer ampliar la web sin contar con el desarrollador original se le explica como hacerlo ya que el sistema serÃa modular.
Jan 9, 2010
#10 xleon
Me sorprende esa tendencia que veo por aquà acerca de entregar el código sin más. Parece que entregándolo eres mejor profesional y más guay según veo en vuestras opiniones.
1) Muchos proyectos no necesitan ningún tipo de mantenimiento, como por ejemplo un microsite para una campaña publicitaria. Se terminan, y no hay más. Además está claro que “siempre” utilizaremos nuestro “framework” para ir más rápido, pero para eso lo fabricamos en su dÃa y con nuestro sudor. Que alguien me explique para qué quiere un cliente el código de un micro de este tipo…
2) Si se trata de un proyecto grande y con mantenimiento posterior al desarrollo inicial, pueden surgir muchas situaciones distintas. Pero voy a resaltar un caso: imaginemos que el cliente nos pide una aplicación, por ejemplo, un configurador de viviendas. Como cada 6 meses querrán un configurador distinto, me creo un “motor” basado en xml o base de datos que contemple mogollón de condicionales, anticipándome a posibles y/o futuros problemas.
Esta herrramienta me costará muchas horas en principio, pero facilitará mi futura tarea para nuevos configuradores. ¿Debo dar el código fuente de este motor? Ni de coña, a no ser que el cliente me lo haya pedido expresamente y pague por ello.
3) Como se ha comentado, cada caso es un mundo. Todo debe especificarse en un contrato por escrito, y no en llamadas de teléfono o emails informales. Hacer contratos de licencias, etc
4) Me parece bien que el cliente sepa qué está pagando. Si quiere el código y lo paga, porque él mismo lo va a mantener, tiene derecho a conocer la calidad del mismo, si esta comentado, si es modulable, etc. Pero si no lo paga, como si le damos un .fla en as2 con código encima de botones y gotoAndPlay. Si el resultado de la aplicación es bueno, no se puede quejar ni exigir nada.
@Zarate: Me alegro de que tengas clientes tan “buenos” y honrados. Muchos no son asÃ. Me parece una locura lo del svn (yo también lo he hecho y no lo vuelvo a hacer). Compatir el svn con un cliente es como estar currando frente a tu monitor y tener un notas detrás de tu espalda viendo lo que haces. Además seguro que hará comentarios y se meterá en tu forma de hacer las cosas (también me ha pasado). Otra cosa es que se pacte entregar el código del proyecto en ciertos milestones, o que tu cliente participe activamente en el desarrollo. Entonces sà lo puedo entender.
Mar 4, 2010
#11 Jaime
Hola, en Valencia hace unos 5 años la empresa en la que trabajaba mi mujer tuvo un litigio con una empresa que les habia desarrollado una web en flash y no queria entregar el codigo fuente. El juez dictamino que el codigo fuente pertenecia a la empresa que pagaba.
Lo cuento solo como informacion adicional.
Un saludo
Mar 22, 2010
#12 Diego
Hola, gracias por toda la información :)
Yo no tengo problema en entregar el código fuente, entiendo que es parte del encargo que me hizo el cliente. Ahora bien, éste me exige el código fuente ANTES de pagar, pues afirma que el trabajo no está finalizado hasta que no le entrego el código.
Qué debo hacer? entregárselo todo y confiar que me pague, o exigirle el pago antes del código fuente?
Yo he cumplido buena parte de mi trato, el desarrollo fue finalizado dentro de plazo, y el cliente lo tiene en explotación.
Gracias!
Jun 28, 2010
#13 LLops
Ummm complicado … si tú no te fÃas que una vez entregado el código fuente vayas a cobrar, quizá ellos no se fÃan que si pagan les des luego el código fuente…
Si pactas porcentajes, (20% al empezar, 30% mitad de proyecto y el resto al acabar, por ejemplo), sà entiendo que hasta que no entregas el código no te pagan el resto.
Pero como siempre, todas estas cosas mejor hablarlas al principio porque ahora lo tienes complicado…
Jun 29, 2010
¡Deja un comentario!