Constantemente cuando asesoro  empresas o doy mentorías a emprendimientos surge la siguiente pregunta al momento de comenzar un proyecto de desarrollo de software: ¿debo tener un equipo de desarrollo in house o debo tercerizar?.

Veamos cada opción en detalle.

Tercerizar desarrollo de software:

También se conoce como outsourcing y se trata de delegar a otra empresa la realización de alguna actividad con sus propios recursos humanos y tecnológicos. De esta manera, la empresa que terceriza se enfoca en su core de negocio para brindar un mejor servicio a sus clientes.

Lo bueno de tercerizar es si das con un buen proveedor de desarrollo, habrán muchos beneficios. Con un buen proveedor vas a lograr los tiempos estimados (productividad), control de tu proyecto (mejor gestión), entregables por fechas (eficiencia), desarrolladores especializados y con mucho conocimiento (experiencia).

Lo malo pues, un mal proveedor. Va a ser una pesadilla. Imagina una proveedor que no te responda los mensajes el día de la entrega y se desaparezca. Un proveedor que te haga tomar malas decisiones y te haga perder dinero. Un proveedor que tenga conocimientos básicos y no te sepa asesorar y te genere reprocesos. Un proveedor que vea solo sus propios intereses y no sea tu asesor. Muy mal todo.

Otra cosa que yo tendría en cuenta si tercerizo, es si esa empresa tiene interés de conocer mi negocio. Es decir, esa empresa quiere solo venderme un proyecto de software o está interesado en entender mi proceso y asesorarme lo mejor posible. ¿Cómo sabes si es un buen asesor?, te hará muchas preguntas con sentido y cuestionará el proceso. Quiere entenderlo.

Desarrollo de software in house (propio de la empresa):

Por otro lado tenemos el desarrollo interno ó in-house que consiste en que la empresa tiene su propio equipo de programadores y analistas para sus desarrollos de software.

Lo bueno de tener un equipo in house es la facilidad para probar, iterar y realizar un nuevo proyecto/funcionalidad si el equipo de desarrolladores da la talla. Si el equipo es bueno podrán construir nuevas funcionalidades en pocos días (cuidado que debe haber una metodología para esos “cambios”).

Si tienen más de 2 desarrolladores, pues la gestión de dichos desarrolladores es más compleja y necesitarán a un líder técnico con skills de gestión de personal.

 

Ya con un poco de idea y definición, pensemos que debemos tener en cuenta si me decido por uno u otro.

Si me decido por tercerizar

  1. Revisar la experiencia previa de mi proveedor. ¿Ha hecho proyectos similares antes?, ¿Qué opinión tienen sus otros clientes?.
  2. ¿Cuál es la metodología para gestionar el proyecto?. Es decir, ¿cómo aseguran el cumplimiento del proyecto en las fechas establecidas?.
  3. ¿Cómo demuestra que ha entendido mis requerimientos y va a entregar lo que espero al final del proyecto? .
  4. ¿Cómo maneja los imprevistos y cambios en el transcurso del proyecto? Este punto es importante porque demuestra poder de gestión (cambios pueden haber en un proyecto y se traducen en un nuevo costo, pero lo importante es saber la manera cómo los va a gestionar y el control en el histórico de cambios).

Nota: un proyecto de software jamás se mide por cuántas líneas de código se escriben. Se mide por tiempo, complejidad y y recurso humano necesario para lograrlo.

Si me decido por tener mi equipo de desarrollo in house

  1. ¿Cuántos años de experiencia tiene el desarrollador que quiero contratar?. Ha programado proyectos similares, conocer su experiencia en proyectos de software.
  2. Prueba técnica en los lenguajes de programación que se requira para el puesto.
  3. ¿Tiene skills de gestión de personal?. Tan fácil como preguntar si ha manejado equipos previamente y cómo los gestionaba.
  4. ¿Qué habilidades blandas detecta en ese programador?.

Nota: hay varios perfiles de programadores: programador frontend, backend, devOps, full stack, CTO. Dependiendo de lo que se requiera en el sistema.proyecto deberán conocer cuál tipo de programador requieren.

Aspectos a tener en cuenta en las dos opciones (al tercerizar o al desarrollar in house):

  1. El tener malos desarrolladores afecta tanto al desarrollo in house como cuando tercerizan. Los malos desarrolladores son los que no cumplen entregables, y cuando entregan, entregan mal. O mejoran, o es necesario buscar otro recurso.
  2. El costo. ¿No es más alto el costo al contratar una empresa externa?. Pues a veces sí y a veces no. Porque resulta que dependiendo del proyecto te puede salir más barato a mediano y largo plazo tercerizar que tener un equipo de programadores internos pagando su nómina mensual. Pero, a veces tener un equipo interno te va a dar más beneficios así sean más caros.

¿Y entonces, tercerizo o no?

Si tienen el presupuesto para pagar un equipo de desarrolladores de software interno a lo largo del tiempo  que desarrolle nuevas funcionalidades, que dé soporte de manera óptima a sus sistemas actuales (PQR’s), que sepa de gestión de proyectos, que conozca las tecnologías y lenguajes de programación que están buscando y tenga experiencia previa en proyectos similares al que quieren empezar, es una buena decisión desarrollar in house.

Si por el contrario, el proyecto que desean empezar exige skills y conocimientos que su equipo de desarrollo no posee, no tienen el tiempo para armar un buen equipo de desarrolladores mediante head hunters, no tienen la experiencia en proyectos similares, no saben que tecnologías usar para resolver los requerimientos del proyecto, no saben como gestionar un proyecto de desarrollo de software para que se cumplan los tiempos requeridos, yo recomiendo que un tercero les eche la mano, es decir, contratar una empresa desarrolladora de software.

Hay casos en que las empresas tienen su equipo interno desarrolladores y aún así contratan empresas externas para ayudarles con nuevos proyectos de desarrollo de software. Sobre todo por un tema de enfocar a su equipo en dar soporte a sus sistemas actuales dejando que la empresa externa de desarrollo tome los nuevos proyectos cunpliendo los tiempos acordados. Un caso muy común, son los bancos.

Conclusiones:

  1.  Sea que quieras/tengas un equipo de desarrollo de software interno o un proveedor de software, la gestión del proyecto es fundamental. Anáisis de requerimientos, alcance, objetivos, limitaciones y cumplimientos de tiempos hará que el desarrollo tu proyecto se eficiente sin importar cuál camino escojas.
  2. Un buen proveedor de desarrollo de software (externo) y un buen equipo de desarrolladores (in house) no son baratos, la experiencia siempre cuesta. El tema de calidad de software y cumplir los tiempos que solicitan los clientes exige tener muy buenos programadores e ingenieros y éstos no son baratos de contratar.
  3. ¿Cómo me aseguro que al final del proyecto obtendré lo que estoy buscando?. Va de nuevo, gestión de proyectos. Una metodología muy conocida actualmente en el desarrollo de software es scrum.

 

Si les gustó ó no el artículo, déjenos sus comentarios y dudas acá abajo. Pueden compartir el artículo en su Linkedin, blogs y me citan por ahí.

 

¡Saludos!