Equipo tecnológico dentro o fuera de tu empresa ¿qué es mejor?

Es 2015, si tu empresa (o start-up) no está integrada a toda la dinámica que se vive hoy en día, probablemente tu negocio se quedará atrás. Si eres el CEO, gerente, administrador, jefe o cualquier cargo alto (o medianamente alto) estarás al tanto de la necesidad de modernizar los procesos y las herramientas de trabajo, para esto probablemente inveritrás en infraestructura tecnológica, tanto hardware como software, que te acompañen en este proceso de renovación, he aquí el dilema: “¿contrato un equipo full time dentro de mi empresa o lo externalizo?”

Suena bien, varios ingenieros trabajando a tiempo completo dentro de tus oficinas, donde tomas tú las decisiones de que harán y estás a cargo de absolutamente todo, hasta el último detalle, pero tomar la determinación de tener un equipo de TI propio puede ser una buena o una mala idea.

El rol del jefe de proyecto

Alguien que lidere a tu equipo de ingenieros informáticos/computación es clave, esta persona tiene que tener conocimientos acabados de la informática, entender el rol de cada uno de los integrantes de sus programadores, ser el arquitecto de software para idear un sistema coherente con la necesidad que se está buscando solucionar, entre otras cualidades.

Si tu te sientes con las competencias necesarias para ser el jefe de proyecto es porque probablemente tienes estudios y/o bastante experiencia en el rubro de las tecnologías de la información, si tu realidad es esa probablemente estés capacitado para liderar e implementar un equipo de desarrollo dentro de tu empresa.

En el caso contrario, si no sabes sobre informática o simplemente no tienes los conocimientos necesarios, no vas a poder desempeñar el rol de jefe de proyecto de tus desarrolladores, el cuál es clave para organizar a este equipo.

En el caso de externalizar el desarrollo a una empresa de desarrollo de software, el jefe de proyecto es alguien que debe estar, va a ser la persona que será el puente de comunicación entre el equipo y tu empresa. Probablemente esta persona reúna todas las cualidades necesarias para llevar a cabo el/los proyectos, desde la parte de ser el líder, vocero y en la parte técnica.

Protip: si vas a trabajar con otra empresa, asegúrate de conocer a quién será el jefe de proyectos.

Equipos multidisciplinarios

Un equipo de desarrollo debe realizar al menos tener las siguientes competencias:

  • Análisis
  • Arquitectura (no siempre, pero para proyectos grandes y duraderos es recomendado)
  • Desarrollo back-end
  • Desarrollo front-end y/o móvil
  • Diseño de interfaces
  • Quality assurance
  • Administración de servidores

Todas estas disciplinas son necesarias para que el proyecto resulte correctamente. Por lo general cada una de estas competencias se le destinan a un profesional dedicado a una en particular, por lo cuál tu equipo ideal de una o dos personas se acaba de transformar en un equipo de 6 o 7 personas.

En términos financieros es caro tener un equipo multidisciplinario y competente, pero fuera del factor económico, tener un equipo completo de desarrollo dentro de una empresa que su rubro no tiene relación directa con la tecnología es complejo.

Que en tu empresa no cuenten con las capacidades tanto de infraestructura como técnicas de mantener un equipo así de dinámico no quiere decir que una empresa donde externalices el desarrollo lo cuente, muchas compañías de software cuentan con una serie de programadores full-stack que hacen de todo y claramente no es lo óptimo.

A la hora de tomar la decisión si el desarrollo de tu proceso de modernización o de implementación de un nuevo sistema en tu empresa lo harás de manera interna o externa, ten en cuenta el factor del equipo multidisciplinario, ¿tu negocio cuenta con la capacidad de tener a un equipo multidisciplinario? Porque sí, es necesario un equipo que tome los proyectos desde todas las aristas. Y si decides contratar una empresa que se haga cargo, ¿esa empresa cuenta con un equipo capacitado de abordar el proyecto desde todas las aristas?

Protip: invertir en aseguramiento de calidad (QA) al principio, te va a ahorrar dinero a futuro. Asegúrate de contar con un analista de quality assurance (ya sea en tu empresa o en la que vaya a desarrollar)

Responsabilidad, disponibilidad y atención al cliente

El sistema está caído, es algo normal por lo demás (sobre todo en las primeras semanas de la puesta en producción del sistema), comunicarte con tus desarrolladores externos puede ser todo un desafío, en cambio si están dentro de tus oficinas es cosa de caminar un par de metros.

