Tinselcity

DRAFT / WiP

Lo que sigue es una generalización, por supuesto. Lo admito sin discusión. Eso sí, por lo menos intenta ser una generalización diferente, una que como mínimo refleje la realidad y no sea la fantasía idealizada de la que otros escriben.

La Industria del Software

Me encanta ser desarrollador de software1). Cuando digo esto no pongo muchas restricciones. Me gusta la gran mayoría de lo que significa. No huyo de tratar con los usuarios, de considerar los aspectos económicos, o de prestar atención a temas como el diseño, la experiencia de usuario, las pruebas, escribir documentación, etc. Es decir, que aunque soy capaz de apreciar aspectos que algunos considerarían muy técnicos, o que quizá algunos otros podrían describir como cosas de esas de programadores, el tiempo me ha llevado a entender el desarrollo de software como algo que necesita de muchas actividades diferentes y que todas tienen su importancia2).

Es más, aunque no tengo especial cariño a ciertas metodologías y prácticas de gestión que están ahora de moda, sé perfectamente que también la gestión es una parte necesaria del proceso. Dicho de otro modo, no, no creo en absoluto que el desarrollo de software sea algo que se centre únicamente en el código y ya está del resto nos olvidamos. No creo que así se obtenga -salvo casos extraordinariamente especiales- un buen resultado.

Explico esto porque es quiero que sirva como la base sobre la que debe entenderse todo lo que viene a continuación, de modo que si en un momento dado parece que critico a algún grupo concreto, se entienda que no es una crítica a esa parte de la actividad, sino a lo comportamientos que describa.

Actividad, Oficio, Profesión, Industria

Conviene también establecer algunos conceptos para que no se confundan. El desarrollo de software, en general, puede tratarse de varias formas diferentes.

Por un lado encontramos la actividad en sí misma. Describir las actividades del desarrollo de software simplemente las describe como lo que son. Es decir, hablar de la actividad de, por ejemplo, escribir el código o de la gestión de incidencias, tan solo significa establecer qué son. Ni cómo se realizan, ni quién las realiza, ni si una forma de realizarlas es mejor o peor en ciertas condiciones.

Hablar del oficio de desarrollar software es centrarnos en los aspectos -en cierto modo- más artesanales o “manuales”. Se trata de una perspectiva del desarrollo que se enfoca mucho más en las tareas individuales de cada persona. Esto implica que se consideran mucho más aspectos personales, como la habilidad (el “talento”) o los gustos y preferencias personales.

En cierto contraste con lo anterior, si hablamos de profesión estamos asumiendo generalmente una carrera. Hablamos probablemente de una formación más académica3) y, con seguridad, hablamos de una dedicación o implicación que trata de trabajar de un modo más estandarizado o más organizado, habitualmente en equipo(s) y, habitualmente, estableciendo prácticas y criterios generales y comunes que van más allá de las cualidades y gustos personales.

Por último, si hablamos de industria nos referimos a todo el conjunto de la actividad profesional. Hablamos de la comunidad que se forma con esas prácticas y criterios comunes, pero también hablamos del negocio en general de la producción de software. Hablamos del conjunto de empresas y profesionales que trabajan en y alrededor del desarrollo de software, aunque sus actividades profesionales puedan estar más o menos relacionadas con este. Es decir, una persona que trabaja, por ejemplo, en un departamento de contabilidad de una empresa de software, trabaja en la industria pero su actividad probablemente tiene poca relación con el desarrollo.

Hay que tener muy claro también que ninguna de estos conceptos pretenden producir conflicto o enfrentamiento entre unas partes y otras. Nadie está diciendo que ser desarrollador profesional sea mejor ni peor que alguien que lo hace como oficio o incluso por afición. Pensar este tipo de comparaciones no solo es mezquino sino que denota una clara falta de comprensión del concepto: Todo esto son diferentes perspectivas. Una misma persona, una misma actividad, la contemplaremos desde varios puntos de vista.

Transformación

