¿Invertir en mejorar el software o sacar a producción?

Sobre todo cuando somos una empresa orientada a sacar un producto software, tenemos la gran presión de querer sacar software que satisfaga las necesidades de nuestros clientes/usuarios. E implementar el mayor número de funcionalidades que éstos nos pidan.
Esto es así. Si los clientes no están contentos, si no les damos lo que quieren, podemos perderlos. Puede que no nos contraten, y al final perdamos dinero.
Si no hay dinero, no podremos invertir en la empresa y no podremos pagar a los empleados (la realidad es mucho más compleja que esto, pero quería ponerme drástica y resumir un poco).
Cuanto más software saquemos que satisfaga lo que quiere el usuario, más ganará la empresa y más podremos invertir en nuestras necesidades.
La gente quiere caramelos. Cuantos más caramelos produzcas más caramelos comprará la gente y más ganarás.
Por lo tanto sacar a producción software equivale a generar más dinero, y solo tenemos que centrarnos en seguir este camino, ¿no?
Pero como directivo te encuentras que el software no es como hacer caramelos. Es complejo, es algo intelectual.
Y si el software es complejo, las personas que lo desarrollan, nosotros, lo somos muchísimo más.
Te das cuenta de que el buen ritmo al que pasabais a producción al principio, ya no es igual. La tecnología cambia continuamente y os empezáis a quedar obsoletos.
Lo que ahora es innovador y bueno, dentro de poco tiempo ya no servirá.
¿La gente se va de tu empresa? ¿No está motivada?

¿Qué está pasando?

Un mercado cambiante y rápido, necesita empresas que se adapten rápido. La gente tiene que evolucionar y mejorar. No quedarnos obsoletos. Aprender nuevas tecnologías. No hacer siempre lo mismo.
Hay desarrolladores con muchas inquietudes que no quieren estancarse en una empresa en la que no pueden aprender, mejorar, donde ven que su carrera profesional en esa empresa no tiene perspectivas de futuro, que están frustrados porque quieren hacer mejor las cosas y por presión de tiempos no pueden. Y se van a otras empresas.
Pensemos una cosa. El núcleo de tu negocio son tus clientes. Pero también tu gente. Sin clientes no existe tu empresa, pero sin un buen equipo no tienes nada que dar a tus clientes.
Por otra parte, en general en tu vida, en tu empresa ¿qué es mejor? ¿Centrarte exclusivamente en una estrategia a corto plazo? ¿O solo a largo plazo?
Imagina que tu empresa tiene un problema financiero muy grande. Probablemente ahora no sea una buena idea trabajar en una estrategia de aquí a 1 año, y sea más importante una a corto plazo. ¿Pero y si sale de la quiebra a corto plazo? ¿Qué pasará el año que viene si solo pensasteis a corto plazo? ¿Otra quiebra?
Piensa ese paso a producción de esta semana, esas cosas que quiere el cliente para ya, que son tan tan importantes como una estrategia a corto plazo.
Y esa mejora de tu software, de tus procesos, fomentar que la gente mejore, se actualice, aprenda como una estrategia a largo plazo.
No puedes vivir sin las dos cosas. Pero…el tiempo el limitado, y parece que ambas cosas se contradicen.
Solemos ver la solución a los problemas como: o hacemos esto O hacemos esto. Pero un buen líder que trata con una paradoja como ésta, mira ambas perspectivas, e intenta centrarse en cómo hacer esto Y esto. En vez de blanco o negro, intentamos ir a los grises.
¿Qué haría un líder en este caso? Aunque es muy tentador sucumbir a la opción de mejor pasar a producción que aprender/mejorar, un buen líder debe establecer un balance entre ambas cosas.

Problema/paradoja:

Si yo dejo a la gente mucho tiempo para aprender, le quito tiempo a entregar software al cliente, lo que hace que no podamos lograr las metas de la empresa y no tener dinero.
Si no invierto en mejorar, y solo me centro en lo que quiere el cliente, llegará un punto que no pueda adaptarme a los cambios, que mi gente se vaya, que esté frustrada. Y pierda dinero.

¿Qué hacemos? Aprender/mejorar pero siendo productivo para la empresa

