lunes, 10 de julio de 2017

¿Para los equipos ágiles son mejores los especialistas o los generalistas?

Los métodos ágiles están concebidos para dar la máxima importancia a las personas y potenciar sus capacidades. Estas personas son las que forman los equipos que construyen los productos software. Uno de los asuntos importantes de los que ocuparse respecto a la constitución de los equipos, es que no haya equipos que dependan de uno sólo de sus miembros para ningún asunto, es decir si esta persona no está (por ejemplo, le toca la lotería y deja el trabajo) el equipo puede seguir adelante con el producto software que están construyendo. De esto se deduce que es importante disponer de generalistas, pero como vamos a ver en el desarrollo software también es necesario disponer de especialistas.

Si acudimos a la historia, antes de la revolución industrial todo lo construían artesanos. Una característica de los artesanos es que el producto completo lo construye una única persona. Esta realiza todas las tareas necesarias para construir el producto, no está especializado y es en este sentido, un generalista. A finales del siglo XVIII, se vislumbró la importancia de la especialización de las personas y se demostró que varias personas especializadas siguiendo un proceso previamente definido, podían obtener mejores resultados que cada una por separado. Para que se entienda mejor, recurramos al ejemplo de la fábrica de alfileres del economista y filósofo Adam Smith (1723-1790). Smith dividió el proceso de construcción de un alfiler en tareas, simplificando: tensar el alambre, cortarlo, afilarlo, construir la cabeza, pegar la cabeza al alambre y colocar el alfiler en un papel. Lo que Smith demostró es que si tenemos 10 operarios y cada uno tenía que hacer todas las tareas, podría construir hasta 20 alfileres al día. Sin embargo, si se especializaba a los operarios por tarea entre todos serían capaces de construir hasta 48.000 alfileres al día. La especialización mejora la productividad en este caso.


Si miramos la especialización desde el punto de vista del conocimiento, trae como consecuencia un aumento de la capacidad de profundizar. Los avances científicos de los últimos 200 años han sido numerosos y en gran parte se han hecho posibles gracias a la especialización. Los frutos de la especialización han mejorado la vida de la humanidad: mejores fármacos, cirugía no invasiva, maquinaria avanzada, nuevos materiales, ordenadores, robots, etc.


Hemos visto que en los equipos de desarrollo software es deseable disponer de generalistas, pero también los especialistas son de vital importancia. Los generalistas nos ayudan a que el producto no dependa de determinados integrantes del equipo, sino del equipo completo. Los especialistas nos ayudan a utilizar la tecnología de la forma adecuada, siendo capaces de sacarle el máximo partido a los lenguajes, los frameworks, los IDEs, los repositorios de código, los servidores de integración continua y mucho más. En el mundo del software que cambia día a día y en el que hay tantas tecnologías emergentes, son muy importantes los conocimientos detallados. Es imposible que un desarrollador aglutine todo el conocimiento, una sola persona no puede abarcar todos los conocimientos tecnológicos necesarios para construir y explotar los productos que necesita una organización. Entonces, por una parte necesitamos especialistas que conozcan todos los detalles de determinadas tecnologías y por otra parte necesitamos generalistas que sean capaces de abordar asuntos de más de una especialidad.


Ser generalista y especialista al mismo tiempo ¿Es posible? Pues sí. Un desarrollador profesional se puede especializar en algunas tecnologías y por otra parte interesarse por tecnologías que están utilizando otros miembros del equipo. Interesarse en el sentido de ser capaces de comprender el código que el especialista ha construido/instalado/configurado y hacerse cargo de dicho trabajo.


La idea que subyace es la que describió David Guest en 1991 y más tarde popularizo Tim Brown y es el concepto de perfil T-shaped. Este perfil describe los atributos que son deseables en un trabajador. La barra vertical de la T se refiere a conocimientos detallados que profundizan en áreas específicas, mientras que la barra horizontal se refiere a la habilidad de colaborar con expertos en otras áreas de conocimiento y la disposición para utilizar el conocimiento adquirido en esa colaboración.

Concepto T-shaped
En conclusión es deseable y necesario que cuando se organice un equipo, por una parte los integrantes sean capaces de reunir conocimientos detallados de aquellas tecnologías que se vayan a utilizar y que por otra parte estén dispuestos a aprender de la especialización de los otros integrantes del equipo y enseñarles sobre su propia especialización. También hay que tener en cuenta que la especialización de los profesionales no surge de la nada, es decir es sano que el trabajo de un equipo consista en una mezcla de desarrollo e investigación. En el desarrollo software, la tecnología cambia día a día y para que los desarrolladores estén a la última es necesario que alguna parte de su tiempo lo dediquen a investigar y aprender. Este tiempo les aseguro, no será un tiempo perdido.

No hay comentarios:

Publicar un comentario