La ética en la ingeniería de software: Parte 0

Leonardo
Coder's Pen
Published in
5 min readOct 17, 2017

El software se está comiendo al mundo, nos decía Marc Andreessen en su controversial ensayo publicado por el Wall Street Journal en 2011, Andreessen, emprendedor, ingeniero de software detrás del browser Netscape y capitalista de riesgo que ha invertido por años en muchísimas empresas tecnológicas que actualmente están valuadas en miles de millones de dólares, claramente sabía lo que estaba diciendo.

Si vemos el día común de una persona que vive en una ciudad promedio, son pocos los momentos en que no interactúa directa o indirectamente con algún sistema computacional.

Nos despierta una alarma programada en nuestro smartphone, usamos ese mismo smartphone para solicitarle a servidores remotos el estado del tiempo o para consumir y publicar contenidos en redes sociales, en el camino al trabajo paramos en algún local a comprar el desayuno, el cajero nos cobra usando un software administrativo que mantiene actualizado el inventario y que automatiza gran parte del trabajo de declaración fiscal y de contabilidad, nuestro pago es procesado por una enorme red de transacciones digitales que nos autentica a través de la banda magnética o chip de nuestra tarjeta en conjunto con un PIN de 4 dígitos, el software está involucrado en cada uno de los niveles de este sistema de transacciones, desde el firmware del POS que lee nuestra tarjeta hasta las mainframes de nuestro banco que se encargan del procesamiento y validación final del pago, muchas ejecutando programas escritos en COBOL hace más de 20 años, y hasta la máquina que prepara nuestro café quizás tiene algún tipo de microcontrolador que automatiza tareas a través de software. Si vamos en bici o auto, usamos una aplicación como Waze o Google Maps para navegar, si vamos en transporte público usamos MoovIt. Al llegar a la oficina, nos sentaremos frente a un computador y usaremos aplicaciones de ofimática como Word y Excel, software especializado de escritorio como Photoshop, Illustrator, After Effects, ArcGIS, QGIS, ProTools, o herramientas de programación y desarrollo como MySQL, Visual Studio, Eclipse, Sublime Text, GCC, Bash, uno o más navegadores web, un cliente de correo, y decenas de aplicaciones en la “nube” como Gmail, Outlook, Google Drive, Google for Work, JIRA, Trello, Slack, etc, etc…

Los ejemplos del párrafo anterior pueden parecer muchísimos, pero recién estamos viendo la punta del iceberg del software con el que interactuamos de manera consciente o semi consciente, hay infinidad de programas con los que interactuamos sin tener la más mínima idea de que lo hacemos. ¿Cuántas líneas de código están involucradas en procesos como la ignición, los cambios de velocidad o la activación de los frenos ABS de un auto? ¿Miles, decenas de miles? No conozco la respuesta exacta pero detrás de todos estos procesos hay microcontroladores, sistemas embebidos y sensores computarizados cuyo funcionamiento está controlado por software. ¿Cuántos aviones llegan sin inconvenientes a su destino gracias a sistemas computacionales como sistemas automáticos de navegación, sistemas de monitoreo y control de tráfico aéreo, sistemas de posicionamiento satelital, y muchísimos otros?

Todas las industrias y actividades humanas han sido transformadas de alguna manera por el software y esta ubicuidad nos entrega el control del funcionamiento del mundo a nosotros, los técnicos e ingenieros computistas que creamos, extendemos y mantenemos funcionando los sistemas computacionales.

Este escenario de ubicuidad y dominio casi absoluto de las TIC en el funcionamiento del mundo moderno nos otorga un gran poder y como dice un superhéroe: con un gran poder viene una gran responsabilidad. Esa enorme responsabilidad que tenemos es lo que me motiva a hablar sobre este tema que no se discute lo suficiente.

Antes de hablar sobre ética hagamos un respaso rápido de conceptos y veamos dos de las corrientes de estudio de la ética que considero relevantes para la actividad profesional de los ingenieros de software, ingenieros en computación y demás profesionales computistas.

La primera corriente de la ética que quiero mencionar es la ética de las virtudes que se enfoca en estudiar la moral desde el punto de vista de rasgos internos de personalidad, carácter y pensamiento de las personas. La ética desde el punto de vista de las virtudes propone que los individuos trabajen constantemente para desarrollar y mejorar su carácter y corregir sus defectos morales.

La otra corriente de estudio de la ética que es relevante para esta serie de artículos es la ética deontológica, que se centra en los derechos que se deben garantizar y los deberes que deben cumplir las personas dentro de la sociedad. Para la ética deontológica la moral surge de las reglas y normas. Otra visión de la ética deontológica es la del filósofo alemán Immanuel Kant y su imperativo categórico, una única regla moral que propone lo siguiente:

Actúa de tal forma que a partir de tus acciones puedan crearse reglas universales de conducta.

Es decir, Immanuel Kant propone imponernos a nosotros mismos un nivel de exigencia muy alto bajo el cual todas nuestras acciones deben ser ejemplos de virtud y elevado carácter moral. En general la visión de la ética deontológica es mucho más estricta y menos permisiva que la ética de las virtudes, que apunta a un mejoramiento personal continuo. La ética deontológica es la base sobre la que se construyen la mayoría de códigos profesionales y códigos legales modernos.

Ambas visiones de la ética nos entregan herramientas y directrices muy importantes que nos ayudan a minimizar el impacto negativo de nuestras acciones y decisiones. Como desarrolladores de software diariamente tenemos que tomar decisiones que pueden impactar en la vida de decenas, cientos, miles o millones de personas, de forma positiva y negativa; nuestro deber como profesionales y como personas es evitar o al menos reducir al mínimo posible cualquier daño a usuarios, clientes, empleadores y demás stakeholders de los sistemas que creamos.

En los siguientes artículos de esta serie el tema discutido será el rol de la ética en nuestra práctica como profesionales del software, posibles riesgos y perjuicios al desarrollar sistemas computacionales, incluyendo los riesgos del avance de la inteligencia artificial, casos reales donde malas decisiones y la aplicación de malas prácticas han producido daño de diversas magnitudes, el importante papel de los equipos y las prácticas de testing, testing automatizado y Quality Assurance para disminuir el riesgo, sugerencias para la mejoría continua de equipos y de profesional y en el artículo final cerraré con algunas ideas para definir códigos de ética que guíen nuestro trabajo como desarrolladores y computistas, y la propuesta de crear asociaciones gremiales que nos brinden protección legal y laboral cuando rechacemos la implementación de requerimientos y solicitudes de clientes/empleadores que vayan en contra de los principios éticos de la sociedad y de nuestra profesión.

Continúa a la primera parte de esta serie de artículos haciendo click aquí.

--

--