Cómo evaluar el código fuente antes de comprarlo

Vería el código y lo evaluaría en varias categorías.

  • Funcionalidad: hace lo que se supone que debe hacer, es decir, el camino feliz. ¿Cómo se comporta en algunos de los caminos infelices?
  • Mantenibilidad: ¿se puede mantener el código? ¿Qué tan complejo es? ¿Es demasiado simple para la tarea que se supone que debe hacer? ¿Es demasiado complejo? ¿Hay alguna parte “elegante”? Si los hay, ¿tienen sentido? Si se puede hacer de manera simple, debe serlo, si alguien lo escribió con elegancia cuando no era necesario, eso es una señal de alerta, porque la persona no lo hizo simple. ¿Hay comentarios? ¿Hay muchos comentarios? Verificaría algunos comentarios para ver si tienen sentido. Muchas veces la gente actualiza el código y deja el comentario, y si ese es el caso, es una gran señal de deuda tecnológica en esa base de código.
  • Seguridad: ¿el código se escribió teniendo en cuenta la seguridad? ¿Se suscribe a las mejores prácticas para el tipo de código que es, por ejemplo, si es su código web, se ajusta a OWASP? Si no se ajusta a las mejores prácticas, entonces es una mala señal.
  • Pruebas unitarias. ¿El código tiene pruebas unitarias? En caso afirmativo, ¿tiene una cobertura decente? ¿Las pruebas unitarias tienen buenas afirmaciones? Es difícil argumentar en contra de las pruebas unitarias, especialmente hoy en día.

Esa es una muestra de lo que sería mi evaluación.

Le pediría al vendedor que me brinde una descripción general de lo que hace el código y cómo lo hace, generalmente usando cajas, círculos, flechas, etc. en una pizarra o en un pedazo de papel.

Haría muchas preguntas durante esta sesión, con la intención de comprender lo más posible, especialmente los “flujos” en el sistema. Cómo se comunican las diferentes partes, si se usan hilos y por qué, etc.

Luego le pediría al vendedor que me brinde una descripción general similar, pero ahora usando el código fuente como base para la explicación.

¿Qué tan bien se asigna el código fuente a la “arquitectura” general del sistema? Si son muy “similares”, el código probablemente será fácil de entender y mantener. Si no lo son, podría ser un signo de implementación “mala” o “demasiado complicada”.

Si el vendedor no puede / no quiere hacer esto por mí, trataría de hacer lo mismo por mi cuenta, pero eso requerirá mucho más tiempo.

Si no puedo hacer esto por mi cuenta, trataría de externalizar la tarea a alguien que pueda hacerlo, generalmente un programador que conoce la tecnología que se ha utilizado.

De acuerdo con el vendedor, contrate a un tercero para llevar a cabo una diligencia debida técnica.

DESCARGO DE RESPONSABILIDAD: Trabajo en Construx.