Por qué el mantenimiento de aplicaciones web debería ser más importante
Publicado: 2022-03-10Los desarrolladores de software tradicionales nos han estado ocultando un secreto a simple vista. Ni siquiera es un hecho discutido. Es parte de su modelo de negocio.
No importa si estamos hablando de proveedores de software empresarial de alto nivel o casas de software más pequeñas que escriben las herramientas que todos usamos día a día en nuestros trabajos o negocios, como un administrador de syslog gratuito. Está justo al frente y en el centro. Costes adicionales que no ocultan y que nos hemos acostumbrado a pagar.
Entonces, ¿cuál es este secreto?
Bueno, muchos proveedores de software tradicionales ganan más dinero con el mantenimiento del software que escriben que con la venta inicial.
¿No convencido?
Una búsqueda rápida del término "Costo total de propiedad" le proporcionará muchas definiciones similares como esta de Gartner (énfasis mío):
[TCO es] el costo de implementar, operar, respaldar y mantener o extender y desmantelar una aplicación.
Además, este documento de la Universidad de Stanford afirma que el mantenimiento normalmente representa del 60 % al 90 % del TCO de un producto de software.
Vale la pena dejar que eso se hunda por un minuto . Ganan mucho más que el precio de compra inicial vendiendo planes de soporte y mantenimiento continuos.
No empujamos el mantenimiento
El problema, tal como lo veo, es que en la industria del desarrollo web, el mantenimiento de aplicaciones web no es algo en lo que nos centremos. Podríamos incluirlo en nuestras propuestas porque nos gusta la idea de un anticipo mensual, pero es probable que cubran tareas sencillas de limpieza o solicitudes de nuevas funciones.
No es raro ocultar actualizaciones y optimizaciones esenciales dentro de nuestras cotizaciones para iteraciones posteriores porque no estamos seguros de que el cliente quiera pagar por las cosas que consideramos mejoras esenciales. Tratamos de hacerlos entrar por la puerta trasera. O, en otras palabras, no somos abiertos ni transparentes en cuanto a que, al igual que el software más tradicional, estas aplicaciones necesitan mantenimiento.
Independientemente de las razones por las cuales, cada vez es más claro que estamos acumulando problemas para el futuro. Las aplicaciones de software que estamos creando están aquí a largo plazo . Tenemos que pensar como los proveedores de software tradicionales. Nuestro software seguirá funcionando durante 10 o 15 años a partir de ahora, y debe mantenerse en buen estado.
Entonces, ¿cómo podemos cambiar esto? ¿Cómo nos aseguramos todos, como industria, de que nuestros clientes estén protegidos para que las cosas permanezcan seguras y actualizadas? Del mismo modo, ¿cómo llegamos a tomar una parte del pastel de mantenimiento ?
¿Qué es el mantenimiento?
En su artículo de 2012, Mantenimiento efectivo de aplicaciones, Heather Smith y James McKeen definen el mantenimiento como (el énfasis es mío):
Portar una aplicación a un nuevo servidor, interactuar con un sistema operativo diferente, actualizar a una versión más nueva, modificar una tabla de impuestos o cumplir con las nuevas regulaciones, todo requiere mantenimiento de aplicaciones. Como resultado, el mantenimiento se centra en actualizar una aplicación para garantizar que siga siendo productiva y/o rentable . La definición de mantenimiento de aplicaciones preferida por el grupo de discusión es — cualquier modificación de una aplicación para corregir fallas; para mejorar el rendimiento; o para adaptar la aplicación a un entorno modificado o requisitos modificados. Por lo tanto, agregar una nueva funcionalidad a una aplicación existente (es decir, mejorarla) no se considera mantenimiento estrictamente hablando .
En otras palabras, el mantenimiento es un trabajo esencial que debe realizarse en una aplicación de software para que pueda continuar funcionando de manera confiable y segura.
No es agregar nuevas características. No verifica los archivos de registro ni se asegura de que se hayan ejecutado las copias de seguridad (estas son tareas de limpieza). Está trabajando en el código y la plataforma subyacente para garantizar que todo esté actualizado, que funcione como sus usuarios esperarían y que las luces permanezcan encendidas.
Aquí están algunos ejemplos:
Cambios de tecnología y plataforma
Las bibliotecas de terceros necesitan actualización. El lenguaje subyacente requiere una actualización, por ejemplo, PHP 5.6 a PHP 7.1 Los sistemas operativos modernos envían actualizaciones regularmente. Mantenerse al tanto de esto es mantenimiento y, en ocasiones, también requerirá cambios en la base de código a medida que las antiguas formas de hacer ciertas cosas se vuelven obsoletas.Escalada
A medida que crezca la aplicación, habrá problemas de recursos. Las rutinas dentro del código que funcionaban bien con 10 000 transacciones por día luchan con 10 000 por hora. Es necesario monitorear la aplicación, pero también se deben tomar medidas cuando se activan las alertas.Corrección de errores
Obvio pero vale la pena hacerlo explícito. El software tiene errores y es necesario corregirlos. Incluso si incluye un pequeño período de correcciones de errores gratuitas después de enviar un proyecto, en algún momento el cliente deberá comenzar a pagar por ellas.
¿Difícil de vender?
Curiosamente, cuando hablo de esto con mis compañeros, sienten que es difícil convencer a los clientes de que necesitan mantenimiento. Les preocupa que sus clientes no tengan el presupuesto y no quieren parecer demasiado caros.
Bueno, aquí está la cosa: en realidad es una venta bastante fácil. Estamos tratando con gente de negocios, y simplemente necesitamos hablarles sobre el mantenimiento en términos comerciales. Los empresarios entienden que los activos requieren mantenimiento o se convertirán en pasivos. Es solo otro gasto general mensual continuo estándar. Un costo de hacer negocios. Sólo tenemos que incluir esto en nuestras propuestas y asegurarnos de darle seguimiento .
Un método extremadamente efectivo es ofrecer un retenedor que incorpore el mantenimiento en su núcleo pero que también brinde mucho valor adicional para el cliente, cosas como:
- Informes sobre el progreso frente a los KPI (por ejemplo, tráfico, conversiones, volúmenes de búsqueda)
- Tiempo 'libre' limitado cada mes para pequeños ajustes en el sitio
- Informes sobre el tiempo de inactividad, las actualizaciones del servidor o el trabajo de desarrollo completado
- Acceso a usted o a miembros específicos de su equipo por teléfono para responder preguntas
De hecho, puede hacer que el anticipo ahorre dinero al cliente y se pague solo. Un buen ejemplo de esto sería el requisito de un cliente de obtener un informe simple o exportarlo desde la base de datos cada mes para el procesamiento fuera de línea.
Puede cotizar una cantidad de días de desarrollo para crear una interfaz de usuario de informes , probablemente más compleja de lo que se supuso inicialmente, o, alternativamente, dirigir al cliente a su retención. Incluya dentro de él una tarea cada mes para que un desarrollador ejecute manualmente una consulta SQL preestablecida para proporcionar manualmente los mismos datos.