Todo cambia, ya lo sabemos. La historia del desarrollo de software, sin embargo, es aún demasiado corta como para poder apreciar fácilmente cómo evoluciona o hacia dónde.

Hay, por supuesto, intentos de describir esta “historia”. Wikipedia recoge algunos, como por ejemplo esta "historia del software", esta otra "historia de la ingeniería del software", varias cronologías de lenguajes de programación, de compiladores, de computación científica u otras múltiples cronologías de varios aspectos relacionados con el software. Otros -no hay más que usar un buscador- han hecho múltiples cronologías, diagramas e “infografías” sobre software, programación, metodologías de gestión, y un largo etcétera.

Yo no voy ni siquiera a intentar hacer algo así.

Sí quiero, sin embargo, señalar que, como en cualquier otra actividad con aplicación profesional el proceso tiende a pasar por unas mismas fases y transformaciones. Estas no siempre se producen de forma natural. Existe una necesidad -social, económica, industrial- de hacer que el desarrollo de software encaje dentro de unos determinados criterios. Costes, productividad, estándares, regularizaciones, responsabilidades, normas, etc. Si lo pensamos esto es lo mismo que ocurre en cualquier otro caso. Cualquier actividad susceptible de ser comercializada o aplicada socialmente, requiere una cierta adaptación para su aceptación. Podemos hacer pan en casa, pintar las paredes, arreglar nuestro coche o tallar pequeñas figuras de aviones. Todo esto no tiene más implicación mientras es algo personal o poco más, pero si nos dedicamos a vender pan, si ofrecemos nuestros servicios a un tercero para pintar una casa por dinero, si llevamos el coche a un taller o si vendemos nuestras figuritas, entonces por un lado necesitaremos nosotros asegurarnos de que lo hacemos en una cierta manera (por ejemplo, que cobramos un precio adecuado para tener beneficio y para resultar más atractivos que la posible competencia) y además -con el tiempo y la intervención de la sociedad en conjunto- terminaremos teniendo que cumplir unos ciertos criterios (por ejemplo, que cumplimos unos requisitos de higiene en nuestro horno, o que damos unas ciertas garantías sobre nuestros productos).

Esto, como digo, es una transformación que antes o después termina ocurriendo y como esta hay más. No se trata solo de lo que podríamos llamar “profesionalización” de la actividad, el cambio en que pasamos de hacer X privadamente y lo empezamos a hacer de forma social o comercial. Con el tiempo, se irán produciendo avances y situaciones que producen cambios en la actividad. Se descubre una nueva forma de hacer algo que supone un ahorro económico o que es más saludable o produce mayor calidad o… Estas cosas cambian cómo realizamos la actividad. Es un proceso indiscutible.

Tipos de Cambios

Un detalle que es interesante señalar es que no todos los cambios tienen el mismo alcance o las mismas consecuencias. A veces, un cambio muy específico puede tener un gran interés y ser adoptado muy rápidamente por la industria -por ejemplo, un cambio técnico- porque tiene un beneficio claro, pero su alcance es específico y no tiene grandes consecuencias sobre el proceso o la actividad en general.

En la industria del software, ocurren muchos cambios técnicos. Tantos que a veces es un tema frecuente en algunos círculos. La gente discute sobre lo rápido que parece cambiar todo y si es bueno o malo, o sobre el esfuerzo que les supone, etc. Y es habitual también que alguien señale la realidad: que esos cambios no son cambios fundamentales, que hoy está “de moda” usar cierta herramienta o aplicar cierta metodología o técnica, pero que luego cambiará.

Los cambios que tienen efectos más duraderos no suelen comentarse tanto. Primero porque suelen ser menos inmediatos. No “se ponen de moda” de pronto sino que tardan más tiempo en tener efecto. Van ocurriendo poco a poco. En segundo lugar porque la mayoría de veces no son cambios tan técnicos sino que son de otro carácter. Sociales, organizativos, económicos… Para muchos no solo pasan desapercibidos por ser más lentos sino también por estar fuera de su foco de visión. A veces ocurren también cambios de este tipo más fundamental y más relevante que sí que son técnicos, pero entonces igualmente tienden a ocurrir mucho más despacio.

