¿La programación es una profesión en una carrera hacia abajo? [cerrado]


41

Me parece que la industria de la programación está en una carrera hacia el fondo. Si tomamos las prácticas de:

  1. No tomarse el tiempo para implementar las mejores prácticas.
  2. Usar el código de otras personas tanto como sea posible (código personalizado como responsabilidad)
  3. Uso de idiomas cada vez más altos para mejorar la productividad.
  4. "Herramientas" de desarrollo basadas en GUI que simplifican enormemente la "programación" y no requieren que la gente entienda la plomería detrás del código

Estas cosas implican para mí que estamos en una carrera para convertirnos en cualquier otro empleado de oficina. Es del interés del empleador que las cosas no requieran habilidad (más fácil de reemplazar), que las cosas se construyan previamente (menos tiempo de proyecto).

Mi punto aquí es que a) ¿hay una desalineación entre la habilidad y los intereses económicos del empleador? y b) si es así, ¿cómo lo mitiga para hacer cumplir las normas profesionales?


28
Bueno, alguien todavía tiene que hacer esas herramientas. Entonces, en cierto sentido, es una carrera para mantener a los buenos programadores lejos del trabajo aburrido.
Jeremy Heiler,

11
¿Por qué alguien cree que el futuro del desarrollo de software se reducirá a arrastrar y soltar componentes? En serio, ¿crees sinceramente que será así de fácil?
Pemdas

3
@Pemdas: Miedo humano si progresa y / o cambia. La locomotora a vapor hace 150 años era percibida como malvada.

44
@pierre No estoy seguro de entender a dónde vas con eso.
Pemdas

3
Dijkstra, ¿eres tú?
l0b0

Respuestas:


6

Creo que has hecho una pregunta muy conmovedora.

La creación de herramientas de codificación GUI deja a los programadores sin trabajo tanto como los robots dejan a los trabajadores de la línea de ensamblaje sin trabajo. En mi opinión, si bien hay una pérdida de empleos, también hay un cambio en la ubicación de los próximos trabajos.

La tecnología para realizar una tarea cambia, pero la tarea aún debe completarse: los automóviles aún deben fabricarse / ensamblarse antes de poder conducirlos; el código / lógica de negocios aún necesita ser reunido para que la aplicación funcione.

Los cambios en la tecnología presentan opciones para los programadores: aprenda programación basada en GUI o herramientas de GUI de programa ... o ... algo completamente diferente.

Puede haber una desalineación entre las habilidades de los empleados y los intereses del empleador, pero no por mucho tiempo, especialmente si el empleador es inteligente. Por lo tanto, lo mejor para el empleador y el empleado es perseguir lo que es para su beneficio mutuo. Pero uno inevitablemente estará por delante del otro. Ojalá seas tú (-:

Los mejores deseos,

KM


Mi pensamiento es centrarme en el desarrollo de software más especializado: programación matemática, estadística y computacional intensiva (aunque el tercero puede estar pasando de moda con el aumento de la potencia de VM). No creo que estos dominios especializados estén en esa carrera hacia el fondo, aunque no tengo experiencia en ellos, así que podría estar equivocado.
q303

@ q303: Siempre habrá muchas aplicaciones que ocuparán toda la potencia de la computadora disponible.
David Thornley

58

A las tendencias que mencionas agregaría una más, que en mi humilde opinión las explica:

Hay muchos más programadores (necesarios) que nunca.

La cantidad de tareas que requieren o incluyen programación es cada vez mayor, y en una tasa aún mayor que la cantidad de programadores. Hoy en día hay varios microchips en un automóvil promedio. En 5 años puede haber un chip en su refrigerador y en su tostadora. ¿En 10 años, su ropa interior? ... Y alguien necesita producir todo ese software para que funcione. Por lo tanto, se hacen todos los esfuerzos posibles para automatizar lo que sea automatizable y para mejorar la "productividad" (como se defina). Y se reclutan más y más cerebros frescos.

Esto implica que la mayoría de los programadores activos de hoy en día no tienen experiencia y / o están mal preparados para su trabajo. Se necesitan varios años para alcanzar un nivel adecuado de experiencia y se requiere un aprendizaje constante para mantenerse allí. La conclusión es que cada vez más trabajos de programación son cada vez menos desafiantes. Pero todavía hay suficientes desafíos para cualquiera que los esté buscando .

Déjame jugar al abogado del diablo contra tus puntos anteriores:

No tomarse el tiempo para implementar las mejores prácticas.

Mucha gente no, mucha gente lo hace. Hace diez años, cuando descubrí por primera vez las pruebas unitarias y el enfoque ágil, ninguno de mis colegas tenía la menor idea de lo que era. Hoy en día es un material casi estándar en las universidades, por lo que muchos recién graduados ya lo entienden.

Usar el código de otras personas tanto como sea posible (código personalizado como responsabilidad)

¿A diferencia de qué? ¿Reinventando la rueda? ¿O usar el código de otras personas para evitar eso?

Creo que es importante tener en cuenta que se nos paga (principalmente) para resolver problemas, y escribir código no es el final, solo el medio para eso . Si se puede resolver un problema sin escribir una sola línea de código, todavía hace feliz al cliente. Especialmente si de esta manera logramos producir una solución más confiable de manera más rápida y económica. No veo ningún problema con eso.

Uso de idiomas cada vez más altos para mejorar la productividad.

¿A diferencia de codificar todo en el ensamblaje? ;-)

