24 April 2017

Siempre me encantó la figura de Dijkstra, no tanto por sus famosos algoritmos si no por como entendía la que también es mi profesión. Fue un adelantado a su tiempo y muchas de sus teorías o ideas están totalmente de actualidad hoy en día. Tengo presente siempre una de sus famosas citas: “Computer Science is no more about computers than astronomy is about telescopes”.

Cuando dices que eres informático la gente automáticamente piensa en ordenadores, y después suele surgir alguna pregunta sobre que es mejor, si un equipo con más memoria o un procesador más potente, o si es mejor este o aquel programa o que si se acaba de comprar un portátil y la wifi de casa no se la pilla… yo la verdad es que no recuerdo haber estudiado nada en la facultad sobre la wifi o como testear programas para saber cual es mejor. Podría recuperar mis apuntes de tecnología de computadores y a lo mejor llegar a resolver en que punto la velocidad del procesador es más importante que la memoria o viceversa, pero lo cierto es que me interesa más bien poco. En todos esos aspectos soy un mero consumidor más y tengo casi la misma idea que cualquier otra persona que se compra un equipo.

Donde creo que sé algo, aunque tampoco mucho, es desarrollando software, como programador, desarrollador, arquitecto de software, ingeniero o artesano… incluso tomando literalmente la traducción del inglés, como científico computacional. La verdad es que es complicado definirse, igual por eso mucha gente acaba diciendo “soy informático” y listo, mucho más genérico.

Ingenieros vs Artesanos

Hoy en día cada vez está más de moda la palabra artesano, artesano de software. Esta denominación tiene mucho que ver con las metodologías ágiles, que tratan de evolucionar la manera de construir software, dejando de lado las planificaciones y fases encorsetadas de las metodologías clásicas. Normalmente se dice que esas metodologías clásicas y sus fases vienen del mundo de la ingeniería, pero que el desarrollo de software se tiene que parecer más a la artesanía, poniendo de relieve que lo importante es el artesano, la persona, sus conocimientos y sus habilidades y que el desarrollo de software no es algo que se pueda definir como la realización de unas fases específicas en un orden concreto y que eso sí o sí dará lugar al resultado final.

La palabra artesano la verdad es que queda muy bien no?, quiero decir, sin estar en desacuerdo en ciertas cuestiones que hay detrás, como la importancia de la habilidad de la persona por ejemplo, el tema de autocalificarse como artesano en parte tiene algo de moda o no?. Ser ingeniero ya no mola, ahora lo que mola es ser artesano. Pero si pensamos un poco en como trabaja un artesano, en realidad su trabajo tiene mucho de fases y de tareas repetitivas o no?. Entiendo que hay conceptos que se pueden asimilar al trabajo de un desarrollador de software, más hallá de que la habilidad es algo que marca mucho la calidad del trabajo, de que rara vez se hacen dos productos iguales, de que aunque las herramientas sean las mismas, hay variables que hacen que eso sea así, como la materia prima, el entorno, o incluso el estado de ánimo…

Sin embargo, me pregunto, yendo al otro extremo, por qué huir de la etiqueta de ingeniero? Realmente la definición de ingeniero se escapa tanto del desarrollo de software? Si vamos al diccionario y obviamos la primera definición de ingeniero, la cual me parece horrible y poco acertada, más de otra época aunque por desgracia coherente con la terrible “titulitis” de este país, y nos vamos a la segunda acepción, dice:

- Persona que discurre con ingenio las trazas y modos de conseguir o ejecutar algo.

Yo que queréis que os diga, pero me veo bastante reflejado en ella. Y es que yo siempre entendí la ingeniería como arreglar problemas, encontrar soluciones a problemas complejos, sea desarrollando software o creando algo que te los solucione. ¿Dónde pondríamos por ejemplo a Turing en todo esto?. No sólo son importantes las habilidades de los artesanos, también lo son las de los ingenieros, ¿acaso cualquier otra persona habría hecho lo mismo que el bueno de Alan o de cualquier otro ingeniero brillante sólo siguiendo unas fases?.

Es cierto que las metodologías clásicas se basan en conceptos que no tienen mucho sentido hoy en día, y que su aplicación ni mucho menos garantiza que se resuelva un problema, pero es que eso en realidad no es ingeniería. Entiendo también que a mucha gente, inevitablemente, el término ingeniería le está asociado a un título universitario y por tanto intente huir de él. Y no sin razón. Conozco a muchos buenos desarrolladores de software que no tienen ese título y que realmente saben hacer su trabajo, mucho mejor que otros que sí tienen un título. A ellos yo los llamaría ingenieros sin ningún problema, porque resuelven problemas con su ingenio y con sus habilidades, no con un título.

Y entonces… ¿qué somos?

Yo personalmente me defino y creo que me seguiré definiendo como desarrollador de software, porque creo que en realidad tengo parte de ingeniero y parte de artesano, ninguna de esas dos facetas me incomoda pero a la vez ninguna me define por completo. Ninguna de las dos son algo que no quiera ser, pero ninguna de las dos es todo lo que quiero ser.

Es curioso que el término “desarrollador” no aparece recogido en la RAE, a pesar que la definición de desarrollar recoge entre sus acepciones:

- -Realizar o llevar a cabo algo.

No parece haber una traducción directa del inglés software developer, incluso el término programador:

-- Persona que elabora programas de computadora.

A pesar de ser el que usa mi admirado Dijkstra para autodefinirse, creo que se queda corto, porque en realidad desarrollar o crear software tiene mucho más que programación.

Incluso hilando fino podríamos autodenominarnos artistas del software, ¿por qué no? al fin y al cabo el software está bajo la ley de propiedad intelectual, igual que cualquier otra obra musical, literaria, etc… de hecho la RAE recoge como artista:

-- Persona que hace algo con suma perfección.

Ah, para, no entonces no nos vale, porque todos sabemos que el software de perfecto no tiene nada.

Después de todo incluso que nos denominen informáticos tampoco tiene tanto de malo ¿no?. Lo que pasa es que es un término igual demasiado amplio y a nosotros gusta especializarnos, por eso hoy en día ya hablamos de frontend developer, backend developer, full-stack developer

En el fondo la nuestra es una profesión tan nueva que en realidad pasará tiempo antes de tener claro lo que somos o lo que no somos. Porque además es una profesión que todavía se está inventando a si misma, a un ritmo vertiginoso, y lo que hoy parece que es un gran avance mañana está obsoleto. Tratar de plantear metodologías, buscar nombres, etc… es algo que en realidad está bien en muchos aspectos. Dignificar la profesión, que no el título, darle la importancia que se merece a crear algo como el software que a día de hoy, seamos claro, controla nuestras vidas al completo y no podríamos vivir sin ello, por raro que parezca es una lucha todavía.

Sea como fuere, lo cierto es que el desarrollo de software no ha dejado de mejorar, no sólo por la aparición de nuevas tecnologías sino sobre todo por la manera de hacer las cosas. Que haya nuevas metodologías, nuevas y mejores formas de hacer las cosas, que se apoyen en manifiestos para que nos sintamos identificados con algo, nos motiven y las apliquemos es lo importante. Como nos definamos… bueno, al final, informático no suena tan mal tampoco ¿no?.

Share on twitter



blog comments powered by Disqus