¿Qué debe cambiar para que la Ingeniería del Software se convierta en una profesión formal?

11

A diferencia de otras profesiones (como Contabilidad, Derecho, Medicina, etc.), no existe una certificación profesional para Ingeniería de Software.

Soy consciente de la multitud de certificaciones específicas de tecnología y metodología que tienen como objetivo servir como prueba de especialización y experiencia, pero no existe una sociedad de ingeniería de software / organismo rector público que establezca (y tenga el poder de evaluar legalmente) estándares profesionales generalmente aceptados .

Entiendo que el software es una bestia dinámica, eso es en parte arte, en parte ciencia, pero me pregunto si la Ingeniería de Software tiene el potencial de convertirse en una profesión formal.

¿Qué necesita cambiar para que esto suceda? ¿Sería algo bueno?

(Si alguien sabe de investigación formal sobre este tema, agradecería mucho las referencias)



Actualizar

Estoy de acuerdo con muchos de los buenos puntos planteados a continuación con respecto al nivel actual de certificación en Ingeniería de Software. También me parece muy interesante que algunos países traten la Ingeniería del Software como una profesión, mientras que otros no.

Sin embargo, parece haber un poco de envoltura alrededor del término "profesión formal" y cómo se aplicaría a la Ingeniería del Software. Creo que el problema clave con la Ingeniería del Software, y la razón principal por la que no es una profesión en toda regla, es que si eres un Ingeniero de Software certificado y, por ejemplo, algún software que escribiste para un mal funcionamiento del ascensor y mata a la gente, su certificación y / o membresía a un organismo profesional formal no será revocada.

Claro, su compañía podría ser demandada por millones, y usted personalmente podría perder su trabajo y ganar una mala referencia, pero en general, usted está protegido por el escudo de responsabilidad limitada como resultado de ser empleado de dicha compañía. En otras palabras, y que yo sepa, no existe una evaluación / aplicación legal (a diferencia de otras profesiones formales y sus sociedades de gobierno) que tienen el mandato de prohibirle oficialmente el comercio una vez que haya hecho una colosal acumulación .

Me gustó bastante la respuesta que se refirió al hecho de que la Ingeniería de Software, tal como está, es una meritocracia, que no necesita ser una profesión formal, y que es algo bueno que no debería cambiar. Al mismo tiempo, creo que debemos hacer una distinción clara entre los ingenieros de software de software de misión crítica y los desarrolladores de software misceláneo / no crítico.

Para aquellos de ustedes que trabajan / han trabajado en software de misión crítica, ¿hay alguna responsabilidad personal? ¿Seguramente hay una necesidad de repercusiones formales en caso de que el Ingeniero de Software cometa un error costoso?

Kosta Kontos
fuente
3
¿Cuáles son las ventajas de convertirse en una profesión formal?
Pieter B
1
Muy localizado Aquí en Quebec, debe ser parte de la orden de ingeniero para poder ser llamado ingeniero. Se aplican las mismas reglas para el ingeniero de software. Viene con el código de ética, normas, seguro de responsabilidad, etc.
Jean-François Côté
55
Batas de laboratorio, obviamente. Con corbatas.
Ben Brocka
2
@Pieter B: ¿Qué le parecería ver a un médico si no hubiera una profesión formal que garantice algún estándar que cada médico debe cumplir?
Giorgio
1
He votado para reabrir esta pregunta. No es un duplicado de "¿Pueden los ingenieros de software convertirse en ingenieros profesionales certificados?": Esa pregunta se refiere a las opciones de carrera dada la situación actual de la profesión. Esta pregunta se refiere a la brecha entre ese estado y un estado deseado percibido, y cómo actuar para cerrar esa brecha. Estos son diferentes temas.

Respuestas:

15

Según la información disponible, creo que la Ingeniería del Software ya es una profesión formal. Puede que no sea ampliamente aceptado como tal, pero cumple con los criterios generalmente aceptados para las características de una profesión.

Del artículo de Wikipedia sobre la profesión :

Existe un acuerdo considerable sobre la definición de los rasgos característicos de una profesión. Tienen una "asociación profesional, base cognitiva, capacitación institucionalizada, licencias, autonomía laboral, control de colegas ... (y) código de ética" [18], a lo que Larson también agrega, "altos estándares de excelencia profesional e intelectual, "(Larson, p. 221) que" las profesiones son ocupaciones con poder y prestigio especiales "(Larson, px) y que comprenden" un grupo exclusivo de élite "(Larson, p. 20) en todas las sociedades.

