Cambiar de herramienta de desarrollo de aplicaciones empresariales

cambio de herramienta de desarrollo de software empresarialTras los interesante comentarios realizados por Manuel Tovar en el blog de Velneo, me he animado a escribir este artículo ya que creo que este tema es importante y en muchos casos complejo de resolver.

Resumiría el planteamiento que hace Manuel Tovar con las siguientes frases:

  • Tengo una base instalada de clientes ejecutando aplicaciones desarrolladas con un lenguaje de programación y una base de datos que son los que utilizo actualmente.
  • Tengo proyectos en desarrollo.
  • Tengo proyectos pendientes de desarrollar.
  • Llevamos retrasos en los plazos de entrega de los desarrollos a clientes.
  • Para comenzar con una nueva herramienta necesito formarme durante meses y eso supone necesitar más recursos.

En primer lugar quiero dejar claro que estoy completamente de acuerdo con Manuel en que la toma de decisión de cambio es compleja. Voy a tratar de comentar mi visión de como lo plantearía basándome en la experiencia vivida durante años con otros lenguajes de programación.

El software es una herramienta

Las aplicaciones desarrolladas para los clientes finales debemos verlas como lo que son: herramientas para facilitar la gestión y administración que se convierte en un éxito gracias a una buena implantación que permite al cliente un alto grado de satisfacción.

Las herramientas de desarrollo también son eso «herramientas». El mismo programador con diferentes herramientas puede llegar a soluciones similares y también a conseguir con el mismo esfuerzo aplicaciones funcionalmente muy diferentes.

Uno de los aspectos fundamentales para sacar el máximo partido de una herramienta de desarrollo es la experiencia. Por ese motivo cuando te sientes cómodo con una herramienta resulta complejo dar el salto a otra nueva.

¿Tus clientes están contentos?

Si con tu herramienta de desarrollo actual tus clientes están contentos y además es rentable está claro que no parece muy lógico plantearse un cambio.

Es cierto que siempre es bueno conocer lo que existe en el mercado y las tendencias que existen para poder tomar medidas en tiempo y forma. Pero pasar de la información a la formación requiere una toma de decisión previa.

Plazos de entrega

Si habitualmente sufres retrasos en los plazos de entrega de las aplicaciones y es por un exceso de carga de trabajo puede significar que comercialmente las cosas te van bien y que debes resolverlo en base a aumentar tus recursos o reducir el nuevo de proyectos que aceptas desarrollar aumentando tal vez el precio de tus desarrollos ya que se supone que tienes demanda por la calidad de tus aplicaciones.

Si por el contrario esos retrasos se producen por que tu herramienta de desarrollo, pese a tener experiencia con ella, no te permite desarrollar más rápido entonces entramos en el factor del análisis de la rentabilidad.

Rentabilidad

Esta palabra creo que es la que marca el inicio de algunas tomas de decisión de cambio de herramienta de desarrollo. De nada sirve tener la mejor herramienta del mercado si los resultados finales es que tu programación no te aporta una alta rentabilidad y que te permita obtener también una alta rentabilidad de los servicios de mantenimiento y actualización de versiones de aplicaciones a tus clientes finales.

Incluso si tu herramienta actual te permite ser rentable nunca está de más conocer si en el mercado existen alternativas más rentables. Desde un punto de vista empresarial este aspecto es básico. Para mi la rentabilidad debe ir ligada siempre a un alto grado de satisfacción del cliente final, en caso contrario la herramienta no es válida.

Existen otros muchos motivos para necesitar realizar un cambio de herramienta de desarrollo que finalmente convergen con la necesidad de darle viabilidad y rentabilidad a tu negocio.

He encontrado una alternativa ¿Qué hago?

Si has encontrado una herramienta de desarrollo que aparentemente ofrece lo que necesitas para que tu negocio sea más rentable entonces comienza la fase de testeo.

Para mi una herramienta no es cara o barata en función de su precio. Todos conocemos herramientas gratuitas que resultarían carísimas para desarrollar las aplicaciones que ahora tienes implantadas en tus clientes finales. De la misma forma pagar por una herramienta de desarrollo, por ejemplo 20.000€, podría resultar muy interesante si con ella puedo conseguir un beneficio bruto que multiplique por 5 esa cifra en los próximos años.