"Herramientas" de desarrollo basadas en GUI que simplifican enormemente la "programación" y no requieren que la gente entienda la plomería detrás del código

En mi humilde opinión, cualquier herramienta puede ser mal utilizada. Lo que no quiere decir que los constructores de GUI fueran necesariamente perfectos o incluso buenos, la mayoría (o al menos algunos) de ellos son utilizables dentro de sus límites. Pero si alguien no conoce esos límites, ¿es un problema de la herramienta o de su usuario?

En general, creo (aunque no tengo evidencia que lo demuestre) que en los días de la tarjeta perforada y el código de máquina, aproximadamente la misma proporción de código existente era horrible como ahora, solo ambos

  • la cantidad total de código, y
  • las posibilidades de que extraños vean ese código

fue mucho, mucho menos.

Ahora, con Internet y el Daily WTF, nos exponemos a los peores ejemplos día a día. Es un poco como ver todas las noticias sobre terrorismo y terremotos y celebridades divorciadas, y gritar lo peligroso e inmoral que se volvió este mundo.


+1 Supongo que estamos en un ciclo de retroalimentación de "cada solución genera nuevos problemas". No puedo decir si es un ciclo negativo o positivo.
Maglob

66
+1 Si solo los buenos programadores reescriben todo desde cero, entonces felizmente seré un programador horrible.
AndrewKS

1
¡No quiero chips en mi ropa interior a menos que el tiempo de actividad sea aceptable!

@ Thorbjørn: ¿cuál es el tiempo de actividad aceptable para la ropa interior? Si se lavara por sí mismo, entonces me preocuparía por el tiempo de actividad ... de lo contrario, debes quitártelos todos los días de todos modos (¡espero!)
Dean Harding

1
@ back2dos, no considero que esto sea un desacuerdo. La línea en negrita indica la tendencia, o las compañías / gerentes ven si lo desea; Usted declara la opinión de los desarrolladores. Estoy totalmente de acuerdo con usted en que sería ideal tener mejores programadores, más educación práctica, tutoría, para elevar el nivel de calidad en la industria. Sin embargo, la triste realidad es diferente. El software se ha convertido en un producto básico, por lo que muchas personas esperan obtenerlo de forma rápida y económica, sin comprender las implicaciones de tales decisiones (como los costos a corto y largo plazo, etc.).
Péter Török

29

Resume la situación correctamente, pero malinterpreta completamente el significado.

A medida que el software se vuelve más poderoso, las tareas que toma en escala con él. Por lo tanto, puede que no sea necesario hoy en día ser un programador de bases de datos para crear una base de datos de contactos telefónicos cuando puede usar Access. Y puede que no sea necesario ser un programador web para configurar un blog cuando simplemente puede ir a WordPress. Pero, mientras que hace 15 años sería necesario ser un programador para hacer esas cosas, lo que los programadores hacen ahora es un orden de magnitud mayor que lo que se podía hacer hace 15 años.