Esto cita extensamente El ascenso del profesionalismo de Magali Sarfatti Larson : un análisis sociológico . La búsqueda de "características de una profesión" tiende a conducir a resultados similares.

¿Cómo se compara Software Engineering con estas características?

  • Asociación profesional Existen numerosas asociaciones profesionales para ingenieros de software. El IEEE y, más específicamente, la IEEE Computer Society brindan servicios a profesionales que trabajan en ingeniería en todo el mundo, y la IEEE Computer Society se enfoca específicamente en ingenieros de computadoras y software. El ACM es otra organización profesional para profesionales que trabajan en informática, generalmente en las Américas. También está la British Computer Society , que atiende varios aspectos de las profesiones en tecnología de la información y la comunicación, generalmente en el Reino Unido.

  • Base cognitiva El cuerpo de conocimiento de ingeniería de software está patrocinado por IEEE, Boeing, National Research Council Canada, Raytheon, Construx Software, Canadian Council of Professional Engineers, MITER Corporation, NIST, Rational, SAP (para la versión 2004). Se inició específicamente como un paso hacia "hacer de la ingeniería de software una disciplina de ingeniería legítima y una profesión reconocida" .

  • Capacitación institucionalizada En los Estados Unidos, ABET puede acreditar los programas de Tecnología de la Información, Ciencias de la Computación e Ingeniería de Software . En Canadá, los programas de Ciencias de la Computación e Ingeniería de Software están acreditados por CIPS . Estas organizaciones definen estándares mínimos y resultados esperados para los estudiantes que se gradúan de un programa acreditado para permitirles funcionar en un entorno profesional. El IEEE también ofrece dos exámenes basados ​​en el conjunto de conocimientos de ingeniería de software: el examen Certified Software Development Associate para estudiantes universitarios (o estudiantes universitarios recién graduados) y el examen Certified Software Development Professional para profesionales de mitad de carrera.

  • Licencias A partir de abril de 2013, NCEES ofrece un examen de Ingeniería Profesional en Ingeniería de Software . Se ofrece estado por estado en los Estados Unidos. Sin embargo, el examen de Ingeniería de Software PE no se ofrece actualmente en todos los estados, y aún menos requieren la licencia. Este artículo, publicado en la edición de noviembre / diciembre de 1999 de IEEE Software, analiza los requisitos de licencia en el estado de Texas y una breve discusión sobre las licencias en Ontario y Columbia Británica, Canadá y el Reino Unido. En Texas, solo se requiere una licencia para trabajar en el diseño, prueba o implementación de sistemas integrados o en tiempo real que "requieren una comprensión detallada de los componentes eléctricos o mecánicos diseñados" y para los sistemas de software para "dispositivos mecánicos, dispositivos eléctricos y sistemas de energía ": una cantidad relativamente pequeña de trabajo de desarrollo de software. En los estados que ofrecen licencias, el peor de los casos es una acción disciplinaria, sanciones o pérdida de su licencia en caso de que un cliente o empleador presente una queja. Sin embargo, el único daño real se produce en los estados que requieren una licencia, a menos que se requiera la licencia para hacer el trabajo, perderla no significa nada.

  • Código de Ética La ACM y la IEEE Computer Society crearon un Código de Ética y Práctica Profesional de Ingeniería de Software . En los Estados Unidos, los graduados de los programas de ingeniería acreditados por ABET, incluidos los programas de Ingeniería de Software, también pueden unirse a la Orden del Ingeniero , que mantiene un código de ética que generalmente se aplica a los ingenieros profesionales.

  • Autonomía de trabajo, control de colegas, altos estándares de excelencia profesional e intelectual Estos son frecuentemente visibles en un entorno donde la ingeniería de software se trata como una disciplina de ingeniería. Es decir que no todos los empleadores (o autónomos) tratan el desarrollo de software como ingeniería.

