Contratos para Desarrolladores

Si bien, el título de esta publicación puede ser engañoso, me permito hacer la correspondiente aclaración para evitar confusiones: en efecto, no voy a mostrar ni a referir ejemplos del texto de los documentos legales para realizar proyectos de software (que en realidad puenden ser encontrados en otras partes); en cambio, realizaré una breve comparación entre estos documentos y los programas de cómputo; la cual  espero que sea de interés y utilidad para  mis colegas desarrolladores.

Como todos los lenguajes de programación, también todos los contratos legales tienen una estructura y sintaxis. Del mismo modo, en esencia, hay una serie de elementos requeridos que se aplican a todos y cada uno los contratos. Estos elementos se pueden comparar a elementos tomados del código fuente de un programa informático, específicamente los parecidos al lenguaje C.

Antes de comenzar, me gustaría indicar que así como es una buena práctica para los desarrolladores el nombrar a su proyecto de programación de acuerdo al objetivo que persigue y utilizar alguna convensión de denominación para nombrar los archivos, variables y procedimientos con base en el dominio del problema al que se adscribe; comparativamente, existen convenciones acerca de cómo se denominan los contratos en función de su finalidad y todos ellos utilizan términos legales comunes relacionados con el contexto específico de su aplicación.

Ahora, independientemente del orden de aparición de los elementos siguientes, en relación con sus contrapartes de programación, los elementos comparativos antes mencionados se describen a continuación:

  • Bibliotecas: En el espíritu de evitar tanto reinventar la rueda como las repeticiones innecesarias (fomentando la reutilización), los lenguajes de programación hacen uso de bibliotecas de código (o precompiladas) a través de declaraciones de uso o de inclusión. Estas declaraciones son comparables a citar las leyes o reglamentos en los contratos que se eligen en función de la finalidad del mismo y también, por lo general, se encuentran al principio del documento.
  • Declaración e inicialización de variables: Estos elementos definen los tipos de datos de las variables y constantes que se utilizarán, y los preparan con valores adecuados. Esto mismo ocurre con las cláusulas primarias o “Declaraciones” en un contrato. Lo anterior, incluye lo que en la jerga legal se conoce como la definición de “las partes”, es decir, identificar formalmente a las entidades físicas (personas) o morales (organizaciones) entre las cuales se celebra el contrato.
  • Procedimientos: Las funciones son principalmente lo que hace que un programa, haga tic tac y estas deben ser cuidadosamente estructuradas y ser particularmente escritas de manera clara y precisa con el fin de lograr los resultados previstos. También algunas funciones realizan llamadas (o hacen referencias) a otras funciones. Escribir las cláusulas de los contratos son el equivalente a programar las funciones en un programa.
  • Sintaxis y gramática: Cada uno de los lenguajes de programación tiene una sintaxis específica que define las estructuras utilizables (tipos de datos, clases, procedimientos, estructuras de datos, palabras reservadas, y la forma de redacción, puntuación, etc.). Como usted ya debe imaginarse, esto es comparable a las características del idioma en que un contrato está escrito; sin embargo, vale la pena mencionar que, al igual que con cualquier lenguaje de programación, el no conocer un grado decente del lenguaje y sus reglas, puede echar a la basura el resultado esperado del contrato, por ejemplo al cambiar de lugar una coma, u olvidar la declaración o inicialización (descripción) de un término, etc,.

Así como es recomendable utilizar números de línea al revisar los archivos de código fuente, también es sumamente recomendable utilizar números de cláusulas para facilitar la lectura de los contratos.

Adicionalmente un archivo de código fuente se encuentra suscrito a ubicación dentro del sistema de archivos (llámese directorio, folder o carpeta), y se le asigna una fecha de creación y el número de bytes de los que consta; del mismo modo los contratos se deben adscribir a una ubicación (localidad), deben tener una fecha de creación (y de vigencia) y un número de páginas (el cual es recomendable agregar en cada una de ellas).

En ocasiones, los archivos de código fuente especifican directivas que para su interpretación por un compilador específico. De la misma manera, algunos contratos adscriben la jurisdicción del mismo para su interpretación por ciertas autoridades específicas en una localidad o de cierta índole. Dicha situación es importante tomarla en cuenta porque (al igual que si no contamos con el compilador específico) esto puede resultar en una interpretación distinta del contenido del documento y la incursión de gastos importantes para las partes.

Por último, los certificados de programa son comparables a las firmas del contrato ya que dan cuenta de su legitimidad y validan su contenido.

Si están los contratos o el software están bien escritos, por lo general son  simples, elegantes, robustos y escalables. A este tipo de documentos se les llama con frecuencia “obras maestras”, como si fueran poemas dentro de  sus dominios respectivos.

Por desgracia para nosotros los desarrolladores no existen IDEs (fuera de los procesadores de palabras) ni compiladores que nos ayuden a escribir o revisar contratos, pero espero que este breve texto pueda servir a mis compañeros “codificadores” a por lo menos identificar las piezas faltantes y los errores comunes en estos documentos tan necesarios en nuestro quehacer profesional.

“Codificar o no codificar, es el dilema diario y permanente de los programadores…”