Permítanme decirlo de esta manera, dentro de 100 años, será trivial configurar un sistema tan complejo como Facebook o Google. No estoy hablando de sus páginas web, me refiero a sus centros de datos. Cualquiera podrá hacerlo. Se integrará en los teléfonos, suponiendo que aún los usemos. PERO, todavía habrá programadores, y si bien es posible que no estén trabajando en sistemas tan "triviales" dentro de 100 años, estarán trabajando en sistemas mucho más complejos y sofisticados que nadie aquí puede siquiera comenzar a comprender su alcance y escala. Y esos sistemas, como los de ahora, estarán fuera del alcance del empleado de oficina promedio porque algunas personas, llamadas programadores, optarán por especializarse en llevar la tecnología de esa época a sus extremos.


Punto de vista interesante ...
q303

10
Me gustaría que GrandmasterB escribiera algo de ciencia ficción.
ocodo

55
No puedo esperar para tener mi propio centro de datos de Google en mi teléfono.
Martin York

3
@Slomojo No es tan ciencia ficción como puedas pensar. Cuando era un niño en el tercer grado, visité una demostración de computadora en la universidad cerca de mi casa. Fue un escaparate experimental para el público. Uno de los programas en exhibición fue un juego jugable de tic-tac-toe. En ese momento se consideraba un momento de poder jugar un juego contra una computadora. Esto fue a finales de los años 60. ¿Cuáles serán los momentos ah y ah dentro de 100 años?
Bill

Me refería a la forma en que lo contó, no es que el contenido fuera de fantasía , estaba cerca cuando Pong fue revolucionario, estoy bastante seguro de que los niños de Nintendo también pueden relacionarse con los cambios exponenciales en la tecnología.
ocodo

18

He leído ese tipo de cosas durante cuarenta años, y no estaba en el comienzo de las predicciones. No ha sucedido todavía.

COBOL era la herramienta de desarrollo original destinada a eliminar la necesidad de programadores de negocios, y era un lenguaje de nivel mucho más alto que el ensamblador. Las bibliotecas de códigos (para evitar tener que escribir el propio código) son de una antigüedad similar.

De vez en cuando, surge algo que permite a los no programadores hacer algo más como el trabajo de programación. Hubo los "idiomas de cuarta generación" de los años ochenta, hojas de cálculo elegantes como Excel, generadores de informes y similares. Lo que han hecho de manera uniforme, si tienen éxito, es eliminar parte del trabajo de programación y permitir que los programadores hagan otras cosas más interesantes.

Este patrón no durará para siempre, pero voy a necesitar algo más que argumentos teóricos y predicciones para convencerme de que la programación realmente va cuesta abajo.

El problema de COBOL a las herramientas de desarrollo modernas es que no reemplazan la capacidad de tomar una especificación inexacta y convertirla en algo preciso y útil. Esa es la capacidad fundamental de los programadores, y por qué no nos vamos a ir por mucho tiempo.


77
+1 - "toma una especificación inexacta y conviértela en algo preciso y útil".
ocodo

+1, no he estado en este juego tanto tiempo como tú, pero definitivamente he escuchado el mismo tipo de cosas que esta pregunta planteó y repitió durante 20 años, ahora.
Carson63000

+1 por 4gl's vine a decir exactamente eso. Toda esa promesa, tan poca entrega :)
Ian

"Este patrón no durará para siempre", ¿por qué no?
Ian Warburton

3

Los programadores de ensamblaje y FORTRAN probablemente dijeron lo mismo cuando la programación estructurada y los intérpretes generalizados entraron en escena.

Al final del día, el software es una creación destinada a automatizar algo que previamente se había hecho a mano. Un departamento de contabilidad en una corporación moderada habría requerido previamente docenas de personas, ahora todo ese trabajo se puede lograr con el trabajo de uno o dos. Como resultado, las publicaciones de objetivos se han movido y ahora esperamos ese estándar de capacidad adicional de un contador.

Pixar tarda más en reproducir películas que nunca. A pesar del enorme aumento en la velocidad de computación, junto con él, los animadores han exigido una complejidad y detalles cada vez mayores en sus escenas. La animación de calibre Toy Story no es aceptable en 2010 como lo fue en 1995. Como sus herramientas han avanzado, también lo han hecho sus capacidades y, por lo tanto, sus expectativas.