Por lo tanto el precio de la herramienta no es significativo en la toma de decisión salvo que nuestra capacidad financiera no nos permita llegar a su adquisición. El precio de las licencias de la base de datos siempre es un punto a tener en cuenta bajo el prisma de que su precio se repercute en el cliente final. Sobre este tema he escrito un par de artículos en este blog: ¿Cómo presupuestar soluciones de software empresarial? (1ª parte) y ¿Cómo presupuestar soluciones de software empresarial? (2ª parte)

Ahora toca aprender y probar

Si hemos seleccionado una herramienta y ya la hemos adquirido o estamos usando una versión gratuita de la misma el siguiente paso es el testeo. Para hacerlo tenemos 2 posibilidades. Hacerlo por nuestra cuenta de forma autodidacta o utilizar algún recurso formativo.

Pagar por un curso puede resultar la opción más económica. Nunca debemos olvidarnos de que nuestra horas también tienen un precio de coste importante y que cada hora que estemos investigando, formándonos y probando suma en el coste total.

Pagar, por ejemplo 900€ por un curso de 30 horas que te permita conocer de la mano de un experto todas las posibilidades que ofrece la herramienta y la metodología de programación de la herramienta puede ser una opción económica. ¿Por qué? Si, por ejemplo, dedicamos 2 horas al día para aprender una nueva herramienta, serán unas 40 horas mensuales. Si estamos 3 meses con esta inversión de tiempo, el coste de esas horas es muy superior (40 horas x 3 meses x 12€/hora = 1.440€). Si en lugar de 3 meses somos capaces de hacerlo en un mes, el método autodidacta es más económico pero ¿seguro que hemos conocido todas las posibilidades de la herramienta?

Lo realmente caro es equivocarse

Pese a todo esto lo realmente caro no es pagar la formación o comprar la herramienta. Lo realmente caro es invertir cientos de horas en una alternativa que finalmente no te sirva.

En muchas ocasiones he comentado este tema con otros profesionales y pienso que tal vez el orden adecuado para aventurarse con una nueva herramienta pase primero por una formación que te permite descartar la herramienta o seguir adelante y entonces comprar el producto con mayor garantías de que es adecuado para tu negocio.

Me gusta mucho, pero no me permite todo lo que necesito

Voy a hacer un comentario rápido sobre esta situación que a veces se produce. Conocemos una nueva herramienta de desarrollo que nos puede resultar muy rentable pero que no nos permite abordar el 100% de los desarrollos.

¿La descarto?
Para mi la respuesta a esta pregunta pasar por responder a la siguiente pregunta.

¿Qué porcentaje de aplicaciones voy a poder desarrollar en los próximos 5 años con la nueva herramienta?
Si la respuesta está por encima del 70% considero que puede ser una opción válida.

Es cierto que lo ideal sería trabajar sólo con una herramienta, por comodidad para el desarrollador y para facilitar el mantenimiento de las aplicaciones, pero también sabemos que la herramienta perfecta no existe y que con el paso del tiempo siempre usamos múltiples herramientas especializadas.

Por estos motivos si la herramienta que estoy viendo me resulta rentable, por qué voy a perder rentabilidad en el 70% de mis desarrollos porque el 30% tenga que desarrollarlos con otra herramienta. No parece más absurdo perder rentabilidad en el 100% de los desarrollos por usar sólo una herramienta. Lógicamente cuando mayor es el porcentaje mayor sentido tiene. Veo más claro buscar una estrategia de máxima rentabilidad con una herramienta aunque tenga que decir no a algunos proyectos por no poder abordarlos. En mucho casos puede ser preferible ser un especialista en un nicho de mercado o en un sector que obtener una rentabilidad media en un mercado más generalista.

Ya estoy preparado ¿Por donde empiezo?

Estoy formado, tengo la herramienta pero no tengo experiencia. Tendré que hacer un gran esfuerzo para que la primera aplicación desarrollada tenga una calidad acorde a la que tienen las soluciones ya implantadas.

Esta claro que lo mejor es utilizar esta herramienta para el nuevo proyecto más pequeño que tengas que desarrollar. De esta forma tendrás un margen de maniobra superior que si te sumerges en un proyecto grande.

