domingo, noviembre 08, 2015

¿Qué es redactar?

¿Cuán símil o disímil es redactar en un lenguaje natural, e.g., castellano o inglés, que redactar en un lenguaje artificial, e.g., Visual C# o Go?

Si redactar es la acción de ordenar ideas en nuestra mente con el propósito de ponerlas por escrito, entonces escribir software en un lenguaje de programación también implica redacción. Lo cual de igual forma implica que las habilidades para escribir mejor software están directamente relacionadas con las habilidades para redactar mejor.

Por supuesto, no es exactamente lo mismo redactar un texto narrativo que un texto argumentativo o uno descriptivo. Asimismo, no sería lo mismo redactar un texto expositivo que redactar un texto fuente como expresión de un diseño detallado de software (también conocido como «código fuente») pues cada tipo de texto asume un conjunto de expectativas diferentes por parte de su audiencia. Además, la redacción de software no sólo tiene por audiencia a procesadores basados en carbono (cerebros humanos), sino también a procesadores basados en silicio (cerebros electrónico-digitales).

Crear software es una actividad reciente en la historia de la humanidad con apenas aproximadamente 70 años de recorrido histórico. Un profesional de desarrollo de software requiere reflexionar sobre qué es esta actividad y cuáles tipos de habilidades se requieren para practicarla cada vez mejor. Desde 1968 se ha sugerido que podría ser una disciplina de ingeniería, y sí comparte ciertos atributos con ese grupo de disciplinas. Pero no sólo es eso sino que también comparte rasgos con otras disciplinas tanto puramente intelectuales como performativas –disciplinas que dependen de constantes ensayos para lograr un cierto nivel de calidad en su desempeño, el cual será necesario repetir en cada entrega.

Una disciplina puramente intelectual es, por ejemplo, la formulación matemática que sirve para explicar y predecir fenómenos físicos. Tal formulación se realiza una vez y si el resultado es correcto entonces puede ser utilizada posteriormente múltiples veces sin requerir el mismo tipo de esfuerzo intelectual que fue necesario para la formulación inicial. Por otro lado, el despliegue artístico coreográfico en un escenario requiere ser realizado con el mismo tipo de esfuerzo, cada vez. Crear software no-trivial requiere de una síntesis entre ambos tipos de disciplinas pues un proyecto para crear software no-trivial suele encontrarse en un escenario o contexto con oportunidades nuevas y restricciones distintas en cada ocasión.