Cuando arrastrar y soltar u otras metodologías de programación son comunes, el mundo exigirá soluciones a problemas aún más desafiantes y complejos, y necesitarán programadores que usen esas nuevas y sofisticadas herramientas para resolverlos. Los postes de meta se moverán.


3

Si bien estoy de acuerdo con la mayoría de las respuestas que señalan que aún habrá mucho trabajo por hacer, le daré una respuesta diferente para que considere:

Sí lo es, y DEBE ser

Estoy aquí para diseñar una solución a los problemas que otros no pueden. Cualquier cosa en el conjunto de herramientas que me quite el tiempo de resolver problemas para lidiar con todos los pequeños detalles de cómo implementar mi diseño es un desperdicio.

La única razón por la que temería ir a un lenguaje de nivel superior o una herramienta más simple y abstracta es que esas herramientas a menudo hacen suposiciones que se interponen en mi camino y requieren mi tiempo para resolver las suposiciones para obtener la implementación deseada.

Siempre hay más problemas para resolver que buenos solucionadores de problemas. Incluso si toda la cadena de desarrollo se volviera tan simple que los niños en edad preescolar podrían usarla, la mayoría de las soluciones diseñadas serían insuficientes o lo suficientemente ineficientes como para que las personas pagaran por una solución mejor porque la mayoría de las personas son malas para ver la solución correcta a los problemas con todos los casos límite y qué pasa si necesita considerar para hacer una buena solución.

Nuestro trabajo es resolver los problemas mejor que la mayoría del resto, la complejidad de la cadena de herramientas no es terriblemente relevante en la vista general, siempre y cuando se salga del camino y le permita construir y construir algo bueno.


1

Aunque las tecnologías de programación pueden cambiar, la complejidad subyacente de un producto de software sigue ahí. Si el software se pudiera escribir completamente usando diagramas o diagramas de flujo (o alguna otra forma 'simple'), toda la complejidad del software aún debe entenderse y abordarse. Por esa razón, es importante que los empleadores cuenten con programadores que conozcan los productos de la compañía de manera exhaustiva para actualizarlos o agregar nuevas funciones. Y a los empleados les puede llevar bastante tiempo aprender un producto de software.


1

No importa lo que pueda automatizar o sacar de la plataforma, la mayoría del software empaquetado se divide en dos categorías:

  1. Es fácil de usar, pero no coincide con lo que la empresa realmente necesita.
  2. Es altamente personalizable, pero se necesita un especialista para comprender y aprovechar la personalización.

Supongo que olvidé el tercero. Es software de productividad estándar (correo electrónico, navegador, procesador de textos, etc.). El software en la categoría uno lleva a las empresas a contratar desarrolladores de software para personalizar el software estándar (si es posible). El software de categoría 2, bueno también podrían contratar a un desarrollador porque la persona que conoce ese sistema personalizable por dentro y por fuera es muy buscada (piense en SAP, PeopleSoft, etc.) o una raza moribunda (piense en cualquier sistema similar a SAP y PeopleSoft que no tener la misma penetración en el mercado).

Siempre habrá una necesidad de desarrolladores. Lo que veo es que más de lo que solía ser trabajo manual, tedioso y repetitivo se ha automatizado (piense en escribir código para acceder a los datos a mano en lugar de usar un O / RM). Esto permite a los desarrolladores entregar más valor a la empresa con menos esfuerzo.


1

No tomo tus argumentos:

  1. No tomarse el tiempo para implementar las mejores prácticas.

excepto eso.

  1. Usar el código de otras personas tanto como sea posible (código personalizado como responsabilidad)

La reutilización de código es una mejor práctica. El código usado se prueba. Por supuesto, debe usar código de buenas fuentes, que muchos mantienen y usan.

  1. Uso de idiomas cada vez más altos para mejorar la productividad.

La productividad no es mala per se, ¿verdad?

  1. "Herramientas" de desarrollo basadas en GUI que simplifican enormemente la "programación" y no requieren que la gente entienda la plomería detrás del código

Si la herramienta hace el trabajo: utilícela. Si no: rechazarlo. Si la promesa se cumple, y la gente realmente no necesita entender el código, ¡bien hecho! ¿Parece decir que esta es una promesa que no se cumple?

