Si se necesita una aplicación
a la medida y no se dispone de los recursos internos, existen opciones externas de
contratación. Sin embargo, este proceso
puede ser complejo y no es fácil o automático lograr éxito en este tipo de contratación. En este trabajo se
identifican elementos que pueden fallar en el proceso de outsourcing de
desarrollo y se hacen recomendaciones que pueden ayudar a obtener el mejor resultado en este esfuerzo.
El proceso de outsourcing es particularmente
complejo para proyectos creativos como los de aplicaciones, donde percepciones
subjetivas sobre como las cosas son y como deberían ser deja mucho espacio
para malos entendidos y es importante cubrir esas brechas.
Para el mejor aprovechamiento del material:
Con el objetivo de establecer una base de referencia común inicialmente se hace una resumen del proceso de desarrollo.
El material es útil para Gerentes Usuarios en empresas corporativas y para Alta Gerencia en empresas medianas y pequeñas.
Se hablará de empresa desarrolladora o de contratista aún cuando es factible que haya situaciones en las cuales se trate de la contratación de un solo desarrollador. Las circunstancias e ideas aplican independientemente de la magnitud de la empresa desarrolladora.
Cómo hacer un Desarrollo
En el mundo ideal la empresa desarrolladora debe poseer
conocimiento técnico sólido y ser un asesor de confianza, además de tener conocimiento
del mundo de la ingeniería de software y estar en sintonía con las necesidades
de negocio y las demandas específicas del proyecto a contratar. Debería con seguridad y confianza guiar al
cliente a través del proceso de definición de alcance, mantener una clara
comunicación a través del proceso de desarrollo, mientras que continuamente se
va cumpliendo cada compromiso oportunamente en el tiempo a medida que la aplicación va tomando
forma.
A groso modo el proceso de la
creación de la aplicación a la medida debería lucir así:
1.
Descubrimiento
El cliente debe comunicar sus
objetivos y expectativas y la empresa desarrolladora debe construir un entendimiento de
lo que se espera lograr, identificar lo importante y separar lo opcional y también tener claro lo que el
cliente espera ver al final del proyecto.
2.
Alineamiento del alcance
En el alcance debe estar
identificadas las funcionalidades, listas y diagramas, así como algunas pantallas. Las partes tienen acordar lo que se
construirá.
3.
Desarrollo-Codificación
Con descubrimiento y alcance
definidos ya se debe comenzar la codificación.
Dependiendo de la complejidad esta puede tomar semanas o meses, y puede involucrar uno o varios
desarrolladores trabajando en equipo.
4.
Revisión
A través del proceso de
desarrollo se debe mantener un proceso acordado de revisión en el tiempo.
5.
Entrega/Producción
Es la puesta en uso de la
aplicación y hay que considerar que posteriormente que toda aplicación requiere
mantenimiento y mejoras futuras.
Seleccionando la Empresa de
Desarrollo apropiada
Existen múltiples
opciones para la ejecución del trabajo: Desarrolladores
independientes, empresas especializadas y servicio de “app-builder” en
línea. Si el cliente le da importancia
al tema de comunicaciones es preferible una empresa ubicada físicamente cerca del cliente. Si se decide trabajar
con empresas desarrolladoras a distancia, además de considerar los mecanismos de comunicación a aplicar, también
podría ocurrir que hay que aceptar diferencias de horario.
Es importante consultar con
conocidos y colegas y tratar de tener varias opciones para la selección. Una vez que estos estén identificados, necesariamente deben ser
evaluados. Son importantes las visitas a sus páginas web, así como los ejemplos de
trabajos recientes. Finalmente, hay que analizar las recomendaciones que traen de trabajos anteriores y es imprescindible hablar con los
clientes-referencia.
Hay tres preguntas esenciales
que es conveniente hacer a cada empresa candidata:
a) Saben
comunicarse?
Debe
haber buena comunicación entre las partes. Un buen contratista debe preocuparse
por explicar el todo y también cada punto, no debe molestarse con las preguntas “estúpidas” y
aclarar la terminología al cliente. Si
existen dudas, hay que pensarlo muy bien antes de contratar.
b) Conocen
su materia?
No hay
garantías en la vida, pero si el contratista ha hecho un proyecto similar eso
da cierta seguridad. Hay que solicitar
ejemplos y no dudar de entrar en detalles.
Generalmente aplicaciones que tienen buena presentación visual indican que hay buen trabajo realizado por los desarrolladores. Hay que chequear referencias y allí es importante averiguar sobre la capacidad de respuesta a
la corrección de fallas de la empresa desarrolladora.
c) Entregan
a tiempo?
Sin
limitaciones de tiempo y recursos cualquiera puede construir una
aplicación. Pero como esa no es la
situación del cliente, hay que cerciorarse que el contratista tiene una record
comprobado de cumplimiento a tiempo de objetivos y proyectos. Aquí también la
consulta con los clientes-referencia es valiosa.
Definiendo el alcance de la
Aplicación
Descubrimiento es la etapa en
la que se debe lograr definir todos los detalles sobre lo que la aplicación debe ser y
debe hacer. Durante la etapa de Descubrimiento
se crean las bases para que el proyecto pueda avanzar y completarse exitosamente, esto se logra al ir aclarando expectativas y conceptos erróneos y
concretando ítems que se puedan accionar.
Es importante tener en mente que
para que todo esto funcione se requiere un buen contratista y también un buen
cliente! Se puede ser buen cliente si
desde el principio se provee:
Una clara descripción de lo que será la aplicación.
Una lista corta de las funcionalidades o características que la aplicación debe tener. Aquí se requieren solamente las más básicas.
Una lista con prioridades de las características que sería adicionalmente conveniente tener.
Ejemplos de aplicaciones similares que después de analizadas gusten al cliente
Hay que mantener siempre el
sentido de las prioridades. Desarrollo
de software es típicamente definido por compromisos, por ello la disponibilidad
de ciertas funcionalidades probablemente limitara la creación de otras.
Es determinante comunicar claramente
los tiempos del proyecto, la fecha esperada de arranque y todas las fechas
intermedias acordadas para la ejecución del proyecto. También se debe definir el soporte futuro, así como la
respuesta a fallas de la aplicación.
Todo esto se debe hacer preferiblemente por escrito.
Después de la etapa de
Descubrimiento el contratista entregará documentos que capturan el “alcance” total
del proyecto. Hay que revisar en detalle
línea por línea y diagrama por diagrama antes de firmar la aceptación. Estos documentos son los mapas del proyecto y
todo lo que esté fuera de ellos será probablemente facturado por separado el
contratista.
Cumpliendo con fechas
comprometidas
Completadas las etapas
anteriores el contratista se dedicará a codificar. Para proyectos pequeños probablemente se desaparecerá por
dos semanas y aparecerá con alguna codificación de la aplicación que ya funciona. En los proyectos más complejos habrá una
serie de puntos de revisión contra objetivos para los componentes específicos del
proyecto.
La preocupación principal
debe ser revisar con cuidado los componentes codificados, para asegurar que se
cumple con expectativas y alcances. Hay que analizar las características detalladas de la aplicación. Si algo no gusta o no funciona
hay que manifestarlo.
La entrega!!
En el Siglo XXI no existe software terminado. Las aplicaciones requieren actualizaciones para adelantarse a las amenazas de seguridad y además ya que los usuarios siempre requieren nuevas "funcionalidades". Una vez que se realiza la entrega exitosa es conveniente celebrar con el contratista, pero también planificar los próximos pasos.
El artículo original aparece en CIO.
http://bit.ly/17wD2Sh