En ingeniería de software, ¿qué es la codificación?

La mayoría de todo el software está escrito en un dialecto comprensible para el ser humano. En otras palabras, suele estar en una forma legible para el ser humano, normalmente expresada en un lenguaje formal basado en el inglés que sigue ciertas reglas y permite al programador representar ciertas acciones que se pueden realizar en/sobre un ordenador. A continuación, se compila en una forma más fácil de entender para el ordenador. En última instancia, se convierte en instrucciones (en una forma compacta y numérica) que el procesador del ordenador ha sido diseñado para ejecutar fácilmente.

También es posible programar en una forma ejecutable por la máquina, pero no es tan fácil de entender y suele ser algo frágil. Es frágil porque cualquier cambio en las operaciones o resultados esperados debe ser considerado y modificado explícitamente. Carece de la abstracción que da un código fuente comprensible para los humanos; esto hace que las modificaciones sean propensas a los errores, difíciles y lentas.

En cualquier caso, codificar es escribir el código fuente para resolver un problema concreto. Por ejemplo, un programa de hoja de cálculo... leer un archivo de hoja de cálculo y mostrarlo en una pantalla, permitiendo su modificación. Habrá elementos de código que lean el archivo, otros que interpreten los datos del archivo, y aún más para mostrarlos en formato de hoja de cálculo en la pantalla. También habrá código para interpretar los datos y las fórmulas introducidas en la hoja de cálculo desde el teclado u otros dispositivos de entrada, y eventualmente para guardar los datos de nuevo en un formato de archivo. Todo este código se integrará para producir un programa/app completo y funcional.

Y ahí está el problema. La codificación es sólo una parte del trabajo de programación. Si te consideras un codificador, ignoras las responsabilidades implícitas de planificación, diseño, integración y pruebas. Esto supone que otra persona hará el trabajo para garantizar que se trata de una aplicación/programa completa y que funciona correctamente.

En un equipo de desarrollo, existe el entendimiento de que los distintos miembros del equipo trabajarán juntos para producir un mejor producto. También hay un contrato explícito de que cada programador/desarrollador producirá un código completamente funcional y bien probado. En algunos equipos, las pruebas se escriben antes de producir una sola línea de código. El código se considera terminado cuando todas las pruebas pueden ejecutarse correctamente. Esto se conoce a veces como metodología de programación de "primero las pruebas".

Todo lo anterior sirve para ilustrar la filosofía de que pensar en uno mismo como codificador es peligroso. Centrarse sólo en la tarea de escribir el código es peligroso. Ignora el contrato del desarrollador: todo el código debe funcionar correctamente.

Así que, para resumir la historia, codificador es un término inexacto para programador o desarrollador. La codificación es sólo una pequeña parte de la vida de un programador informático.