Thomas Owens
fuente
66
90%, o incluso iría tan lejos como para decir que el 99% de los programadores probablemente ni siquiera saben que existe IEEE CS. Si el 99% de los médicos no pertenecieran a la AMA, tendría mucha menos fe en la profesión.
Jonathan Rich
3
@JonathanRich: todos los que conocía en la universidad se unieron al menos al IEEE. ¿De dónde sacaste tus números? ¿Te has conectado a IEEE y tienes algunos números de suscripción reales?
Ramhound
2
@Ramhound: Cuando estaba en la universidad, la gente conocía el IEEE pero pocos parecían unirse. Por otra parte, mi escuela tenía un programa de informática , no un programa de ingeniería de software , otras escuelas tenían cursos de programación de computadoras . Muy pocos tenían Ingeniería de Software , aunque eso está comenzando a cambiar a medida que las escuelas obtienen la acreditación para sus cursos. Además, no estábamos en los EE. UU., No estoy seguro de si eso tiene algún impacto en la participación de IEEE.
FrustratedWithFormsDesigner
11
@ Jonathan Jonathan, el 90% de los programadores no son ingenieros de software.
Philip
66
@Philip Y ahí radica el problema. ¿Eres programador? Un desarrollador? ¿Un desarrollador de software? ¿Un ingeniero de software? ¿Un analista de sistemas? ¿Cuáles son profesionales y cuáles no? ¿Necesita un ingeniero de software para configurar su sitio de WordPress? ¿Debería permitir que un desarrollador se acerque a su plataforma interna de almacenamiento de datos? Desearía mucho que la ingeniería de software fuera abordada de manera más profesional que el 90% de las personas con las que he trabajado, pero cuando tienes personas que quieren pagar un DBA menos que el tipo que corta el césped, no eres voy a conseguir las mejores personas.
Jonathan Rich
4

Un cuerpo profesional ampliamente establecido y aceptado para desarrolladores de software / ingenieros / arquitectos / etc. no sería algo bueno.

Actualmente, este es uno de los pocos campos que puede actuar como meritocracia. Como en, no me importa qué grado tienes (o si tienes uno), cuánta antigüedad tienes, qué idiomas conoces, etc. Es relativamente fácil saber si eres un buen desarrollador o no. , y al final del día, eso es lo único que importa. es decir, ¿puedes hacer las cosas?

Actualmente, usted es evaluado por su habilidad, no por alguna acreditación que alguien le otorgó. Y esto es justo, algo bueno (tm).

Señor Fox
fuente
2
La similitud con la prostitución es ligeramente desconcertante ...
Mattnz
@mattnz Se llama prostitución intelectual, y mi tarifa por hora es probablemente más baja que la tradicional.
MrFox
Gracias por la perspicaz respuesta @MrFox. Me gustaría elegir tu cerebro un poco más si puedo. Si los médicos / contadores / abogados cometen un error crítico / costoso, corren el riesgo de perder su certificación y se les prohíbe seguir comerciando. Los ingenieros de software, por otro lado, no enfrentan ese riesgo, ya que rara vez pierden dinero (debido a la responsabilidad limitada que les otorgan las compañías en las que trabajan). Todo lo que pueden perder es su trabajo y reputación actuales. A la luz de esto, ¿cree que tendría sentido tener una sociedad formal para gobernar las mejores prácticas de Ingeniería de Software?
Kosta Kontos
2
@KostaKontos Considere lo que eso significaría en el mundo real: ¿obtendrá violaciones si no escribe pruebas unitarias o no tiene suficiente documentación? ¿O perdería la licencia si empujara el código a un entorno de producción con una falla de seguridad? ¿Sería eso algo bueno para el campo? Mi argumento es que esto agregaría una gran cantidad de trámites burocráticos, políticas, culpas y solo aumentaría las ganancias de las compañías de seguros a través de cada desarrollador que tenga que comprar un seguro de negligencia. Sin embargo, es un pensamiento interesante. Apuesto a que aún no ha sucedido porque demandar a sus propios ingenieros es una mala idea.
MrFox
0

Nada necesita cambiar.

Como señaló Thomas , la ingeniería de software ya es una profesión. Puede llamarse ingeniería, programación, piratería y / o elaboración, pero es una profesión y mucha gente está ganando dinero con eso.

Creo que su pregunta es sobre las licencias.

En este momento no hay licencias formales para la ingeniería de software. Cualquier persona con suficiente inteligencia y capacidad de programación puede ser contratado y pagado por crear código que se ejecuta en una máquina o un dispositivo.

Esto es diferente a otras industrias (la ley y la medicina son ejemplos citados en la pregunta). Se requiere una licencia para esas profesiones. Cualquier persona puede conducir un automóvil, pero para conducir uno legalmente debe tener una licencia de conducir es otro ejemplo. Cualquiera puede programar, no se requiere licencia o certificación.

Ahora, creo que la licencia es buena, ya que demuestra que alguien tiene la capacidad de hacer algo (como conducir un automóvil) y conoce los entresijos de las reglas (de la carretera).

