Este es un proyecto cancelado que no recibe actualizaciones. No obstante, puedes acceder a su archivo como referencia.

Versión Cero

¿Sobramos los Programadores?

Juanjo Navarro

¿Se puede programar sin programadores? ¿Sobramos los programadores? La respuesta es sencilla. Y está en este artículo.

por Juanjo Navarro, 27 junio 05

Hace tiempo corrió por la Internet hispana la noticia de que una empresa española había desarrollado un software que permitía crear programas sin necesidad de programadores, sin necesidad de tirar una sola línea de código.

Todos los ingredientes espectaculares estaban allí: ¡Una empresa había solucionado la crisis del software! ¡Y Española! Naturalmente la noticia saltó a los mass media (prensa, televisión).

En aquella ocasión, el diario El País publicó un artículo que firmaba Adolfo Estadella. Adolfo se puso en contacto conmigo para que le diese mi opinión sobre el tema. En el artículo salía publicado:

Juanjo Navarro, que lleva 15 años programando, se muestra escéptico con este tipo de sistemas, aunque reconoce que ayudan al programador, “pero desde luego no eliminan su necesidad”.

En el desarrollo de software un diseñador realiza el diseño de alto nivel del programa y un programador toma este diseño de alto nivel y lo convierte en código fuente de un lenguaje de programación. Lo importante aquí es que ese diseño de alto nivel no es completo en absoluto y por su propia naturaleza está lleno de ambigüedades. Estas ambigüedades deben ser resueltas por el programador al convertirlo en código fuente de un lenguaje de programación. Un diseñador hace un caso de uso en el que se ve un muñegote que representa al usuario eligiendo items y comprando:

Caso de Uso

Y un programador coge ese dibujo y lo convierte en 2.000 líneas de código.

Por lo tanto: ¿Se puede programar sin programadores? ¿Sobramos los programadores? La respuesta es sencilla: “Sí, haciendo que el diseñador resuelva todas las ambigüedades en su diseño conceptual”. Claro que entonces se seguirá programando, es sólo que entonces le llamaremos “diseñar”. Pero el trabajo seguirá siendo el mismo: especificar hasta el último punto a un ordenador lo que tiene que hacer.

Volviendo sobre el caso de aquella empresa que decía al principio del artículo, ¿alguien ha oído algo más sobre dicha empresa? ¿cuantos programas creados con aquel software utilizáis a diario? Estoy seguro de que el software de dicha empresa tiene un cierto valor para los programadores. Conozco a la persona al mando de dicho software, Oscar Pastor, profesor de la Universidad de Valencia y alguien muy serio y con una gran formación científica y técnica. Es sólo que lo que se anunciaba entonces, la programación sin programación, es imposible. Lo único que se puede hacer es llevar más atrás en el ciclo de desarrollo del software la especificación detallada del algoritmo y esperar que ello aumenté la productividad del programador. Y francamente, reto a cualquiera a intentar realizar la especificación de un algoritmo (por ejemplo, el algoritmo de ordenación de la burbuja) mediante UML en menos tiempo del que un programador lo hace en su lenguaje favorito.

Para determinadas tareas, la programación es ya la forma más óptima de trabajo.

Comentarios
1 marzembre
27 junio 2005, 09:12

De acuerdo con que un programa no podrá hacer nunca todo el trabajo que hace un programador, pero muchas de las cosas que hoy hace un programador se pueden automatizar. Cualquiera que lleve programando un tiempo es consciente de la cantidad de trabajo repetitivo que se hace.

Esta automatización es posible a partir de una descripción hecha a un nivel más alto de abstracción (con UML y/o otros lenguajes). Y esto tiene muchas ventajas no es sólo cuestion de tiempo (en java lo hago más rápido que en UML, ..., quizás sea porque trabajas normalmente en java, y además piensas en java), las ventajas de todo esto son: reutilización, independencia de la tecnología (lenguaje, SO, ..), facilidad de mantenimiento, portabilidad, costes, ...

