Recortar costes en ingeniería de software

Reducir costes es una de las obsesiones de cualquier equipo directivo. La realidad es que en la gran mayoría de organizaciones, hay un gran margen de mejora, y la misma empresa puede disparar sus beneficios simplemente optimizando su gestión y sus procesos.
Hay, sin embargo, una estrategia bastante habitual en el mundo del software, que acumula fracaso tras fracaso y, sin embargo, continúa repitiéndose. Se trata de sustituir ingenieros de software y programadores, por otros con sueldo más bajo. Ya sea porque son más junior, o porque residen en un país donde el rango salarial es más bajo.
El plan sobre el papel es sencillo: despido de gran cantidad de ingenieros senior, contratación del mismo número o más alto de nuevos ingenieros con sueldo más bajo, curva de aprendizaje de aproximadamente 6 meses, ¡resultado: costes optimizados! Hay variaciones de esta estrategia, como un periodo de solape entre las nuevas incorporaciones y los ingenieros originales, para la realización de la transferencia de conocimiento.
En sectores con requerimientos bajos de calidad, tiempo de entrega, o productos con poca complejidad, sin duda puede funcionar. El problema es que estos escenarios no son la norma, a pesar de que en muchos casos pueda parecerlo. Normalmente la situación es que la empresa en cuestión, que se dedica al mundo del software, no tiene ningún activo como almacenes, maquinaria, vehículos, etc. Su única riqueza son sus empleados, es decir: sin esos empleados, no hay empresa.
La ingeniería de software no es tan sencilla como pueda parecer, y las curvas de aprendizaje no son de meses, sino de años. Una nueva incorporación tardará años en alcanzar el nivel del ingeniero senior despedido, en caso de que llegue a conseguirlo algún día. El EBITDA se disparará durante unos pocos años, pero cada vez costará más conseguir clientes nuevos, y mantener a los actuales. Los ingenieros que se contrataron, normalmente dejarán la empresa a no ser que se les suba el sueldo (con lo cual volvemos a estar en la situación inicial), y aunque se mantuvieran y hubieran alcanzado un buen nivel, los 3-4 años durante los cuales una masa de programadores sin el conocimiento suficiente ha estado manipulando el producto, lo han convertido en un monstruo inmantenible. Cualquier modificación supone un esfuerzo y un riesgo titánico. El número de bugs es altísimo, resolverlos carísimo, ya que el código no está estructurado (¿os suena el término spaghetti code?), con centenares o miles de pequeños parches que lo hacen todavía más inestable. Por supuesto, no vamos ni a hablar de evolucionar a nuevas tecnologías o a conversiones, a pesar de que son un requisito para cualquier producto que quiera sobrevivir en el long term en el mundo del software.
Dejadme mencionar también que en este hilo temporal suele ser bastante habitual realizar ofertas altísimas a ex-empleados despedidos para intentar solucionar la situación.
Simplemente añadir cualquier funcionalidad va a resultar carísimo, arreglar la existente prácticamente imposible, y seguir las últimas tendencias una utopía. El goteo de clientes que abandonan se irá convirtiendo en un chorro. Después de un periodo de 3-4 años con números financieros espectaculares, el riesgo de empezar a caer en el abismo es altísimo.
El manual de optimización de empresas de software incluye sin duda este capítulo sobre recortar gastos en personal, pero el número de empresas a los que realmente beneficia es realmente pequeño. Un objetivo estratégico de una empresa de software debe ser siempre retener el talento, y en este sector es particularmente delicado el departamento de ingeniería o R&D. No os dejéis engañar, no hay mejor manera de recortar gastos en ingeniería que tener un equipo sobresaliente.

