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

Leonardo
Coder's Pen
Published in
12 min readNov 20, 2017

La profesionalización de la industria de software

En la industria de la computación necesitamos un proceso continuo de profesionalización, una profesionalización real que vaya mucho más allá de dictar carreras de computación en las universidades, que es apenas el primer paso.

Necesitamos gremios profesionales, códigos de ética amplios adaptados al mundo moderno en constante cambio y lo más importante (Y difícil), necesitamos definir un conjunto de conocimientos y habilidades base que todo ingeniero de software debe poseer para ser parte de un gremio profesionale. Éstos son códigos, procesos y entidades que ya existen en otras profesiones de alta responsabilidad como la medicina, la ingeniería civil y el derecho y que obligan a los profesionales de esas áreas a ejercer bajo lineamientos para prevenir la negligencia, ayudando a que el ejercicio de la profesión tenga un impacto principalmente positivo y evitando ocasionar daños a la sociedad.

En el camino hacia la profesionalización de la industria la visión de la ética deontológica nos da una guía para definir reglamentos y procedimientos bajo los cuales ejercer como profesionales, y mientras estamos en esta transición profesional podemos inspirarnos en el imperativo categórico de Kant que veíamos en el primer artículo:

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

Si queremos que nuestras acciones y decisiones profesionales se conviertan en reglas, o al menos en conductas valiosas de imitar, debemos apuntar a la excelencia profesional en el área técnica y en la cooperación interpersonal, y debemos siempre generar un impacto positivo en la sociedad, creando sistemas de calidad que aporten valor y diseñados cuidadosamente para disminuir la probabilidad de ocasionar daños intencionales.

Códigos de ética existentes

Para abordar el el estado actual de los códigos de ética voy a hacer un repaso breve de dos, el Código de Ética del Colegio de Ingenieros de Chile (País donde vivo actualmente) y el Código de Ética y Conducta Profesional de la ACM (Association for Computer Machinery), una asociación internacional que agrupa a profesionales de la computación.

El Código de Ética del Colegio de Ingenieros de Chile tiene imperativos interesantes y que proveen una excelente guía de comportamiento profesional, pero al ser un código aplicable a todas las carreras de ingeniería, y en especial a las más “tradicionales” como la ingeniería civil, es un código muy genérico. Puede servir como un punto de partida para crear un código de conducta orientado a profesionales de la computación, ampliando el alcance original para incluir imperativos y normas que se adapten a la realidad y a la naturaleza de la industria de la computación.

El Código de Ética y Conducta Profesional de la ACM es mucho más completo ya que sus lineamientos están totalmente orientados a la industria de la computación. Repasemos rápidamente los aspectos más importantes de este código para luego hablar un poco de sus limitaciones.

El código de ética de la ACM está escrito tomando en consideración la naturaleza de la industria de la computación y el rol que esta industria juega en la sociedad y en la economía moderna, es un código que entiende y conoce bien la industria que intenta regular; a través de este código la ACM promueve la excelencia técnica, obligando a sus miembros a entregar trabajos de calidad que tengan un impacto positivo en la sociedad, hace énfasis en minimizar daños accidentales e intencionales y provee lineamientos especiales para líderes de organizaciones, gremios y equipos tecnológicos,

La seguridad de la informacióń, y la confidencialidad y privacidad de los usuarios, una de las grandes lagunas de los códigos de ética tradicionales de la ingeniería, tiene una sección entera dentro del código profesional de la ACM, allí se establecen normativas que obligan a los profesionales de la computación a proteger y utilizar apropiadamente toda la información privada de usuarios que es recolectada y transmitida por los sistemas computacionales.

Y finalmente, el Código de Ética y Conducta Profesional de la ACM establece que los miembros que incumplan gravemente dicho código pueden ser expulsados de la organización.

Un código profesional y de ética como el de la ACM, adaptado a las realidades de la industria de la computación nos permite tener una guía de conducta dentro de nuestro entorno profesional y nos da una base sólida y sin ambigüedades que debemos usar como argumento para oponernos a la implementación de requerimientos y a la creación de sistemas que estén desalineados con los principios éticos de la profesión.