Se podría requerir una licencia similar para la ingeniería de software, pero no creo que sirva de mucho. De hecho, hay muchos conductores con licencia que son conductores horribles, así que solo porque tenga una licencia no significa que sea un buen conductor o programador.

Una licencia crea una barrera para la entrada, que en esta industria no sería algo bueno, por lo que no veo ningún beneficio percibido de dicha licencia.

Las compañías que contratan ingenieros de software deberían probar definitivamente la capacidad de ese programador potencial con una "prueba de programación" (y no estoy hablando del tipo de chisporroteo) basado en el conjunto de habilidades necesarias. Los programadores con "certificaciones" se ven bien en el papel, pero realmente deberían ser puestos a prueba con una prueba del mundo real para evaluar la experiencia y la aptitud.

Jon Raynor
fuente
2
"Los programadores con 'certificaciones' se ven bien en papel", no, no lo hacen.
Philip
0

Creo que debería ser posible convertirse en un desarrollador de software certificado aprobando un examen de la misma manera que un abogado aprueba un examen de barra. También creo que los programadores no certificados aún deberían poder operar como programadores. La diferencia es que los empleadores podrían anunciarse específicamente para programadores certificados si eso es lo que desean, y un programador certificado vendría con ciertas garantías de responsabilidad, así como un precio más alto.

Estoy de acuerdo con el póster que dice que el desarrollo de software es un desastre sin responsabilidad. No creo que tenga que ser así. Hay desarrolladores que quieren hacer un buen software y están dispuestos a rendir cuentas por él. Solo necesitamos una forma de distinguirnos.

He estado desarrollando software por más de 20 años. No pretendo que esto me haga un gran desarrollador por sí mismo, pero sí creo que soy un desarrollador bastante bueno. El problema es que tengo que demostrar constantemente por qué soy un mejor desarrollador que todos los niños que aprendieron programación en su tiempo libre y quieren el mismo trabajo que yo. Sin mencionar las legiones de desarrolladores "offshore" que prometen hacer el mismo trabajo por una fracción del dinero. En este momento esto requiere mucho esfuerzo. Tengo que proporcionar muestras de trabajo, referencias, tomar exámenes, hacer entrevistas. Fácilmente podría tener un mal día, cometer un error en una prueba y quedar descalificado. Prefiero decir: "sí, soy un desarrollador certificado y aquí está mi certificado". Todavía tendría que hacer entrevistas, pero al menos solo estaría compitiendo contra otros desarrolladores certificados.

usuario92238
fuente
Gracias por la perspicaz respuesta. ¿Crees que debería haber una cantidad mínima de experiencia laboral requerida antes de que los desarrolladores puedan tomar su "examen de barra"? Similar a cómo los abogados / contadores tienen que completar dos o tres años de artículos. Y si existiera este requisito mínimo, ¿cree que el trabajo en sí mismo debería estandarizarse hasta cierto punto, para garantizar la coherencia de la experiencia adquirida en toda la profesión?
Kosta Kontos
-2

Nunca lo hará, al menos no del todo. El software es un medio, como la pintura. Hay personas que realizan trabajos de pintura a escala industrial de grandes estructuras, hay personas que diseñan nuevas pinturas para realizar con altos estándares, pero también hay personas que compran pintura para realizar trabajos a pequeña escala, como pintar su cobertizo, y otros que podrían mezclar su propia pintura, pero solo úsela para pintar cuadros de gatos.

De manera similar, aunque podría ver un futuro en el que el software crítico y / o financiero para la seguridad necesita ingenieros acreditados que trabajen en él, nunca habrá necesidad de personas que produzcan software de arte o entretenimiento. ¿Qué debe cambiar para obtener software de seguridad o financiero para tener ingenieros acreditados? Bueno, al igual que esas otras profesiones, requeriría una ley para ordenarlo.

