¿Qué pasaría si casi cualquier persona pudiera escribir software de alta calidad?

Es muy poco probable que solo “cualquiera” pueda escribir software de “alta calidad”, porque por su naturaleza, el desarrollo de software es el proceso de crear soluciones ÚNICAS a problemas específicos.

Las soluciones son únicas por este motivo: si ya existiera, no habría necesidad de escribir software en primer lugar.

“El problema” en busca de una solución no siempre es técnico.

También puede ser organizativo o financiero, por lo que incluso si alguien ha resuelto un problema técnico, no está disponible para usted y / o es prohibitivamente costoso implementarlo en tiempo, dinero o ambos.

Dado que cada programa es único, la creatividad siempre es un elemento del diseño de software, y el uso de soluciones no probadas es, en sí mismo, inventivo.

Pero hay una advertencia……….

Nunca se liberará de la primera ley de la ingeniería de software: los errores son una realidad, ¡acostúmbrese!

Tan pronto como los errores entran en escena, comienzas a separar a los hombres de los niños … las niñas de las mujeres.

Muchos carecen de la paciencia o el temperamento para la depuración, y eso también es un componente crítico del proceso de creación de software.

Un invento creativo es tan bueno como los errores que le han arrancado el pelo.

Para cualquier error no trivial, a menos que haya IA, que el OP descartó, generalmente debe ir debajo del capó para encontrar el problema. Esto es similar a la precaución de los “magos malvados” dada por Hunt y Thomas en The Pragmatic Programmer (1999).

La demanda de desarrolladores de software altamente calificados no alcanzará su punto máximo durante unos años más. Al igual que las especialidades que notó, la demanda de desarrolladores de software altamente calificados probablemente disminuirá.

No será bonito para aquellos de nosotros que ganemos generosas tarifas por hora produciendo software.

Hay ejemplos históricos que presagian la noción que estás considerando. Ha habido innovaciones innovadoras en herramientas que hicieron mucho más fácil para las personas con conocimientos técnicos promedio producir software de nivel profesional. Un buen ejemplo es el advenimiento de Visual Basic, el primer entorno de desarrollo integrado donde se pueden arrastrar y soltar controles de formulario creados por Alan Cooper alrededor de 1991. Sospecho que Visual Basic trajo una avalancha de desarrolladores de software no tradicionales al campo, como yo, quien no tenía una formación en informática formal.

Más recientemente, las innovadoras herramientas de integración continua y entrega continua como CodeShip convirtieron a Joe-Developer en un DevOps competente basado en la nube. Además, los portales de alojamiento de plataforma como servicio en la nube (PaaS) como Heroku han hecho que sea sencillo para Joe-Developer alojar una aplicación que se integra perfectamente con otros servicios alojados en la nube y herramientas de soporte.

Entonces, sí, los desarrolladores de software se automatizarán a partir de trabajos bien remunerados.

Actualización: no mencioné que trabajé en un proyecto para generar automáticamente código de un modelo OOA. No tenía fondos suficientes y estaba demasiado adelantado a su tiempo. Además, un modelo OOA está demasiado cerca del diseño y debería ser una salida (si se desea), no una entrada. De vuelta a la idea principal:

Me puedo imaginar un escenario como este:

Computadora: ¿Cuál es su plataforma? computadora de escritorio, servidor, móvil, supercomputadora, integrada u otra?

A: escritorio

Computadora: ¿cuál es su aplicación? Consulta de fecha, fotografía, finanzas, servicios industriales, mapeo o (seleccione de una lista larga)

A: fotografía

Computadora: ¿Qué marco usarás? Sugiere varios marcos de aplicaciones de fotos

A: elige el mejor

Computadora: ¿Qué idioma? Se sugiere C ++.

A: usa eso

Computadora: indique sus requisitos

R: El software debe mejorar múltiples imágenes con poca luz de la misma escena.

Computadora: con eso quiere decir “combinar varias imágenes en una imagen con mayor calidad”. ¿Es correcto?

A: si

… esto continúa por algún tiempo, luego:

Computadora: Aquí hay varios algoritmos sugeridos para su primer requisito. seleccione uno de su elección [sigue una lista]

A: el algoritmo basado en FFT

Computadora: ¿Desea manejar cada caso de entrada, la mayoría de los casos, solo los casos más comunes o solo los casos que especifique?

A: los casos más comunes

Computadora: tiene 1700 rutas a través de su software, y se requieren 5500 casos de entrada para la prueba automática. Tomará 8 horas de cálculos para probar todos los casos. ¿Es esto aceptable? De lo contrario, revise su especificación.