Son estos segundos, los cambios más lentos y duraderos, los que tienen mayor relevancia para la industria en general, obviamente.

Simbiontes y Parásitos; Palas y Palos

Cuando un ecosistema tiene recursos y futuro, suele atraer seres del exterior que vienen buscando aprovechar algunos de esos recursos. En un contexto profesional, muchas veces se pone el ejemplo de los vendedores de palas en la “fiebre del oro” alaskeña. Suele comentarse con una implicación concreta: que “en la fiebre del oro los que se hicieron ricos eran los que vendían palas”.

Pero a mi no me interesa tanto esa suposición cuanto otros dos detalles más interesantes.

Por un lado la idea de que, sea quien sea quien “se haga rico”, la relación de los vendedores de palas con los buscadores de oro es de simbiosis. Más o menos equilibrada, pero simbiosis al fin y al cabo. Las herramientas y suministros en general son una necesidad para los buscadores y los vendedores cubren esa necesidad. Dejando a un lado casos abusivos, a ambos les interesa la presencia del otro.

Por otro lado la existencia de un tercer grupo: todos esos charlatanes, timadores, esa especie de zahoríes o rabdomantes4), y pícaros en general que van con su palo “detectando” oro, o con su “antiguo mapa indígena”, o con cualquier otro artefacto o poder, vendiendo falsas esperanzas. Es interesante considerarlos porque estos representan una relación claramente parasitaria.

La industria del desarrollo de software tiene algunas características comunes con la fiebre del oro. Por una parte, presenta la promesa de grandes beneficios potenciales, por otro está abierta a cualquiera. O por lo menos esto es lo que han venido vendiendo ciertas voces. El hecho de que esas voces tengan intereses en presentarlo así… bueno, lo dejaremos por ahora.

Se presenta el trabajo de desarrollador como abundante, con un supuesto “0% de paro”, donde los programadores eligen dónde trabajar porque las empresas se los rifan. Se presenta también la opción de “montar tu propia empresa” con muy poco esfuerzo; si tienes una idea y eres bueno desarrollándola, puedes crear el nuevo Google5), ser el nuevo multimillonario que salió de un garaje. También se publicita mucho la idea de que cualquiera puede ser un buen desarrollador y acceder a todas esas posibilidades con un simple curso intensivo. Lo que necesitas saber de programación son dos tardes.

Con esta imagen en la cabeza acuden muchos futuros buscadores de oro… programadores, más o menos ambiciosos, se encuentran las dificultades de la realidad6) y entonces es cuando también acuden los charlatanes.

El Ecosistema de la Industria

Como decía al principio, aunque el foco principal de la industria del desarrollo de software sea ese, el desarrollo de software, se hacen necesarias otras muchas actividades. Necesitamos a los vendedores de palas.

Necesitamos una gestión comercial, necesitamos formación, gestión de la contratación… En general, todos los tipos de gestión que necesita cualquier otra profesión. Y como en otras muchas, se hace necesario también, de forma relevante, alguna forma de gestión de los procesos de producción.

Sin embargo, muchas de estas son áreas aún sin solucionar correctamente. La formación y la contratación, por ejemplo, en muchos casos se plantean de formas contradictorias dentro de la industria. Por un lado se establece la idea que basta una formación muy básica, que cualquiera puede formarse en poco tiempo. Por otro, la contratación demanda profesionales con conocimientos muy sólidos, a veces especializados, y con experiencia demostrable. Y como no sabemos aún cómo evaluar la capacidad de un candidato, unos exigen pruebas que requieren 20-40 horas de trabajo, otros se fían de su instinto o realizan tests que no guardan relación alguna con el trabajo a realizar.

