He tenido el placer de contratar a un gran equipo de desarrolladores aquí en . En este post, comparto las diez mejores ideas que tenía en mente para construir (y mantener) un gran equipo.
1. Contrata a pequeños.
Los equipos pequeños son generalmente más eficientes que los grandes, y también son más fáciles de manejar. La comunicación es más fácil con menos gente en un equipo (es un gráfico más pequeño con menos aristas), y cada persona hará una mayor contribución, lo que es genial para su moral, además de que cada uno se conectará con más de la base de código. Como Ron Jeffries escribió, «No tengo miedo de cambiar mi propio código. Y es todo mi propio código».
2. Contrata a los mayores.
¿Notan cómo las matemáticas funcionan a su favor? Contratas a un equipo pequeño, así que puedes pagar más por los desarrollos de alto nivel. Más experiencia e intuición significa que tu equipo generalmente llegará a mejores diseños al principio, lo que lleva a menos rotación más adelante.
3. Contratar artesanos.
Mientras que sus ingenieros superiores tomarán mejores decisiones de diseño por adelantado, esto no ayuda mucho cuando los requerimientos cambian después de que el producto ha sido enviado. Un artesano senior construirá un código SÓLIDO con un conjunto de pruebas que te acercarán a una curva de Beck en lugar de una curva de Boeme. Por supuesto, esto también supone algo acerca de tu proceso de desarrollo de software. No atraerás a los artesanos con una cascada.
4. Contratar a los humanos.
Tener un equipo que se gelifique bien y disfrute trabajando juntos es mucho más importante para la mayoría de los proyectos que reunir a un montón de genios egoístas que no se llevan bien. El software duradero se construye de forma sencilla, y no hace falta ser un genio para hacerlo. Obviamente quieres contratar a la gente más inteligente que puedas, pero atenúa eso contratando también a gente que encaje en tu equipo. Una gran manera de eliminar a la gente que no encaja es la entrevista en pareja.
5. Contratar mujeres.
Un estudio realizado en 2008 demostró que tener una mezcla igual de mujeres y hombres en un equipo (en realidad un poco más de mujeres) desbloquea la innovación.
6. Proveerlos.
Pregúntales qué herramientas de hardware y software necesitan, y luego se las consigues rápidamente. Los artesanos no van a pedir cosas frívolas que no mejoren dramáticamente su productividad.
7. Confía en ellos.
No tengas miedo de dejar que tu equipo se programe por defecto, es una gran manera de compartir el conocimiento sobre el sistema y crear un vínculo entre ellos. No los microdirija. Dales licencia creativa para abordar los problemas a su manera, a menos que sientas que están malinterpretando conceptos de dominio importantes. Ellos necesitan ser dueños del código, no tú.
8. Protegerlos.
No le pidas a tu equipo que trabaje horas extras. Nada de marchas de la muerte. Tengan un acuerdo verbal de que pasarán unas 40 horas a la semana trabajando para su compañía, y pasarán 20 horas a la semana de su propio tiempo manteniendo sus habilidades afiladas como sea (Bob Martin recomendó esta práctica en The Clean Coder). Protegerlos de la aleatoriedad en el resto de la compañía para que puedan concentrarse y hacer su mejor trabajo posible.
9. Gestionar como una meritocracia.
No dejes que la política de las convicciones personales se interponga en el camino de la corrección técnica, y no intentes ser una democracia. Confía en la gente con más conocimiento del sistema para impulsar las decisiones técnicas. Deberías preocuparte más por llegar a la decisión correcta, no por ganar la mayoría de los argumentos.
10. 10. Fomentar el crecimiento.
Compra suscripciones para cada uno de los miembros de tu equipo a , Safari Books Online, y cualquier otro recurso de formación técnica que tu equipo crea que puede ser útil. Déjalos que se escapen a las conferencias de vez en cuando. Anímalos a participar en grupos de usuarios, o a crear uno propio. Estas son todas las cosas que los artesanos necesitan hacer para mantener su nivel de competencia en este vertiginoso mundo del software.
Para más información sobre el desarrollo de software, consulte este completo post sobre cómo convertirse con éxito en un desarrollador de software