¿Cómo crear un buen departamento de programación en tu empresa?

Una de las preguntas más inquietantes e importantes a la que cada empresa que se dedica a programar y vender software hoy en día le tiene que buscar una respuesta es cómo construir un gran equipo interno de desarrolladores, es decir, cómo crear un buen departamento de programación en la empresa. En este artículo explicaré cómo lo hacen las empresas de software en las que he trabajado y que les ha funcionado.La mejor manera de crear un buen producto es contratando un buen equipo para la tarea, obviamente. Sin embargo, reunir a un buen equipo y asegurarse de que funcionan bien entre sí es un proceso largo, que toma muchísimo tiempo. Perder tiempo no es un lujo que una empresa se pueda permitir, por lo que minimizar el tiempo necesario para construir un gran equipo de desarrollo de software en cualquier empresa debe ser una prioridad.Superada la fase inicial, en la que los programadores de la empresa suelen ser los propios fundadores de las mismas, o un empresario que contrata a un equipo externo dedicado a la programación de su idea de producto de software, hay que consolidar el proyecto y para ello muchas start-ups y programadores autónomos apuestan por construir un departamento de programación.Antes de ponernos a montar un departamento de programación para la empresa debemos tener en cuenta las ventajas y los inconvenientes de tener un departamento de programación interno.

Ventajas e inconvenientes de montar un equipo de desarrollo

Lo ideal para cualquier empresa de software es tener su propio equipo de programadores, que implica que los fundadores (sean ellos mismos programadores o emprendedores que han creado un software haciendo uso de desarrolladores externos) tiene que saber delegar y también elegir el momento perfecto para hacerlo.¿Cuándo se debe empezar a montar un departamento de programación? Sinceramente, lo mejor es que se haga SOLO cuando el producto ya se ha lanzado y el proyecto es sostenible. En ese momento la empresa será capaz de hacer frente a los costes que conlleva montar un departamento de desarrollo, ya sea por vía de la financiación o por los ingresos generados. Hay que tener en cuenta que:

  • Los desarrolladores internos están en nómina. Ya estén a pleno rendimiento añadiéndole mayor valor al producto o dedicándole su tiempo a garantizar que el producto funciona de manera estable por medio de mantenimientos, tienen que cobrar sus nóminas mes a mes.
  • Los desarrolladores internos y los analistas de software son piezas fundamentales a la hora de hacer equipo, fijar los flujos y procedimientos de trabajo, y de darle vida a la cultura de la empresa. Es un proceso largo de muchos años y cualquier error o equivocación en la base del proyecto puede ser muy costoso a largo plazo.
  • Las incorporaciones al equipo de desarrollo deben hacerse de una en una, y esto no es una tarea sencilla. Esto implica que algunas partes del producto o algunas iteraciones en su evolución se tienen que posponer hasta que no se contrate al especialista más indicado. Se puede ir tirando con un la ayuda de externos, pero lo óptimo es que todos los puestos claves estén cubiertos por miembros de la empresa.
  • Lo más normal es que se contrate a un único especialista para cubrir cada parte del flujo de trabajo. Si un especialista se va de vacaciones, deja el puesto o se ve obligado a coger un baja, su parte correspondiente del proceso de desarrollo se detiene. La substitución mediante externos puede ser una solución temporal, pero la redundancia en los puestos clave resulta fundamental para tener cubiertos los flujos en todo momento. Esto conlleva pagar dos sueldos, lógicamente. Una solución intermedia es tener algún miembro del equipo todoterreno, que pueda cubrir huecos sin tanta brillantez pero de forma resolutiva.

Sin embargo, la creación de equipos de desarrollo de software internos tiene un impacto positivo en la evolución de cualquier empresa de software que quiere crecer por muchas razones:

  • Experiencia continuada y conocimiento en profundidad del producto que se está programando. El equipo de programación que trabaja en el producto de software en el día a día lo conoce mejor que cualquier externo y puede evaluar mejor el estado actual de los problemas. Además puede aportar a la hora de tomar decisiones sobre la evolución del producto.
  • Cultura de empresa y plena disponibilidad. La plantilla desarrolla respeto y actitud positiva hacia la empresa si se les trata bien. Esto hace que el hecho de tener que meter horas y gestionar las incidencias fuera del horario laboral fijado sea más fácil si se de el caso.
  • La acumulación de destrezas aporta valor añadido. Si tu equipo de desarrollo está lo suficientemente motivado termina invirtiendo tiempo en adquirir nuevos conocimientos y destrezas de programación que los convierte en profesionales más valiosos. Lo normal es que también pidan un aumento de sueldo, sí, pero tener un equipo de desarrollo motivado a bordo es en sí mismo un gran activo. Un equipo de tales características puede aportar valor tanto a los clientes como a la propia empresa, haciéndola más atractiva a la hora de conseguir financiación y también a la hora de conseguir nuevas contrataciones.

Con todo esto no quiero desanimarte a la hora de crear un equipo de programación interno, simplemente aconsejar que solo se debe hacer cuando la empresa sea capaz de mantenerlo en el tiempo. Hasta entonces, es mejor que los socios fundadores sigan programando o contando con la ayuda de equipos externos.

3 consejos para crear un departamento de programación en la empresa

A continuación voy a enumerar y explicar 3 consejos que he visto que aplican las empresas de desarrollo de software en las que he trabajado. Hay otras cosas que son importantes, pero en mi opinión estos tres consejos son imprescindibles, independientemente de que haya otros factores que también hay que tener en cuenta, y que también se pueden aplicar a empresas de otros sectores que buscan crecer.