Esto no es un tema sencillo, y no tengo la solución perfecta. De hecho no creo ni que exista. Pero si me gustaría generar un debate con respecto a este tema.
En mi opinión, lo que si creo que puede ser útil es hacer que la gente aprenda, mejore, avance, pero que sea productivo para tu empresa.
¿Mandarles a un curso, y que lo teórico del curso se quede allí? No. Eso es puntual, y como he dicho lo teórico del curso se queda ahí. Yo quiero que se aplique, que si aprenden algo en un curso, se transmita a los compañeros, o se use en nuestra aplicación.
Quiero que el mejorar y renovar tanto el software como a mi mismo sea parte de la cultura de tu empresa, algo constante.
Por ejemplo hay empresas que intentan fomentar cosas de este tipo. Google tiene su estrategia del 20%: aparte del trabajo habitual de los desarrolladores, les animan a que utilicen el 20% de su tiempo para mejorar, aprender cosas nuevas y plasmarlo en nuevas ideas que sirvan al objetivo de la empresa, para satisfacer las necesidades de los usuarios. AdSense y Google News salieron de ese 20%.
Atlassian tiene sus ShipIt days, con un objetivo similar.
Mi opinión es que es bueno dejar tiempo para que los desarrolladores, utilizando nuevas tecnologías (o no), creen posibles mejoras para el software de tu empresa. O mejoras en el proceso de desarrollo. O nuevas funcionalidades que crean que pueden ser útiles para los clientes.
¡Contratemos al super mega consultor de la herramienta X! ¿Y si hay gente de tu empresa que por experiencia en otro sitio crea que alguna cosa que sabe podría ayudar? ¿Y si quiere llevar una iniciativa de mejora? ¡A lo mejor se motiva muchísimo así! Y así te puedes ganar su confianza.

Quiero que fluya el conocimiento por mi empresa

Por otra parte, también creo que es imprescindible repartir lo aprendido por los desarrolladores, que el conocimiento se reparta, fluya por tu empresa.
Muchas veces alguien invierte muchísimo tiempo en aprender algo, en solucionar un fallo con alguna herramienta, o en buscarse la vida con algo mal documentado etc.
Lo ideal sería que lo que alguien aprenda se comparta con el resto del equipo para facilitar las cosas y perder menos tiempo.
Para eso se crean las Wikis…pero por experiencia no siempre son muy efectivas, y se dejan de mantener y actualizar.
Por ello otras alternativas que me parecen útiles son:

  • Plantear pequeñas charlas, workshops o talleres más relajados, para que la gente comparta lo que sabe con el resto de compañeros.
  • Crear una sección de FAQs, concisas, mejor que una Wiki muy extensa e inmantenible.
  • Un blog donde compartir enlaces, artículos etc.
  • Animar a que la gente enseñe a los demás cuando tengan un problema.

Otra idea que me pareció muy buena, que vi en una empresa en la que he estado, es que crearon una “biblioteca” de libros imprescindibles que todo el mundo debería leer.
La empresa compró libros como Refactoring de Fowler, Clean Code, …muy parecidos a los que vienen en esta lista, y otros que proponía el equipo para mejorar.
El equipo se iba llevando estos libros, los iban pasando, los leían, y se convertían en material de consulta en la propia empresa.
Yo te animo a que en esta lista no solo haya libros de tecnología. Sino también de liderazgo, habilidades personales, esas cosas que tanto nos faltan.
 
¿Vosotros que opináis? ¿Existen iniciativas de este tipo en tu empresa?¿Cómo podemos balancear lo que quiere el cliente con la mejora interna de la empresa, del equipo?

0 comentarios en “¿Invertir en mejorar el software o sacar a producción?”

  1. En algunos casos, no es la empresa sino los propios trabajadores los que se acomodan en su rutina de trabajo y no desean mejorar. Este caso es peor ya que poco a poco va minando la salud la empresa hasta que termina con ella. Suele ocurrir en empresas veteranas y sin estructura jerárquica donde no hay probabilidad de ascenso y el parque de clientes es más bien estático.

    El verdadero motor de una empresa son sus trabajadores, pues pueden existir muchas políticas empresariales de formación y modernización que si no son aplicadas por el personal, nunca conseguirán llegar a buen puerto.

    Una nueva tecnología requiere de una gran inversión tanto en tiempo de formación como en recursos. Además, cabe la posibilidad de que no sea lo más adecuado a aplicar. Este costo debe ser asumido por la empresa incluso aunque no tenga un retorno económico. Por el contrario, son los trabajadores los que deben poner en practica lo aprendido, adecuarlo a la tecnología utilizada con anterioridad y hacer que todo funcione.

    Esto no quiere decir que sea responsabilidad del trabajador la modernización de los activos de la empresa. Debe existir una colaboración entre la parte gerencial y la parte trabajadora que permita esta mejora y favorezca la continuidad de la empresa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This
Ir arriba