(Los números aquí se vuelven a procesar automáticamente incorrectamente. :))


El punto es que para ser efectivo, necesitas menos habilidad. No hay nada inherentemente malo en las "herramientas" de desarrollo basadas en GUI. Lo malo de ellos es que el uso repetido reduce el nivel de habilidad requerido para hacer lo que hacemos. Lo mismo ocurre con el uso del código de otras personas: eventualmente, comienzas a programar en la plataforma de Google. Finalmente, los lenguajes de nivel superior abstraen muchas sutilezas que, de nuevo, requieren habilidad. Nada de esto es malo desde el punto de vista de un empleador, gestión de proyectos. Sin embargo, me hace cuestionar el futuro de la profesión.
q303

Todo depende de tus requisitos. Cuando no necesito una técnica de clasificación de propósito especial para datos distribuidos específicamente, puedo usar perfectamente las bibliotecas con algún algoritmo de clasificación rápida. ¿Por qué debería aprenderlo antes de necesitarlo? Quizás necesito tiempo para aprender algo más: creación de fuentes, acceso a la base de datos, diseño de GUI ... - lo que sea. Es bueno tener habilidades, pero hay demasiadas habilidades que podrías tener. A veces es correcto decir: YAGNI.
Usuario desconocido

1

La programación visual no es menos válida o merece menos desprecio que la programación basada en texto.

Existen ciertos déficits y desafíos cuando se programa visualmente, pero la fontanería de componentes subyacentes es potencialmente peligrosa cuando se ignora y no está monopolizada por los componentes visuales y, lo que es más relevante, por los diseñadores visuales. Las tuberías subyacentes ignoradas son un riesgo para cualquier desarrollo.

Si tiene la oportunidad de probar Labview, puede ver el potencial (o incluso una variante especializada en el entorno Lego NXT). Si bien no carece de defectos o defectos, existen beneficios heredados. Ver es creer.


0

Las prácticas de programación no solo aumentan la productividad y reducen los costos para ciertos tipos de desarrollo (su carrera hacia el fondo), sino que también aumentan las capacidades de aplicación y las expectativas del cliente (fomentando así una carrera hacia la cima). Sea testigo de los bonos que Goole y Facebook están pagando para obtener los mejores tecnólogos.


0

No hay otra profesión que se ocupe de la ingeniería de la existencia que se esfuerce tanto por cambiar como la programación. Tan pronto como simplifica algo, simplemente abre una lata a nuevos problemas que generan nuevas ideas.

Por lo tanto, no estropearía los esfuerzos de otras personas para compartir código y soluciones a fin de ayudarnos a avanzar hacia nuevos desafíos, ideas y experiencias de usuario con las malas prácticas, los malos hábitos y los modales de los profesionales individuales sin humanismo.


-2

Si tomamos las prácticas de:

  • No tomarse el tiempo para implementar las mejores prácticas.
  • Usar el código de otras personas tanto como sea posible (código personalizado como responsabilidad)

WTF? ¿Querías decir que esta lista es inconsistente? Las listas deben venir del mismo lado para cada elemento en lugar de cambiar de un lado a otro sin previo aviso. Por lo tanto, su lista debería leer:

Si tomamos las prácticas de:

  • No tomarse el tiempo para implementar las mejores prácticas.
  • No usar el código de otras personas tanto como sea posible (código personalizado como responsabilidad)


1
@NoahRoberts: su edición cambia el significado del segundo punto de viñeta. Esta tampoco es una respuesta adecuada a la pregunta y debería haber sido un comentario.
Adam Lear

@ Anna - esto no fue una edición, por supuesto. Es por eso que no aparece como cambios en la pregunta original. ES una respuesta porque aborda una premisa defectuosa en la pregunta.
Edward Strange

¿Cuál es la premisa?
q303

3
@NoahRoberts: Es un poco extraño, pero creo que la lista es consistente en su significado: q303 está tomando "usar el código existente de otras personas en lugar de escribir código personalizado en la empresa" como un punto de apoyo en su argumento.
Adam Lear

@ q303 - Aparentemente, usar el código de otras personas tanto como sea posible es una mala práctica. Eso es lo que sacaría de tu lista de todos modos.
Edward Strange
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.