31 de octubre de 2013

Cómo hacer outsourcing del desarrollo de aplicaciones (CIO)

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

No hay comentarios.:

Publicar un comentario