El Código de la ACM es lo suficientemente específico como para guiar a todos los profesionales de la industria en la mejora continua de la calidad del trabajo y del caracter ético y moral de los profesionales, lo que lo hace un gran referente actual en lo que relacionado a temas de ética y computación, pero es lo suficientemente genérico como para poder mantenerse vigente en un mundo en constante cambio. En mi opinión, hay una sola área donde este código se queda corto y es el avance de la inteligencia artificial, que por sus implicaciones, riesgos y poder de transformación en el presente y en el futuro, merece una sección especial.

Desafortunadamente, el Código de Ética de la ACM no tiene reconocimiento legal, lo que impone una gran limitación en su alcance real, el cumplimiento de este código no es obligatorio para individuos ni para empresas dentro de la industria, únicamente para profesionales miembros de la ACM.

Gremios profesionales: Rol, limitaciones, problemas a resolver

Los gremios profesionales son una necesidad de cualquier área profesional porque cumplen funciones muy importantes para garantizar el correcto ejercicio de una profesión.

La primera responsabilidad de los gremios y asociaciones profesionales es crear y actualizar los códigos de ética y conducta de la profesión. En el caso particular la industria de la computación, este tema es complejo y muy dinámico; la innovación en la industria de la computación avanza a un ritmo exponencial en áreas como hardware, herramientas de programación, patrones de software, metodologías de gestión e inteligencia artificial. Este ritmo tan acelerado de evolución hace que los reglamentos puedan quedar obsoletos muy rápido a medida que el panorama tecnológico va cambiando. Los reglamentos y normativas de un gremio profesional de la computación deben estar en un proceso de revisión constante para garantizar que se mantienen a la par de la evolución de la industria.

Otra labor importante de los gremios profesionales es velar por el cuplimiento de los códigos de ética y conducta. Esto implica supervisión constante de los profesionales y empresas de la industria e implica también la toma de medidas disciplinarias que puedan llevar incluso la expulsión de miembros que en su ejercicio no respeten los principios y códigos de ética del gremio.

Adicionalmente, los gremios tienen la importante responsabilidad de brindar protección legal y profesional a sus miembros. Ésto es de especial importancia en casos donde a través de la jerarquía de mandos de una compañía se le asigna un desarrollador de software, o a un equipo de desarrolladores, una tarea contraria a los principios definidos en el Código de Ética del gremio. Un gremio profesional que brinde protección y asistencia jurídica a sus miembros habría sido de mucha utilidad en un caso como el del dielsegate de Volkwagen, por nombrar un ejemplo.

Para un desarrollador de software que no cuenta con el respaldo de la ley ni de alguna asociación gremial es difícil negarse a implementar algún requerimiento crítico para el negocio pero potencialmente negativo para los usuarios finales; la dificultad está en que este desarrollador podría estar arriesgando su trabajo dentro de la empresa e incluso su reputación profesional al oponerse directamente a una asignación. Si tomamos como ejemplo lo que sucede en profesiones como el Derecho o la Medicina, notaremos que los profesionales de ambas áreas cuentan con leyes muy claras que dictan lo que pueden y no pueden hacer en el ámbito profesional; al tener el respaldo de la ley y la observancia de un Colegio, ellos pueden, y deben, actuar siempre apegados a los Códigos de Ética de su profesión, sin importar si una decisión que tomen es contraria al interés particular de un empleador. En el caso de un despido por discrepancia éticas, los médicos y los abogados cuentan con el respaldo de la ley y de una asociación gremial que dará fe de la formación, experiencia y conducta moral del profesional y lo asistirá incluso hasta en el terreno legal y judicial si fuera necesario.

Los gremios profesionales tambien deben colaborar con el estado, asesorar a gobernantes y legisladores para crear leyes que regulen la profesión garantizando que sean leyes sensatas, coherentes con las actividades de la industria. Como ya ha quedado demostrado en múltiples ocasiones los gobiernos, los políticos y los legisladores entienden muy poco de tecnología, por ésto, cualquier tipo de regulación de la industria debe nacer desde adentro, creada por expertos que entiendan la tecnología, el negocio y los procesos que están regulando, y no por políticos completamente ajenos a nuestra actividad profesional que no tengan ni la más mínima idea de lo que están legislando y regulando.

