¡Qué fácil resulta olvidarse del pasado!
Esta se la conclusión a la que llego tras la experiencia vivida en casi 3 décadas dedicado al desarrollo de software.
La primera vez
La primera vez que aprendes a usar un lenguaje de programación 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 dedicación y de cada programador adquieres un nivel que te permite abordar proyectos cada vez más complejos. Finalmente, terminas convirtiéndote en un experto de esa herramienta y, durante años desarrollas software e implantas aplicaciones en nuevos clientes.
La hora del cambio
El software no es diferente al resto de tecnologías, con el paso de los años se cumple un ciclo tecnológico 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 hábitos de programación
Has adquirido hábitos de programación, cambiar se convierte en un trauma.
Inevitablemente comparas la nueva herramienta, desconocida, con la antigua que dominas a la perfección, 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 pérdida de rendimiento se subsana con formación y dedicación 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 podrías emplear en tareas productivas acaban resultando más caras que hacer formación.
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 programación. Lo que se convierte en dos traumas, uno mientras te cuesta más 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 también la necesidad de migrar sus datos y volver a formar a los usuarios.
La evolución
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 estándar y dispones de financiación basada en suscripciones o pagos de actualización terminas creando una nueva versión. En el desarrollo de las nuevas versiones aprovechas para realizar las modificaciones que llevas deseando hacer desde hace tiempo, mejoras el diseño, interfaz y usabilidad de la aplicación.
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 aplicación mejorada y tu consigues la financiación del desarrollo.
Mención aparte requieren las llamadas herramientas de migración. Mi experiencia se resume en en dos palabras «no funcionan». Migrar suele suponer un ahorro de tiempo al principio pero que termina siendo una pérdida de tiempo y calidad al final. Una vez más, podemos afirmar que con la migración lo rápido es lento, y desarrollar el programa desde cero aprovechando los recursos que ofrecen las nuevas plataformas significa que lo lento es al final lo más rápido.
La historia vuelve a empezar
Con el paso de los años, 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 situación 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 más altas. Sin embargo, si quieres vivir en este mundo no te queda más remedio que renovarte o morir de obsolescencia.
Conclusiones
Combina formación y auto-estudio con el fin de reducir al máximo el tiempo de aprendizaje. Recuerda que tu tiempo vale dinero.
No realices formación si posteriormente no tienes una planificación 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í olvidarás lo aprendido y habrás tirado el dinero.
Aprende primero lo sencillo, vete quemando etapas. Comienza con desarrollos sencillos pero completos, es decir, realiza el ciclo completo desde el análisis hasta la puesta en marcha de la aplicación. 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 plantéate desarrollar aplicaciones más complejas, para uso interno, pequeños módulos de aplicaciones o pequeñas aplicaciones.
No abordes proyectos grandes o importantes hasta que tengas perfectamente dominada la nueva plataforma de desarrollo. Si aún no estás preparado en la nueva plataforma aborda el proyecto con la antigua si consideras que conseguirás 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 aún la nueva. Recuerda que es preferible perder un cliente antes de abordar su proyecto que invertir tiempo en un proyecto condenado al fracaso.
Prepárate para convivir con las 2 herramientas de desarrollo un mínimo de 2 años. La duración de este período varía en función de la tipología de tu negocio y puede alargarse mucho más. Recuerda que mientras tengas un cliente que mantener en la antigua plataforma no podrás olvidarte de ella.
Fija tu estrategia y se fiel a ella. La estrategia es la que marca cuándo y hacia donde debes dar el salto tecnológico.
Recuerda, no tengas prisa, cualquier cambio de herramienta de desarrollo lleva tiempo y debes pensar que lo haces para la próxima década no para la próxima aplicación que tienes que desarrollar.
Mario Conde Fornós dice
Muy bueno Jesús.
Es un fiel reflejo de lo que muchos hemos vivido durante un par de décadas como mínimo.
Ahora sí, si aciertas en el cambio de la herramienta, al final merece la pena, no? 😉
Fran dice
Muy bueno Jesús, 100% de acuerdo contigo.
Manuel Tovar dice
Muy buena las reflexiones Jesús Arboleya. Te felicito, muchos nos vemos reflejados en ellas.
Un aporte: en el apartado «La base instalada» dices «Si el cliente acepta….produce también la necesidad de migrar sus datos…» y es cierto, pero una conclusión que en ese sentido yo he obtenido con los años es que lo más recomendable es utilizar contenedores de datos de uso universal y extendido que puedan ser utilizados por diferentes herramientas y que la herramienta pueda atacar diferentes contenedores de datos. Si eso es así el cambio de herramienta de desarrollo pasa a ser la mitad de traumático o menos quizás, al poder convivir los datos con diferentes herramientas de desarrollo y la misma herramienta de desarrollo con diferentes tipos de contenedores de datos. Creo que ese es el futuro inmediato y lo que ya se está produciendo.
Saludos cordiales y felicitaciones de nuevo
Manuel Tovar
Barranquilla – COLOMBIA