En el mundo tecnológico que tus desarrolladores sean responsables y estén disponibles cuando lo necesites es crucial, una falla en el sistema puede borrar información de la base de datos, si es que no se soluciona lo antes posible, y eso es equivalente a una perdida de dinero (por lo general, mucha), cuando esto pasa, necesitas que tus desarrolladores estén presentes y si hagan cargo del problema, lo resuelvan y disminuyan lo máximo posible las pérdidas.

Si cuentas con un equipo interno la disponibilidad es inmediata, están ahí y puedes ir a ver que pasó y solucionarlo, pero en términos de responsabilidad hay que tener cuidado; que sea tu equipo no implica que sea responsable en el desarrollo. Un equipo, sea cuál sea, debe tener un compromiso con lo que está haciendo y tener clara conciencia de los fines de sus acciones, todo software tiene un fin (por lo general comercial) y ahí debe radicar su énfasis.

Es complejo hablar sobre responsabilidad y disponibilidad en equipos externos, siempre ha sido y probablemente será el mayor punto de inflexión con externalizar tu desarrollo. Los freelancer (no todos) cuentan con esa fama de irresponsables y con un canal de comunicación bastante difícil, la frase “mi desarrollador me dejo botado” se escucha día a día en el rubro. Sin duda alguna las empresas, en menor medida, cuentan con ese mismo problema, la disponibilidad y responsabilidad. En caso de externalizar, hay que tener extremo cuidado con esto, volviendo al primer punto de discusión, el rol del jefe de proyecto es fundamental para la comunicación eficaz.

Protip: siempre establecer metas claras para el desarrollo, contar con información clara del progreso y comunicación constante con los desarrolladores.

Tiempo destinado al desarrollo

Realizar un desarrollo tecnológico no es solo tener el equipo, se requiere tiempo, aunque no se externalice el proyecto, el rol de la persona que está a cargo del proyecto es de ser el cliente. Cuando un desarrollo se realiza en serio probablemente tengas reuniones paródicas con el equipo, te envíen información, sea necesario validar la documentación, aparecerán percances, todo esto suma y el tiempo se va agotando.
Lidiar con un equipo externo requiere más tiempo que el interno, súmale la movilización a sus oficinas, no todo está bajo tu control absoluto, lidiar con un equipo interno es más sencillo porque la comunicación es más fluida.

Sin duda alguna tu sabrás mejor respecto a tus tiempos y como invertirlos, pero cabe destacar que un desarrollo requiere atención suficiente y si se deja de lado podría ser crítico.

Protip: en el caso de externalizar el desarrollo asegúrate de tener clara las vías de comunicación y tener reportes periódicos del avance.

Entonces… ¿internalizar o externalizar?

Depende. Hay muchos factores que lo determinan, pero el que es más clave es ¿qué tan crítico es este desarrollo para tu empresa? A partir de esto, la siguiente pregunta es ¿tenemos la capacidad para liderar la parte tecnológica dentro de la empresa?

Grandes empresas (algunas en Chile como: Falabella, Salcobrand, The North Face, Banco de Chile, entre otras) decidieron externalizar su parte tecnológica, dejando solamente un gerente tecnológico a cargo de lidiar con los desarrolladores. Esta decisión fue principalmente la ineficiencia de contar con un equipo completo dentro de sus oficinas y la necesidad de agilizar sus procesos de desarrollo.

En Nursoft nos hemos dedicado a abordar esta problemática inconclusa para muchas empresas, ser el equipo tecnológico de estas, principalmente por los factores que comentamos. Por lo anterior, muchas empresas buscan agilizar sus procesos con un equipo capaz de estar a la par con sus objetivos económicos y que pasen a ser socios comerciales claves en sus negocios.

Respondiendo a las dos preguntas anteriores, si el factor tecnológico es crítico en tu empresa, la respuesta lógica (y en busca de que el resultado sea el mejor posible) es encontrar la manera más eficiente de lograr el mejor producto, para esto el líder del proyecto es fundamental. Si no cuentan con las capacidades técnicas para llevar a cabo el proyecto, es mejor externalizar el desarrollo con una empresa responsable y multidisciplinaria en su área.

Aunque estés trabajando con la mejor empresa de desarrollo de software, nunca dejes de estar atento a todo el proceso, puedes confiar mucho en ellos, pero nunca te desligues.

Cuadro resumen

Tus alternativas son:

  1. Internalizar si es que cuentas con las capacidades de liderar un equipo tecnológico dentro de tu empresa.
  2. Externalizar si es que no cuentas con las capacidades de liderar un equipo tecnológico dentro de tu empresa.

Sea cual sea tu opción hay que tener en cuenta las siguientes tres variables en consideración:

  • Costos de ambas alternativas (relación precio-calidad y costo-oportunidad)
  • Canales de comunicación
  • Rol del jefe de proyecto (tanto como lider y la parte técnica)