Queda mucho por hacer en esto, pero échale un vistazo a MDA, la propuesta de OMG.

Los programadores no van a desparecer, pero creo que llegarán herramientas que cambiarán mucho la forma de desarrollar software. Menos picar código y más análisis y diseño.
2 Guti
27 junio 2005, 09:49

Es la consecuencia de precios abusibos, tomaduras de pelo, programadores incapacitados, y jefes de proyecto que no saben organizarse.
3 Cesar Tardaguila
27 junio 2005, 11:42

Me temo ( bueno, en realidad no me lo temo ) que los programadores vamos a seguir siendo necesarios durante mucho tiempo todavía. Sobre todo por una razón: no hay diseño que pueda especificar hasta el último detalle del desarrollo de un proyecto. Y si lo hay, no va a ser válido.

No es por dar la charla sobre el Extreme Programming ( que tampoco es la panacea, por supuesto ), pero si algo nos ha enseñado esa metodología es que podemos evitar muchos de los problemas que traía consigo el desarrollo en cascada, algo a lo que se parece mucho lo que comentas.

Yo, desde luego, no me siento capaz de preveer todas las complicaciones y modificaciones que va a necesitar el desarrollo de un proyecto a priori. Dicho de otra forma, un buen diseño siempre va a tener un componente de “idealidad”, que no va a tener el desarrollo real. Por tanto, un buen diseño se complementará con un buen desarrollo, y no creo que pueda sustituir a éste.

Eso no quita para que haya, efectivamente, muchas tareas que pueden automatizarse, utilziando generadores de código, herramientas de modelado, etc.
4 Pau Iglesias
27 junio 2005, 19:00

En su día me enteré de la noticia de OlivaNova y de Care Tech, y me pareció muy sensacionalista la forma de presentar el producto.

No he probado la herramienta, pero la sensación que me da es la misma que describe Juanjo: que se desplaza la complejidad del algoritmo a un lenguaje visual, UML o cualquier derivado, que no deja de ser otro lenguaje, por cierto, y la complejidad sigue ahí, solo que con dibujos y flechas. O sea que se sigue programando.

Otro punto es que, si no recuerdo mal, esta herramienta no era capaz de cubrir el aspecto de la interfaz de usuario, y esta debía seguir implementándose “a mano”.

Así que, en resumidas cuentas, cambio la pregunta de ¿Sobran los programadores? por ¿para qué esta herramienta?
5 Oscar
27 junio 2005, 19:39

Por poner un paralelismo… ¿sobran los agricultores?. Es cierto que hay maquinas que hacen que los cultivos sean mejores, pero quien al fin y al cabo posee y labra las tierras, quien recoge su fruto?. Acercandonos al mundo del programador: es cierto que con entornos RAD como Visual Basic hemos avanzado el productividad, y que los compiladores compilan el codigo más eficientemente de lo que una persona pudiera hacerlo; sin embargo el saber como programar (donde poner un bucle, donde una condición anidada o compuesta, crear una clase con ciertos metodos públicos o hacerlo derivando, etc) solo lo puede hacer la inteligencia de un programador y si es con experiencia, motivación y abición, mejor. Como colofón yo pongo otro reto a ver si alguien puede expresarlo en UML o cualquier otra cosa que no sea codigo: un virus informático.
6 Juanjo Navarro
27 junio 2005, 21:11

Efectivamente lo que yo trato de decir en mi artículo es lo que muchos han señalado por aquí: La verdadera labor del programador, que es especificar el problema en un lenguaje entendible por la máquina, no parece que vaya a desaparecer.

Y es claro que los sistemas evolucionarán y muchas de las cosas que ahora se hacen en java o c# se podrán realizar más adelante con un diagramador.

Yo soy un firme defensor de los procesos de modelado y de la utilidad de UML como herramienta de trabajo, pero no se hasta qué punto puede ser una buena herramienta cuando se llega al momento de especificar la algoritmia de un programa.

Un saludo.
7 Sergio Montoro Ten
27 junio 2005, 23:03

