Seguro que más de una vez has acudido a repositorios como GitHub, GitLab o Bitbucket para obtener código que de una forma u otra necesitabas para uno de tus proyectos, o simplemente porque como a mi, te gusta leer código fuente de otros desarrolladores para seguir aprendiendo y ver otras formas de enfrentar los mismos desafíos que encuentras en tus proyectos. Casi cualquier cosa relacionada con el mundo de la programación que puedas necesitar existe en estos repositorios o en herramientas tipo Codepen, Plunker y Koding a las que encontramos incontables referencias desde StackOverflow (no os imagináis lo que hubiese agradecido este sitio web cuando empecé a programar).
Pero pese a que cada día se comparte más y más código, aún no es una práctica común entre las empresas. Uno de los problemas con los que nos encontramos a la hora de compartir código es que muchos desarrolladores exigen un apoyo técnico o correctivo, incluso adaptativo para poder utilizarlo en un proyecto concreto sin tener en cuenta que es un código proporcionado de manera totalmente gratuita. Es cierto que cuando se comparte código fuente se suele tener un plan de mantenimiento para el mismo pero los tiempos que se manejan no suelen ser como los dedicados al soporte de software comercial debido a que en la mayoría de las ocasiones es este último el que da soporte económico para poder mantener de manera altruista el primero.
Frente a este primer inconveniente nos encontramos con una ventaja muy importante y es que el compartir parte de nuestro código puede facilitar la detección de errores y la realización de mejoras.
Las excusas más habituales a la hora de decidir no compartir paquetes, librerías o simplemente rutinas por parte de las empresas son:
¿Por qué voy a invertir tiempo en pulir el código?
Si vas a vender un software deberías preocuparte de que todo el código sea limpio, claro, autodocumentado y que cumpla las buenas prácticas de cada framework o tecnología, es lo mínimo que merece un cliente. Si se trata de un proyecto propio tampoco deberías descuidar todo lo mencionado anteriormente.
¿Cómo voy a compartir este código que vale una fortuna?
(déjame que lo dude)¿Crees que tienes la gallina de los huevos de oro? Es cierto que hay librerías o paquetes que valen millones pero la gran mayoría de las empresas y desarrolladores no poseen un proyecto de tal envergadura. Si este es el caso, suele ser un código lo suficientemente complejo como para necesitar de un soporte “premium” y raramente suele compensar prescindir de este soporte, además no hay que olvidar que hay distintos tipos de licencias que pueden protegernos más o menos a la hora de compartir nuestro código.
¡Es un riesgo exponer todos los posibles bugs!
Si te da miedo exponer los posibles bugs, has de saber que seguramente el compartir tu código te permita detectarlos y corregirlos con mayor celeridad, a no ser que ya los conozcas pero no quieras invertir tiempo en solucionarlos.
Desde SquareetLabs tomamos la determinación de compartir partes de nuestro código que puede resultar útil a otros desarrolladores porque nos dimos cuenta de que cuando necesitábamos alguna funcionalidad genérica ya había una solución desarrollada por Spatie, una empresa belga que tiene gran número de paquetes disponibles en github listos para su uso. Estos desarrollos, que cubrían en gran parte nuestras necesidades nos permitía ahorrar tiempo y costes que repercutían de manera directa sobre nuestros clientes. Y qué decir de SpringBoot, que facilita enormemente la configuración inicial de un proyecto Java con Spring y que también comparte su código en Github.
Salvando las distancias con ambas empresas, que son en distinta medida más grandes y fuertes que la nuestra, en SquareetLabs quisimos ofrecer parte de nuestras soluciones para que estén disponibles para su uso por parte de cualquier desarrollador y la verdad es que el feedback no podía ser mejor, hasta el momento no nos hemos encontrado con ningún usuario exigente y si con muchos que aportan correcciones, sugerencias y mejoras que han hecho que compartir este código repercuta de manera positiva en el mantenimiento de los proyectos de nuestros clientes.
Algunos de los desarrollos a medida en los que usamos estos repositorios son un sistema de peritación digital y plataforma de gestión de eventos online así como en varios desarrollos de aplicaciones para móviles desarrolladas en los últimos meses.
Por qué creemos que no deberías compartir código si eres desarrollador de software
El único motivo por el que creemos que no se debe de compartir código es cuando este haya sido desarrollado gracias al know-how proporcionado por el cliente o cuando aún no siendo así, la publicación del código pueda suponer algún tipo de perjuicio para él.