Cambiando de herramienta de desarrollo

Cambiando de herramienta de desarrollo

Qu fcil resulta olvidarse del pasado!

Esta se la conclusin a la que llego tras la experiencia vivida en casi 3 dcadas dedicado al desarrollo de software.

La primera vez

La primera vez que aprendes a usar un lenguaje de programacin o una herramienta de desarrollo, todo es nuevo, apenas existen barreras de aprendizaje, ni barreras de entrada. Tampoco tienes lastres del pasado. Todo es sumar, sumar y sumar…

Pasado un tiempo, que depende de la dedicacin y de cada programador adquieres un nivel que te permite abordar proyectos cada vez ms complejos. Finalmente, terminas convirtindote en un experto de esa herramienta y, durante aos desarrollas software e implantas aplicaciones en nuevos clientes.

La hora del cambio

El software no es diferente al resto de tecnologas, con el paso de los aos se cumple un ciclo tecnolgico y comienza otro. Cada ciclo suele obligar a un cambio de lenguaje, herramienta o plataforma de desarrollo.

A diferencia de lo que ocurri la primera vez, ahora existen multitud de barreras que dificultan el cambio:

Los hbitos de programacin

Has adquirido hbitos de programacin, cambiar se convierte en un trauma.

Inevitablemente comparas la nueva herramienta, desconocida, con la antigua que dominas a la perfeccin, otro trauma.

El desconocimiento de la nueva plataforma, durante el tiempo de aprendizaje, produce sensaciones frustrantes. Lo que ahora con la nueva herramienta tardas en hacer 2 horas con la antigua lo haces en 10 minutos. Esta prdida de rendimiento se subsana con formacin y dedicacin al aprendizaje, es decir, programar, programar y programar.

Mi experiencia es que cada vez que tratas de dominar una herramienta de forma autodidacta, las horas que empleas y que podras emplear en tareas productivas acaban resultando ms caras que hacer formacin.

La base instalada

Tienes clientes con instalaciones a los que debes seguir prestando servicios, lo que te obliga a trabajar en paralelo con las dos herramientas de programacin. Lo que se convierte en dos traumas, uno mientras te cuesta ms trabajar con la nueva herramienta que con la vieja y el segundo cuando ya dominas la nueva y te cuesta ponerte con la vieja.

Si el cliente acepta -paga- el cambio hay que migrar sus aplicaciones, lo que produce tambin la necesidad de migrar sus datos y volver a formar a los usuarios.

La evolucin

Con el paso del tiempo evolucionamos y, como sucede con los idiomas, dejas de comparar y comienzas a pensar directamente en como se hacen las cosas con la nueva plataforma.

Finalmente dominas mejor la nueva herramienta y te da pereza ponerte con la vieja.

Si tienes aplicaciones estndar y dispones de financiacin basada en suscripciones o pagos de actualizacin terminas creando una nueva versin. En el desarrollo de las nuevas versiones aprovechas para realizar las modificaciones que llevas deseando hacer desde hace tiempo, mejoras el diseo, interfaz y usabilidad de la aplicacin.

Si tienes aplicaciones a medida, aprovechas las necesidades de los clientes para producir el cambio. Lo importante es que se produzca un beneficio mutuo, el cliente desea una nueva aplicacin mejorada y tu consigues la financiacin del desarrollo.

Mencin aparte requieren las llamadas herramientas de migracin. Mi experiencia se resume en en dos palabras “no funcionan”. Migrar suele suponer un ahorro de tiempo al principio pero que termina siendo una prdida de tiempo y calidad al final. Una vez ms, podemos afirmar que con la migracin lo rpido es lento, y desarrollar el programa desde cero aprovechando los recursos que ofrecen las nuevas plataformas significa que lo lento es al final lo ms rpido.

La historia vuelve a empezar

Con el paso de los aos, la plataforma va quedando obsoleta y el mercado se encarga de generar nuevas necesidades que te obligan a buscar un nuevo lenguaje, herramienta o plataforma.

La situacin nunca vuelve a ser la de tus inicios, al contrario, se vuelve a repetir lo comentado en el cambio anterior, aunque probablemente con barreras cada vez ms altas. Sin embargo, si quieres vivir en este mundo no te queda ms remedio que renovarte o morir de obsolescencia.

Conclusiones

Combina formacin y auto-estudio con el fin de reducir al mximo el tiempo de aprendizaje. Recuerda que tu tiempo vale dinero.

No realices formacin si posteriormente no tienes una planificacin para practicar lo aprendido. Organiza tu agenda para que tras realizar los cursos tengas un tiempo asignado a programar con la nueva herramienta y practicar lo aprendido, de no ser as olvidars lo aprendido y habrs tirado el dinero.

Aprende primero lo sencillo, vete quemando etapas. Comienza con desarrollos sencillos pero completos, es decir, realiza el ciclo completo desde el anlisis hasta la puesta en marcha de la aplicacin. Esto te permitir conocer y dominar la herramienta en su totalidad y no partes aisladas que luego te cueste combinar.

A medida que vayas aprendiendo plantate desarrollar aplicaciones ms complejas, para uso interno, pequeos mdulos de aplicaciones o pequeas aplicaciones.

No abordes proyectos grandes o importantes hasta que tengas perfectamente dominada la nueva plataforma de desarrollo. Si an no ests preparado en la nueva plataforma aborda el proyecto con la antigua si consideras que conseguirs satisfacer las necesidades del cliente. Deshecha el proyecto, si es importante, en caso de que no puedas abordarlo con la herramienta antigua y no dominas an la nueva. Recuerda que es preferible perder un cliente antes de abordar su proyecto que invertir tiempo en un proyecto condenado al fracaso.

Preprate para convivir con las 2 herramientas de desarrollo un mnimo de 2 aos. La duracin de este perodo vara en funcin de la tipologa de tu negocio y puede alargarse mucho ms. Recuerda que mientras tengas un cliente que mantener en la antigua plataforma no podrs olvidarte de ella.

Fija tu estrategia y se fiel a ella. La estrategia es la que marca cundo y hacia donde debes dar el salto tecnolgico.

Recuerda, no tengas prisa, cualquier cambio de herramienta de desarrollo lleva tiempo y debes pensar que lo haces para la prxima dcada no para la prxima aplicacin que tienes que desarrollar.