Es una ley informacional bien conocida, que la complejida de un sistema sólo puede reducirse hasta un punto, a partir del cual lo único que se hace al tratar de ocultarla es esparcirla por los subsistemas.

Un ejemplo de ello puede ser XForms, donde para eliminar la tonelada de JavaScript cliente que hay que poner en cualquier formulario, los del W3C han introducido una cacharrada XML que es aún más complicada.

Lo que sí creo es que los lenguajes actuales tienen mucho que mejorar, ya que se hace cienes y cienes de veces lo mismo a base de copy/paste avanzado.

¿Alguien se acuerda de cuando los lenguajes no traían estructuras de datos en las librerías y había que comprarlas o hacérselas uno mismo?
8 Joaquín
27 junio 2005, 23:20

Por supuesto, también estoy de acuerdo con Juanjo y con los demás en que los programadores no van a desaparecer; como mucho, se les cambiará el nombre.

Por cierto, que hay gente que afirma que el código es el diseño con lo que “diseñar” y “programar” son la misma cosa.

Eso sí, nadie niega que hay cosas que se pueden automatizar. En ese sentido, a mí el refactoring automático me parece de las herramientas más útiles para programadores que se han inventado en los últimos años.
9 martin
28 junio 2005, 10:13

Juanjo nos plantea dos preguntas. Aquí van mis respuestas:

¿Sobran los programadores? : No.

¿Se puede programar sin programadores? : Sí.

La primera de las preguntas ya la habéis elaborado y estoy absolutamente de acuerdo. Los programadores siempre se necesitarán, igual que se necesitan otros oficios.

Ahora bien, ¿se puede programar sin programadores? Pues, sí, en algunos casos si que se puede. De hecho, los programadores tendemos tenedencia para automatizar nuestro trabajo. ¿Un ejemplo?: textpattern. Un sistema para crear portales de contenidos sin que sea necesario progarmar. Ejemplo de textpattern: versioncero.com :-)
10 elmaska
28 junio 2005, 19:33

Yo me uno a martin y voy a intentar aportar mi granito de arena.
1.- ¿Sobran los programadores?: NO (siempre desde mi punto de vista). Un “programador” es un rara avis que entre otras muchas virtudes tiene la de saber pasar del mundo del lenguaje hablado a algo que una máquina puede llegar a procesar. Desde ese punto de vista, creo que a medio plazo (y si me apuráis a largo plazo) no sobrarán. Quizá los que sobren son todas esas ramas de la taxonomía que en otro artículo estuvimos debatiendo (lease el articulo de Sergio Montoro ¿Importa programar bien?).

2.- ¿Sobramos los programadores?. Una vez más teniendo en cuenta mi propio y personal concepto de “programador” creo que NO sobran ni sobrarán. Otra cuestión distinta es que el trabajo de estos señores pueda ser mas o menos automatizado (me gusta más la palabra “asistido”) de forma que la capacidad de éstos pueda dedicarse a labores más “nobles” y no a escribir tediosas estructuras de datos o secuencias de comandos.

Me gustaría añadir como argumento que ya en sus tiempos (más de 20 años que yo sepa y que conste que me considero “joven aunque sobradamente preparado”) las herramientas CASE empezaron a promulgar estas máximas sin que vea yo que un buen programador tenga que ponerse a hacer pizzas (o cualquier otra remarcable labor ajena a su preparación) por mor de éstas quimeras del software (burbujas tecnológicas aparte y también excluyendo otros factores que si queréis podemos hablar de ellos cuando surga el artículo apropiado).

Por cierto, este articulo de Juanjo Navarro viene muy al hilo de otro (creo que también suyo). Volveré a insistir que todas estas ayudas o asistencias a las labores de desarrollo no tienen sentido alguno si no existe un “medio superior” (si ya se que se dice un “fin superior” pero no viene al caso) como la palabra maldita (para algunos claro): METODOLOGIA.
11 elmaska
28 junio 2005, 19:35