jk.
fuente
44
¿Cómo es eso diferente de otras disciplinas de ingeniería? Tomemos ingeniería civil. Cualquiera puede construir un puente en su jardín trasero sobre un arroyo. Pero no todos pueden construir un puente de carretera sobre un lago. Creo que eso también se puede aplicar a muchas otras disciplinas de ingeniería, y es comúnmente aceptado que la ingeniería es una profesión.
Thomas Owens
@ThomasOwens es cierto, sin embargo, con el software no tenemos una parte formal de "no todos pueden construir un puente de carretera", eso vendrá
jk.
2
Eso no es cierto. No todos pueden construir el software de aviónica para un avión comercial. O el software de control para una máquina de radioterapia. Hay un montón de software controlado, regulado y es necesario que haya ciertos estándares. Sin embargo, hasta hace poco, no existían las mismas licencias que las otras disciplinas de ingeniería.
Thomas Owens
1
@ThomasOwens Como ingeniero de software que trabaja en software de aviónica para un avión comercial (OBIGGS), sí, en realidad cualquiera podría construir esto. El software no es tan complicado. Pero los clientes son REALMENTE quisquillosos acerca de que sea robusto y confíe en que no explotará. Al igual que cualquiera podría construir un puente, mal, cualquiera podría codificar una unidad OBIGGS, mal. El aspecto profesional viene con las pruebas, el proceso, abordar el DO-178b y poder demostrar con confianza que no se caerá del cielo cuando cruce la línea de fecha internacional.
Philip
3
"No existe un análogo de la física en el software": existe, se llama Matemáticas o algún otro método formal. Y, de hecho, para el software de misión crítica, la mayor parte del trabajo se dedica a la especificación, verificación y prueba, y solo el 10% del trabajo se destina a la codificación real. Solo se puede desarrollar un software que no sea de misión crítica de una manera ágil, de prueba y error (la forma en que uno construiría un puente en su jardín trasero), ¡pero trate de usar el mismo método para construir software de aviónica!
Giorgio
-2

El software no es una profesión, ni nunca lo será.

"Una profesión surge cuando cualquier comercio u ocupación se transforma a través del desarrollo de calificaciones formales basadas en la educación, el aprendizaje y los exámenes, la aparición de organismos reguladores con poderes para admitir y disciplinar a los miembros, y cierto grado de derechos de monopolio".

Esa descripción no coincide con el software en absoluto.

En primer lugar, cualquier persona interesada en el software puede salir y tratar de encontrar un trabajo para desarrollar software. Muchas de esas personas tienen títulos universitarios totalmente ajenos a la programación informática y muchos no tienen ningún título. No hay nada que impida a ninguno de esos grupos convertirse en programadores de software.

El software no puede convertirse en una profesión porque los miembros "con licencia" se hacen responsables por el daño que causan y su mala práctica. El 80-90% de los desarrolladores perderán su trabajo dentro de un par de años solo por ese.

En general, la calidad del software es atroz, propensa a errores y simplemente no está muy bien hecha. ¿Es eso digno de ser una profesión? ¿Prevé que se detenga porque las personas obtienen licencia? Si una organización profesional no va a representar altos estándares y calidad profesional, entonces no tiene sentido. Eso va directamente en contra de la práctica de la industria. Escribir software de calidad, robusto y funcional va en contra de los principios de la mayoría de las empresas, porque el tiempo de comercialización, el costo, es lo suficientemente bueno, no quiero romper nada más, tratar de arreglar el software dañado se considera más importante que el software de grado profesional.

Además, con respecto a la mala práctica. ¿Cómo va a demostrar que un desarrollador contra otro tiene la culpa? En software es fácil señalar con el dedo y ambos desarrolladores "tienen razón". ¿Quién tiene la culpa cuando ese desarrollador usa la API no documentada oculta en las entrañas del sistema operativo y luego el proveedor del sistema operativo cambia su función o la elimina?

Buena suerte con esa cosa del organismo regulador. Veamos que el Congreso dice que no a Microsoft cuando Microsoft les pide que eliminen ese proyecto de ley porque solo les permitirá contratar desarrolladores "con licencia". Sin ese organismo regulador, entonces quién se unirá a una organización que tiene el derecho de disciplinarlo y cobrarle las cuotas, especialmente si no hay un valor agregado como obtener derechos de monopolio sin el organismo regulador.

En cuanto a, ¿sería bueno exigir una licencia? Absolutamente, para aquellos que pueden acreditarse. Su paga aumentaría dramáticamente con su nuevo monopolio encontrado.

Sin embargo, para todos los demás ... el uso de la tecnología informática en las empresas probablemente disminuirá junto con el rápido ritmo de avance que vemos hoy en día. Ciertamente habrá barreras para los nuevos avances de software, como lenguajes y metodologías de diseño. Después de todo, quién querrá impulsar nuevas formas de hacer cosas que requerirán años de reentrenamiento para mantener su licencia. La mayoría de los desarrolladores con licencia preferirán mantener las cosas tal como están en ese sentido.

Remojar
fuente
agregue algunas referencias para respaldar sus afirmaciones (que tienen cierto sentido para mí pero eso no importa), y eliminaré el voto negativo
mosquito