Finalmente, una responsabilidad vital de un gremio de profesionales de la computación es establecer los criterios que determinan que un profesional está capacitado para ser parte del gremio. Esta es una responsabilidad bastante compleja, principalmente por dos motivos. Primero, estamos en una industria en la que junto a las personas que estudiaron computación formalmente hay personas de otras carreras (Como física, otras ingenierías o incluso carreras no STEM), hay personas que abandonaron sus estudios formales de computación a mitad de camino, y desde hace unos años, con el acceso prácticamente ilimitado a información a través de internet, una cantidad cada vez mayor de autodidactas y de egresados de programas relámpago de formación como los bootcamps.

Teniendo profeiosnales con niveles y áreas de estudio tan diversas y con una industria que en muchos casos suele mirar hacia otro lado cuando se trata de credenciales formales presionados por la constante escasez de talento, para atender un número cada vez mayor de proyectos; cualquier gremio profesional se encontrará un reto enorme la tarea de establecer los criterios de pertenencia.

Si los criterios de admisión son excesivamente rigurosos, por ejemplo, bloqueando la entrada al gremio de cualquier persona que no haya terminado estudios formales en el área de computación, dejaremos por fuera a muchísimo talento que puede hacer un aporte valioso a la industria, a la economía y a la sociedad en general. Muchas figuras importantes de la computación estudiaron carreras distintas a la computación, y muchos otros abandonaron sus carreras de computación para dedicarse a otras labores que han tenido un impacto muy importante en la industria.

Por otra parte, si los criterios son muy permisivos el respaldo y la existencia misma del gremio pierden sentido porque no se controlaría que los profesionales miembros realmente posean los conocimientos, la formación y las habilidades necesarias para ejercer la responsablemente.

A la dificultad anterior hay que sumarle la complejidad natural de una industria que se encuentra en un proceso de transformación y expansión constante. Es una tarea de proporciones titánicas, nada fácil de llevar a cabo, pero me gustaría hacer un par de propuestas que en mi opinión pueden servir como punto de partida para tener un criterio de admisión riguroso pero que se mantenga adaptable a la evolución de la industria, de la academia y de la sociedad.

Como primer paso, hay que definir un conjunto de conocimientos básicos y habilidades que todo ingeniero de software debe tener para ser considerado un miembro del gremio profesional. Por supuesto, este cuerpo de conocimientos debe estar en constante revisión y actualización, y el papel de las universidades y de profesionales experimentados de la industria es de muchísima importancia. Una vez que exista un cuerpo de conocimientos básicos, también conviene crear cuerpos de conocimiento en distintas áreas de especialización, quizás un poco inspirado en lo que sucede dentro del campo médico.

Para desempeñarse en áreas como programación de redes y sistemas, desarrollo web y móvil, inteligencia artificial, lenguajes y compiladores, arquitectura, gestión, etc, existirán tracks de conocimientos y habilidades bien definidos que permitan a los profesionales formarse y especializarse adecuadamente en las áreas de estudio de su interés; así la industria y los gremios profesionales tendrán una medida más objetiva sobre la aptitud y conocimientos que necesitan los profesionales para desempeñarse en determinados roles.

Teniendo un cuerpo de conocimientos básico de la profesión, y cuerpos de conocimiento para cada especialidad, que insisto, deben estar en constante revisión, lo que queda es definir la forma en que se evaluará a cada profesional de la industria.

Tomando en cuenta que gran parte de los trabajadores de la industria tienen estudios en el área de la computación, completos o abandonados, lo primero sería considerar los estudios formales como garantía de que una persona posee varios de los conocimientos básicos; y ofrecer a las personas que vienen de otras áreas la posibilidad de demostrar el dominio de estos conocimientos a través de exámenes teóricos y prácticos.

Luego de tener un mecanimso para evaluar los conocimientos teóricos básicos conviene tambien exigir como requisito obligatiorio a los futuros profesionales adquirir experiencia práctica ejerciendo bajo la supervisión y mentoría de profesionales para que tengan la oportunidad de enfrentarse a problemas y situaciones que sólo se experimentan trabajando en casos reales fuera de las aulas de clase, similar a como sucede en la carrera de medicina que tiene pasantías largas y bastante inmersivas donde los futuros médicos tienen la oportunidad de tratar pacientes y casos médico reales, algo muy distinto pasantías tradicionales que apenas duran un semestre y en las que muchas veces los estudiantes no tienen la oportunidad de enfrentarse a retos y decisiones reales de la industria bajo presiones que no se suelen experimentar en los ambientes más tranquilos de las aulas de clase.