Una tarea trivial para usted o su equipo; mucho valor para su cliente.
Un ejemplo práctico
Por supuesto, tendrá su propia forma de escribir propuestas, pero aquí hay un par de fragmentos de un ejemplo de presentación.
En la sección de su propuesta donde podría pintar su visión para el futuro, puede agregar algo sobre el mantenimiento. Use esto como una oportunidad para plantar la semilla sobre la formación de una relación a largo plazo.
Está buscando minimizar el riesgo a largo plazo.
Desea asegurarse de que su aplicación funcione bien, que permanezca segura y que sea fácil trabajar en ella.
También comprende lo importante que es el mantenimiento para cualquier activo comercial.
Más adelante, en la sección de entregables, puede agregar una parte sobre el mantenimiento, ya sea como una opción independiente o en conjunto con un anticipo continuo.
En el siguiente ejemplo, lo mantenemos simple y lo empaquetamos con un anticipo de desarrollo prepago:
Recomendamos firmemente que todos los clientes consideren que el mantenimiento es un gasto esencial para su sitio web. Las aplicaciones web modernas requieren mantenimiento y al igual que su casa o su automóvil; usted mantiene su activo mantenido para reducir el riesgo tangible de que se conviertan en pasivos más adelante .
Como cliente que está sensiblemente interesado en mantenerse al tanto del mantenimiento de la aplicación, así como en agregar nuevas funciones, sugerimos N días por mes (como punto de partida) para el mantenimiento general y el retenedor de desarrollo.
Distribuiríamos las cosas para que un desarrollador esté trabajando en su sistema al menos [algún período por semana/mes], lo que le brinda la clara ventaja de tener un desarrollador capaz de cambiar a algo más importante en caso de que surjan problemas durante el [mismo período] . Dependiendo de sus prioridades, ese tiempo podría dedicarse al trabajo de nuevas funciones o dividirse con el mantenimiento, es su decisión. Normalmente sugerimos una división del 75%/25% entre nuevas funciones y mantenimiento importante.
Como se mencionó anteriormente, esta también es una gran oportunidad para agrupar el mantenimiento con otros servicios continuos de valor agregado, como informes de rendimiento, realización de tareas de limpieza como verificación de copias de seguridad y tal vez una llamada mensual para analizar el progreso y las prioridades.
Lo que probablemente encontrará es que después de conseguir el trabajo, el anticipo no se vuelve a mencionar. Esto es comprensible ya que hay mucho que usted y su cliente deben considerar al comienzo de un proyecto, pero a medida que el proyecto está finalizando, es un buen momento para volver a presentarlo como parte de su proceso de salida del proyecto.
Ya sea que se trate de la fase 2 o simplemente de presentar las facturas finales y la entrega, recuérdeles el mantenimiento. Recuérdeles la capacitación continua, la presentación de informes y la disponibilidad para brindar apoyo . Opte por un anticipo, recordando hablar en los mismos términos comerciales: su nuevo activo necesita mantenimiento para mantenerse brillante .
¿Puede el mantenimiento ser molesto?
Una idea errónea común es que los retenedores de mantenimiento pueden convertirse en una carga adicional. La preocupación es que los clientes lo llamarán constantemente y le pedirán pequeños ajustes como parte de su retención. Esta es una preocupación particular para equipos más pequeños o consultores independientes.
Sin embargo, no suele ser el caso. Tal vez al principio, el cliente tendrá una lista de inconvenientes que deben resolverse, pero esto es parte del curso; si tienes experiencia, entonces lo estás esperando. Estos se gestionan fácilmente mejorando los canales de comunicación (use un rastreador de problemas) y agrupando todas las solicitudes, es decir, trabajando en ellas en un solo golpe.
A medida que la aplicación madure, pasará a un modo de verificación. Aquí es donde el anticipo se vuelve particularmente valioso para ambas partes. Obviamente, depende de cómo haya estructurado el anticipo, pero desde su perspectiva, se esfuerza por recordarle al cliente cada mes lo valioso que es. Puede enviarles su informe mensual, decirles cómo solucionó una ralentización en esa rutina y que el servidor fue parcheado para la explotación global del sistema operativo de esta semana.
Por supuesto, también estuvo disponible para trabajar en una serie de nuevas funciones solicitadas que se cobraron adicionalmente . Desde la perspectiva de su cliente, ven que usted está allí, ven el progreso y pueden eliminar la "preocupación por el sitio web" de su lista. Claramente, 'esos clientes' existen, sin embargo, por lo que lo más importante es obtener la redacción correcta de su retención y administrar las expectativas en consecuencia.
Si su cliente espera la luna en el palo por una tarifa mensual baja, retroceda o renegocie. Pagarle por hacer, digamos, dos horas de mantenimiento y limpieza por mes además de proporcionar un informe mensual y otras tareas auxiliares es exactamente eso; no es un cheque en blanco para hacer muchos cambios ad-hoc. Recuérdeles lo que está incluido y lo que no.
¿Cómo hacemos que el mantenimiento sea más fácil?
Finalmente, para garantizar el mejor valor para sus clientes y hacer su vida más fácil, utilice algunas de estas tácticas al crear sus aplicaciones.
Soporte a largo plazo (LTS)
- Utilice plataformas tecnológicas con versiones LTS bien documentadas y rutas de actualización.
- Se deben esperar y tener en cuenta las actualizaciones continuas del sistema operativo, el idioma, el marco y el CMS para todos los proyectos, por lo que el seguimiento de una versión LTS es una obviedad.
- Todo debería estar ejecutándose en una versión compatible. Grandes campanas de alarma deberían sonar si este no es el caso.
Buen Proyecto Higiene
- Tenga tareas de mantenimiento públicas en su cartera de funciones o sistema de seguimiento de problemas y acuerde las prioridades con su cliente. No oculte las tareas de mantenimiento.
- Las pruebas funcionales y de nivel de código le permiten vigilar el código particularmente problemático y lo ayudarán cuando extraiga módulos para refactorizarlos.
- Supervise la aplicación y comprenda dónde están los cuellos de botella y los errores. Cualquier problema puede agregarse a la acumulación de desarrollo y priorizarse en consecuencia.
- Supervisar las solicitudes de soporte. ¿Los usuarios finales le brindan comentarios útiles que podrían indicar los requisitos de mantenimiento?
La aplicación debe ser portátil
- Cualquier desarrollador debería poder hacer que el sistema funcione fácilmente localmente, ¡no solo usted! Utilice servidores o contenedores virtuales para garantizar que las versiones de desarrollo de las aplicaciones sean idénticas a las de producción.
- La aplicación debe estar bien documentada. Como mínimo, se deben anotar los flujos de trabajo de aprovisionamiento e implementación y cualquier conjuro especial requerido para implementar y vivir.
El mantenimiento es un auténtico ganar-ganar
El mantenimiento es el trabajo que debemos hacer en una aplicación para que pueda detenerse de manera segura. Es un costo comercial estándar. En promedio, el 75 % del costo total de propiedad durante la vida útil de una aplicación de software.
Como profesionales, tenemos el deber de cuidar de educar a nuestros clientes sobre el mantenimiento desde el principio. Aquí hay una gran oportunidad para obtener ingresos adicionales al tiempo que proporciona un valor tangible a sus clientes. Puedes mantener una relación comercial continua y serás la primera persona a la que recurran cuando tengan nuevos requisitos.
Continuar brindando valor a través de su retención generará confianza con el cliente. Obtendrá una plataforma para sugerir mejoras o nuevas características. Trabajo en el que tienes una gran oportunidad de ganar. Su cliente reduce sus costos de por vida, reduce su riesgo y deja de preocuparse por el rendimiento o la seguridad.
Hágase un favor a usted mismo, a su cliente y a toda nuestra industria: ayude a que el mantenimiento de aplicaciones web sea más importante.