La comprensión de programas es la capacidad de un programador para comprender lo que hace el código fuente de un programa de computadora. En la enseñanza de la informática, con frecuencia se pasa por alto la comprensión de un programa en favor del aprendizaje de la mecánica y la sintaxis del lenguaje informático que se está enseñando. Sin embargo, escribir código comprensible es una necesidad universal, independientemente del lenguaje informático en el que esté escrito. Si un programador escribe una biblioteca o un fragmento de código, pero nadie puede determinar qué hace después, el algoritmo y la lógica detrás de ese código se pueden perder fácilmente. Es cada vez más común que los programadores no puedan descifrar su propio código, ya que a menudo no está escrito de forma clara e intuitiva.
Hay dos estrategias principales que los programadores pueden utilizar para mejorar la comprensión del programa, y cada una tiene sus propias ventajas e inconvenientes. El primer método es agregar documentación al código durante o después de la creación del código, y el segundo es escribir código con énfasis en su estructura. Una combinación de ambos enfoques es útil para la mayoría de los programadores, aunque hay algunos creadores de código que prefieren una estrategia sobre otra. El método a utilizar es una cuestión de preferencia personal por parte del programador, y cualquier intento de aclarar el código es mucho mejor que ninguno.
Agregar documentación al código es el más simple de los dos métodos, y cuando se hace bien, puede ser una muleta muy útil para un programador que no esté familiarizado con el lenguaje en el que está escrito el código. La mayoría de los lenguajes de computadora tienen un estilo de documentación específico para ayudar en la comprensión del programa. Si la documentación del código está escrita a fondo, el primer paso de un nuevo programador puede ser leer toda la documentación y los comentarios para comprender cómo funciona el programa, sin haber leído el código en absoluto. En lugar de depender de la sintaxis y la mecánica del código, el programador puede ver lo que está sucediendo en texto plano y luego relacionar el texto con precisión con lo que está sucediendo en un lugar determinado. Sin embargo, al agregar documentación al código, los programadores deben tener cuidado, porque demasiada documentación puede ser confusa e intrusiva, en lugar de útil.
Al escribir código con énfasis en la estructura, un programador asume que cualquier otro mantenedor que mire su código tendrá un conocimiento equivalente de la sintaxis y la mecánica del lenguaje. A veces, esta es una suposición válida, pero no siempre se puede confiar en ella. Es posible la comprensión del programa basada en gran medida en la estructura, pero se necesita mucho más trabajo por parte del programador original para facilitarla. La mecánica y la sintaxis del lenguaje deben seguirse al pie de la letra, así como todas las convenciones estilísticas, y todo debe ser coherente. Al escribir código de esta manera, un programador siempre debe ser consciente de que lo que está claro para él puede no serlo para otra persona.
Incluso cuando se escribe código con miras a la comprensión posterior del programa, es posible que se necesite documentación adicional o modificaciones estructurales más adelante. Esta es una parte natural del mantenimiento del código y no una falla a manos del programador. El trabajo de un programador es anticipar tantos problemas de comprensión como sea posible, pero no siempre se detectan todos.