Finalmente, despues de tener cuerpos de conocimiento básicos y cuerpos de conocimientos en áreas de especialización, tendremos más facilidades para evaluar de forma objetiva el seniority o nivel de experiencia de un profesional de la computación, en base a los conocimientos que posee y en base también a su experiencia y crecimiento dentro de la industria, lo que nos lleva al siguiente nivel de la profesionalización, la asignación de responsabilidades de forma objetiva en base a las capacidades y aptitudes de cada profesional. Ésto es algo que ya la industria hace de manera informal, a veces a través de ensayo y error; pero teniendo un sistema más objetivo de medición de competencias, podemos asignar a los ingenieros y desarrolladores tareas concretas, adecuadas a su nivel de experiencia, con la garantía de que la persona está capacitada para cumplirlas de la mejor manera posible, evitando daños y generando un impacto principalmente positivo para su organización, para los usuarios y para la sociedad en general.

Este camino hacia la profesionalización que estoy diagramando muy rápidamente es sólo una propuesta, una que considero que puede funcionar, y que tiene muchísimas complicaciones y limitaciones que resolver para poder implementarse fuera del mundo de las ideas. No pretendo tener en mis manos la solución definitiva pero hay que empezar a pensar en la regulación y la profesionalización de la industria. A medida que nuestro rol dentro de la sociedad y la economía se hace más importante también se hace más importante que reflexionemos sobre el papel que queremos desempeñar y el impacto, positivo o negativo, que queremos tener en el mundo.

Si nosotros no pensamos en las implicaciones éticas de nuetsro trabajo, a nivel individual, a nivel de equipos, de organizaciones e incluso a nivel de formación y educación de futuros profesionales, alguien más se dará cuenta del poder que estamos acumulando y la capacidad de ocasionar daños que viene con este poder y se encargará de pensar, de regular y de legislar por nosotros. Aprovecho este momento para insistir en un punto que he comentado en otros párrafos de esta serie, el estado no está apto ni capacitado para llevar a cabo una regulación de la industria, cualquier proceso de regulación de la profesión debe nacer desde nosotros, por supuesto, en colaboración con el estado, pero nopuede ser impuesto por legisladores y reguladores que no entienden nuestra profesión.

Para finalizar el artículo quiero aterrizar un poco mis propuestas hacia medidas concretas que podemos tomar desde hoy para ir avanzando hacia una profesionalización más rigurosa de la computacion.

Salgamos de nuestra burbuja técnica y preocupémonos un poco más por estudiar temas como la ética, que a veces nos parecen un poco ajenos a nuestro ejercicio pero que realmente tienen una interseccion enorme con nuestra profesión. Hablemos sobre temas de ética dentro de la industria, de la misma forma que tenemos charlas, meetups conferencias y talleres sobre temas técnicos como microservicios, escalabilidad de los sistemas o la nueva base de datos NoSQL de la que todos están hablando en Hacker News.

Conozcamos los códigos y normativas que regulan las industrias en las que nos desempeñamos, ya sea que trabajemos en el dominio de las finanzas, de la bio-ingeniería, la contabilidad, los sistemas de navegación, o cualquier otro, es muy probable que exista alguna regulación y sin necesidad de convertirnos en expertos debemos preocuparnos de entender bien las limitaciones y normativas legales existentes.Estudiemos también el Código de Ética y Conducta Profesional de la ACM, el código profesional más completo para nuestra área, dentro de los que revisé para escribir estos artículos. Lo leí completo un par de veces, y les recomiendo que no se queden sólo con mi resumen sino que tambien lo lean, lo comprendan y lo internalicen.

Mi propuesta final y concreta es que día a día hagamos un esfuerzo por ser mejores profesionales en el aspecto técnico pero también en aspectos complementarios como la ética, el trabajo en equipo, la comunicación, la colaboración y la planificación del trabajo, de esta forma aseguramos que el impacto de nuestro trabajo en la sociedad será principalmente positivo, y usando ese cliché que parodian constantemente en la serie Silicon Valley de HBO, hagamos del mundo un lugar mejor.

--

--