#1 Se necesita a un experto para contratar a un experto

Si tienes una pequeña empresa de software incipiente, quizás no puedes permitirte usar servicios de headhunters, pero en verdad no te hace falta si inviertes un poco de esfuerzo en buscar una figura que supla ese papel.Como fundador de una empresa de software, puede que tengas una idea muy clara del problema real que tu software busca solucionar y que sepas de programación y bastante, pero NO se espera de ti que seas un hombre-orquesta que sepas de desarrollo front-end, de desarrollo back-end, de pruebas de unidad, de desarrollo para móviles iOS/Android y todas las demás facetas dentro del ciclo de desarrollo. Por ello, necesitas la ayuda de expertos.Los expertos en cualquier campo necesitan estar visibles. Suelen mostrarse activos en blogs, en foros, en grupos de programación o en meetups y eventos del estilo. Es bueno tenerlos de mano para intentar obtener su ayuda o asesoramiento. Lo normal es que colaboren por el tipo de perfil que son.Muchos de ellos te pueden dar la pista para que encuentres al candidato ideal, o incluso postularse ellos mismos para el cargo. Pero la información más importante que podemos obtener de ellos son los detalles del perfil que necesitamos en relación con la pila tecnológica que debe saber gestionar, como debe interactuar con otros perfiles de programación. Además, incluso puedes negociar con dicho experto que te ayude a la hora de hacer las entrevistas y evaluar a los candidatos a nivel técnico.La opinión de un externo de confianza es muy importante a la hora de tomar cualquier decisión de este tipo.

#2 Evalúa a los candidatos con pruebas de programación

Una vez que cuentas con al ayuda de algún experto de confianza, puedes empezar a poner los medios para intentar que tu equipo de desarrollo tenga el nivel que necesitas.Es indispensable encontrar un buen jefe de programación. Los buenos programadores que saben liderar suelen conocer bien cuales son sus fortalezas y sus debilidades y no se asustan ante tareas complejas ni les intimida la sana competencia dentro del propio equipo de programación. Además, si se establece un buen ambiento de trabajo, sabrán evaluar con buen juicio la complejidad de las tareas y delegar al miembro del equipo mejor cualificado para llevar a cabo la misma.Tanto para encontrar un buen líder para el departamento como para escoger al resto del equipo, en muchas empresas que están empezando usan la figura del experto que hemos citado arriba para crear pruebas de programación que sirvan para evaluar las destrezas de los candidatos. La idea es que tenga cierta complejidad técnica, especialmente en el caso del prospecto a líder del departamento, ya que el perfil que buscamos en este caso tiene que estar curtido en la resolución de problemas. Tiene que programar como un veterano, independientemente de la edad que tenga. Con este tipo de pruebas puedes hacer un corte que te permita seleccionar a los tres mejores para realizar una entrevista personal. En mi opinión el mejor candidato llegados a esta fase será el que tenga las mejores habilidades blandas, es decir, un buen comunicador, un líder con confianza en si mismo, y un ejecutor diligente que sea capaz de supervisar el trabajo con eficiencia.Un buen líder de un departamento de programación debe tener las siguientes habilidades blandas:

  • Comunicación: la habilidad blanda más importante para un desarrollador. Tiene que saber cómo expresarse y tener buenas habilidades comunicativas para poder hablar con el equipo y sus compañeros de manera efectiva, sin malentendidos, con asertividad y empatía.
  • Pensamiento crítico: en una revisión de código, esta es la habilidad que se busca. Cuestionarlo todo e ir tras las respuestas,
  • Adaptación: la tecnología cambia cada día. Nuevos frameworks, nuevos productos, nuevos compañeros en el equipo de desarrollo… ¡Todo es nuevo cíclicamente! Tiene que saber readaptarse estudiando nuevos lenguajes de programación, nuevas bibliotecas y estar siempre preparado para los cambios.

#3 Monta el equipo y empieza a trabajar

Si la evolución del producto de software de tu empresa no es demasiada compleja, la contratación de un par de programadores especialistas junto con un perfil de diseño será suficiente para formar la columna vertebral del equipo. Si el proyecto es desafiante y complejo, tendrás que pasar un poco más de tiempo contratando a más perfiles para añadir más músculo. Ten en cuenta que un jefe de programación fuerte tenderá a querer contratar ejecutantes fáciles de gestionar aunque técnicamente tengan margen de mejora, y esto es bueno para tu proyecto empresarial cuando se empieza. Repita los pasos 2 a 3 hasta que te sientas seguro de que el equipo que has construido es capaz de lidiar con el trabajo diario.

Conclusiones finales

Parece que ya estás listo para arrancar, ¿no? Sin embargo, hay ciertas complicaciones obvias que mencionamos al describir las diferencias entre la contratación de un equipo dedicado de desarrolladores de software y la construcción de un equipo de este tipo desde cero en la casa.Las dificultades incluyen (pero no se limitan) a la necesidad de pagar los salarios desde el primer día, el hecho de que el producto no puede se puede completar si algún especialista no está contratado todavía y el riesgo de frenar o detener el progreso general si alguno de los miembros del equipo decide dejar la empresa.Ten todo esto en cuenta antes de dar el paso, y luego disfruta del viaje.

Déjanos tus datos para probar la plataforma