La situación es entonces una de experimentación. Se intentan nuevas ideas. Se fracasa. Se prueban otras nuevas. Y en medio de ese proceso de experimentación, es donde ciertos grupos -generalmente parasitarios- han ido introduciendo cambios y transformaciones culturales en la industria.

Algunas de las transformaciones más relevantes y a la vez perniciosas, pueden ser:

  • La creación de toda una industria paralela de alquiler de personas. Lo que algunos siguen llamando “consultoría” y no es más que ligeras variaciones sobre un parasitismo basado en riesgos contractuales, a costa de la reducción del trabajo del programador a una caracterización de operario, con una actividad principalmente mecánica.
  • La creación de un completo enjambre de gestión informal de los procesos donde no hay realmente más criterio ni preparación que los propios títulos que se dan a sí mismos. Desde cosas ya habituales como “coach” o “scrum master”, a otras más pintorescas como “happiness officer” o “gurú”. Funcionan la mayoría de ellas sobre la base de coger unos bienintencionados “principios” e inventarse alguna metodología de proceso que puede o no, seguir esos principios.
  • La promoción a puestos de control y gestión, y la ascensión a la consideración de “guías de la comunidad y la industria”, de aquellos que mejor se saben vender y promocionar a sí mismos, antes que el reconocimiento de la auténtica capacidad técnica. Es particularmente vergonzoso que tantos programadores participen voluntariamente en la farsa de conferencias y convenciones en las que cualquiera cuenta cualquier historia y se le encumbra como a alguien importante.7)
  • La aceptación -tristemente promovida por muchos desarrolladores- de una imagen del desarrollo de software basada en la chapuza, el apaño y la falta de responsabilidad. Se asume que los errores son normales y comunes, que no se deben estimar costes ni tiempos, que es incluso “gracioso” presentar así la profesión. Lo que originalmente eran retratos paródicos se vuelven reflejos de la realidad que se aceptan como naturales.
  • El paso hacia una profesión de operarios de código está siendo acompañado por un evidente rechazo a la madurez y la experiencia, y por una preferencia por una formación que resulta escasa y pobre. Hay tímidos movimientos de “mentoría y aprendizaje”, pero demasiadas veces son guiados por gente que difícilmente podemos clasificar como maestros. “It's the blind leading the blind”, que decía alguna canción.

Futuros y Desvaríos

Tengo claro que mi percepción del mundo en este momento es muy probable que no se ajuste a la realidad, que las circunstancias me impidan ver ciertas oportunidades y posibles futuros, que -por evitar rodeos- esté siendo pesimista. O incluso que realmente haya perdido el contacto con la realidad y lo que veo sean solo delirios y distorsiones.

Aún así, esto como esta es mi página diré lo que me salga de las narices.

Creo que el futuro que nos espera no deja mucho espacio para la alegría. Creo que la transformación del desarrollo de software en un trabajo “de baja cualificación” se está completando y esto implicará en breve una serie de cambios claros.

Por una parte habrá un importante descenso de programadores con una aproximación vocacional a la industria. Aunque seguirán presentes quienes eligen la carrera de esta forma, para la mayoría esto será como cualquier otro trabajo de cualificación baja-media. Un sueldo más o menos estable, pero que dejará de ser más alto que otros de similar cualificación.

Continuará

1)
programador, como queráis llamarlo
2)
Como, por otra parte, ocurre en la mayoría de profesiones, claro
3)
que no tiene por qué implicar un determinado “título”, ojo
4)
¿Cómo se llaman a los equivalentes que en lugar de agua “detectan” oro? ¿Tienen algún nombre concreto más allá de charlatanes?
5)
Oooooh!!
6)
propias de cualquier profesión; nada especial
7)
Nota: Aprecio mucho aquellos que dan charlas realmente técnicas e interesantes, pero me resulta cada vez más triste ver cómo se han convertido en una especie de show business ciertas conferencias y cómo algunos viajan por ahí como conferenciantes reputados cuando no tienen apenas ninguna experiencia ni nada que contar.