Muchas empresas comienzan por desarrollar una aplicación para uso interno, otras veces soluciones monopuesto o pequeñas aplicaciones departamentales. Lo importante es que sean aplicaciones autónomas que no afecten ni se vean afectadas por otros desarrollos. Pero lo importante es que sea una aplicación real para poner en producción ya que los experimentos con aplicaciones que son sólo pruebas no alcanzan el grado de necesidad suficiente para que te esfuerces en superar todos los obstáculos.

¿Qué pasa con mi base instalada?

Nada. No pasa nada, si tus clientes están actualmente estables no deberías hacer nada con ellos en este momento. Creo que una máxima que debe aplicarse siempre es «Si algo funciona no lo toques».

Todo tiene su momento y ese día llegará para cada uno de tus clientes o para grupos de ellos si te dedicas a vender software estándar. Olvídate de momento de migraciones o integraciones.

La mezcla no es buena

¿Podrías ir añadiendo módulos a tus aplicaciones actuales desarrollados con la nueva herramienta? Sí, claro que podrás pero yo no lo recomiendo ya que lo más probable es que tengas que hacer labores de integración que llevan un mayor esfuerzo de desarrollo y con un resultado final menos efectivo de lo que habría sido hacerlo con la herramienta actual.

Estoy generalizando, pero mi experiencia en este punto es que los experimentos de integración de soluciones heterogéneas es arriesgado y puede generar en el cliente final diferentes grados de satisfacción: lo nuevo no me gusta, lo viejo habría que cambiarlo al nuevo sistema, etc. En este punto yo aplicaría la máxima de «más vale lo malo conocido que lo bueno por conocer» para aplicarlo al punto de vista del cliente.

Transición

Esta es una palabra clave. Cambiar de herramienta de desarrollo no es un acción inmediata y mucho menos si tienes una base instalada con mucho software en producción. Debes plantearte el cambio como una transición.

Durante un tiempo te sentirás más cómodo desarrollando con la herramienta antigua, es lógico ya que tienes mucha experiencia acumulada. En un momento determinado que depende de la curva de aprendizaje de la herramienta se produce un punto de inflexión en el que ya te resulta prácticamete igual de cómodo desarrollar con ambas herramientas para finalmente pasar a desear más desarrollar con la nueva herramienta que con la antigua.

En ese punto es donde puedes empezar a plantearte desarrollar todos tus nuevos proyectos con la nueva herramienta. Mientras tanto seguirás mantenimiento las aplicaciones de tu base instalada con la herramienta antigua.

Cambiar el software en tu base instalada

Solamente cuando ya estés totalmente seguro de que las aplicaciones creadas con tu nueva herramienta superan a las apliaciones antiguas debes comenzar a plantearte el cambio del software de tu base instalada.

Debería ser algo gradual, comenzando por clientes pequeños donde se preparán las herramientas de migración de los datos que luego serán utilizadas con todos los clientes en caso de las aplicaciones estándar como puede ser la contabilidad.

Y si mis clientes no quieren cambiar su software

Si tus clientes están contentos con la aplicación y no necesitan grandes mejoras o cambios lo mejor es mantenerlos con esa aplicación los años que ellos quieran. Utilizando una política adecuada de mantenimientos, se les puede seguir dando el servicio con la herramienta antigua, teniendo en cuenta que si son aplicaciones que no requieren un gran mantenimiento eso supondrá un pequeño esfuerzo al año.

Sin embargo si un cliente solicita mejoras de forma constante es cuando se le puede plantear la migración a una versión de la aplicación que, con seguridad podrá disponer de novedades funcionales. Esta decisión de cambio de aplicación siempre se basa en una relación de confianza cliente-desarrollador. El cliente debe tener claro lo que necesita y confía en su experto y asesor en software para que le aporte la solución adecuada.

En este punto de la transición lo normal es que poco a poco la base instalada vaya migrando a las nuevas aplicaciones. Todos los nuevos proyectos ya los desarrollas con la nueva herramienta y cada vez te quedarán menos aplicaciones a mantener con la herramienta antigua.

Y cómo será el futuro…

Durante los próximos años trabajarás con esa herramienta y mientras sigas satisfecho con su rentabilidad y con el grado de satisfacción de tus clientes no te plantearás el cambio.

Seguirás investigando, observando tendencias y, en un momento determinado del futuro la historia volverá a comenzar.

Scroll al inicio