Evidentemente en mi anterior post hubo un “leve error”. El punto 2, pretendía argumentar que NO se puede prescindir de los programadores (en su concepto amplio).
12 jordi
28 junio 2005, 20:29

de todas maneras, el uso de librerias de programación, patrones, reaprovechamiento de código, ... Puede hacer que un proyecto que hace tiempo requeria 10 programadores, actualmente se haga con 6
13 Joaquín
28 junio 2005, 23:10

Sí, jordi, pero ahora se pide que los proyectos hagan 1000 cosas más que hace tiempo :-)
14 Antonio Ortiz
29 junio 2005, 22:23

Uf, soy muy muy escéptico respecto a este tema. Trabajando en los entornos que trabajo, la verdad es que se me antoja una quimera…
15 Juanjo Navarro
29 junio 2005, 22:51

¿Y qué entorno es ese, Antonio?
16 Oscar
30 junio 2005, 16:05

Mi opinion es que el concepto del programador esta evolucionado. El programador de los 60 no es el mismo del 2000. La herramientas de desarrollo de apoyo han evolucionado (RAD).
Yo estoy a la espera de no llenarme de codigos para programar, sino utilizar modulos u objetos a los cuales les de unos input y obtenga unos output esperados, pero que sea sencillo su utilizacion en un lenguaje natural. Creo que hacia eso vamos.
17 Alberto Molpeceres
30 junio 2005, 20:41

No se chicos, ya lo habeis comentado, pero obviamente los programadores no van a desaparecer, como mucho sus labores será otras (usar programas mágicos como el mencionado quizás) o estarán en nómina del usuario del programa (en lugar de en una tecnológica tercera) o la cantidad de trabajo variará. Es algo similar a la evolución que hemos vivido ya desde los años 60. Sin más.

La tecnología está aquí para quedarse, y mal que les pese a algunos, para casi todos es o bien una ventaja competitiva o un mal necesario, de forma que alguién tendrá que seguir “programándola�.

Se ha comentado por ahí arriba que esta “desaparición� de deberá a precios abusivos, tomaduras de pelo, incapacidades, etc. Lo de precios me lo tengo que pensar viendo los precios de fontaneros y del mecánico de mi coche, pero con las otras dos estoy bastante de acuerdo, así como por la incapacidad de establecer una comunicación y una relación de confianza entre los informáticos y los clientes.

Al respecto (y a la noticia de la brecha tecnológica de hace un par de días) hay un post interesante en ArialBlack.
http://www.arialblack.com/blog/2005/06/30/el-interprete-tecnologico-un-nuevo-perfil-profesional/
18 Sergio Montoro Ten
1 julio 2005, 13:13

Ayer estuve leyendo un concepto interesante en un viejo libro titulado The Psychology of Computer Programming
El autor argumenta que apenas un 20% del código de cualquier programa está destinado a cumplir la misión encomendada por las especificaciones.
El resto del código es paja que hay que añadir para que el invento funcione.
También dice que programar es un proceso de aprendizaje progresivo sobre lo que tiene que hacer el programa.
Por consiguiente, mientras haga falta el otro 80% y mientras programar implique aprender sobre la marcha, harán falta programadores.
19 Fernando
2 julio 2005, 15:43

Lo que no dicen es que no pueden desarrollar cualquier aplicación que se les plantee, sino sólo aquellas de gestión para las que se han especializado.

Lo que quiero decir es que no saquéis las cosas de sitio. Con la tecnología de Care tú no puedes programar un plug-in de wordpress, por ejemplo, en base a 3 diagramas y 2 líneas de pseudocódigo de ese que usan. Pero sí que puedes hacer una aplicación de gestión (alta/baja/modificación usuarios, facturas, pedidos, y demás).
20 Esteban
6 julio 2005, 22:10

“Cuando solo haya sistemas que hacen sistemas automaticamente, el hombre estara libre para pensar cosas mas complejas… es como hacer una escalera para mirar el horizonte”...
Acerca - Contacto - Información legal y técnica - Condiciones de uso - Noticias sobre el mundo del Desarrollo de Software.