A: sí, es aceptable

Conclusión:

Como puede ver, esta no es una tarea para principiantes. Se necesitará alguien con experiencia en este entorno. Un programador profesional lo haría mejor, al igual que un fotógrafo profesional puede usar Photoshop o Lightroom. Sin embargo, esto podría avanzar rápidamente, y un no programador podría hacerlo.

En primer lugar, creo que no va a suceder, porque es demasiado difícil garantizar la calidad bastante alta de un software empresarial. Los desarrolladores y los probadores han encontrado muchas maneras de mejorarlo, como la programación de emparejamiento, las pruebas de cuadro negro y de escritura y la integración continua. Sin embargo, todavía hay algunos errores en sus producciones, por lo tanto, tienen que emitir varios parches para solucionar los problemas. Incluso los desarrolladores competentes todavía necesitan pasar horas para asegurarse de que no haya errores en sus productos.

En segundo lugar, hemos sabido que para una persona física es difícil convertirse en un buen desarrollador con un gran conocimiento del hardware y el sistema operativo, entonces podemos suponer que en el futuro se podría lanzar una herramienta innovadora para ayudar a las personas a desarrollar sus softwares en alto nivel. calidad.
si algún día se hace realidad, creo que esta técnica no se usará sin problemas y apenas brindará a los usuarios una experiencia maravillosa, debido al hecho de que esta herramienta debe limitar la mente de desarrollo de las personas para asegurarse de que sus softwares estén en la forma correcta. Por lo tanto, no amenazará las carreras de los especialistas.

Finalmente, para beneficio de las empresas, el ecosistema de los negocios de software no aceptará este cambio. Una vez que se lanza esta herramienta, los clientes pueden desarrollar sistemas oficiales por su cuenta, lo que significa que esas compañías de software enfrentarán el riesgo de quiebra. Eso realmente perjudica el beneficio del ecosistema, por lo tanto, desencadenará una batalla en los campos de negocios que puede durar mucho tiempo. Pero aún así no afectará las carreras de los especialistas.

La automatización de ciertos aspectos de una profesión simplemente mueve la barra. Los documentos legales de placa de caldera han sido durante mucho tiempo el equivalente de un abogado (o un asistente legal) girando una manivela.

Los artículos de noticias simplistas (y la mayoría del periodismo deportivo) ahora pueden ser hechos por una computadora, pero eso ha sido reconocido por mucho tiempo como material de placa de caldera.

Varios sistemas de gestión de contenido como WordPress, Drupal, etc. han convertido el diseño de sitios web comunes en calderería.

La producción de software de alta calidad siempre requerirá un “programador”, aunque las habilidades particulares necesarias cambiarán con el tiempo a medida que los programadores aburridos y perezosos escriban nuevas herramientas para facilitarles la vida.

Si alguien pudiera escribir softwares de alta calidad, cada software sería más personalizado y el problema sería cómo conectar el software de cada persona para poder conectarse y funcionar correctamente con todos los demás disponibles. En otro caso, dado que cualquiera puede desarrollar softwares, lo más probable es que la tasa de innovación en la industria del software se acelere y se convierta en un campo muy competitivo aún más que en la actualidad.

Surgirán problemas más difíciles. A medida que mejoramos para los problemas de hoy, aparecerán los más nuevos que requieren más habilidades.

Las interfaces también vendrán cada vez más con la capacidad de programación del usuario final.

¿Qué pasaría si casi cualquiera pudiera ser un físico teórico de primer nivel? ¿O un músico de primer nivel? ¿O un dramaturgo de primer nivel?

No va a pasar.

En la década de 1980, nosotros (colectivamente) estábamos preocupados por las fábricas de software japonesas de “quinta generación”. Nunca ocurrió. “Casi cualquiera” solo puede repetir soluciones pasadas. La mejor gente puede hacerlo radicalmente mejor. No hay competencia

Las mentes humanas no son remotamente intercambiables.

Lo siento, no compro en su premisa.

Todavía se necesitan esos “especialistas” como los llama en sus comentarios. Mucho más. Ahora la demanda puede estar baja pero todavía son necesarios.

En cuanto al software, NO todo el mundo puede construir una declaración simple si entonces, y mucho menos otra, comenzar a anidar y hacer bucles.

Entonces simplemente ya no será un software de alta calidad, si lo piensa, supongamos que todos tienen un software que es muy bueno, pero en el mismo momento también esperará más y más, no hay fin a una satisfacción humana. es final menos
En última instancia, uno no puede decir que tendremos softwares perfectos.