Este comentario de checksum me lleva a explicar un poco más la situación en mi empresa, en concreto, mi situación, tanto la teórica como la real.
Los hechos:
A mi jefa de toda la vida la han ascendido. Ahora lleva a la friolera de 30 personas. Sin embargo, ella no es responsable de los proyectos. Los responsables de los proyectos son personas ajenas a su grupo y ella tiene que asignar su gente a los proyectos, para que los vayan haciendo. Vaya, como una "software factory" interna. Su responsabilidad es que toda la gente tenga trabajo y que trabajen de una forma uniforme, reaprovechando código entre proyectos y formas de hacer las cosas comunes a todos los proyectos. Dicho en otras palabras, que cada proyecto no sea de su padre y de su madre.
La Idealidad:
Mi jefa, con toda su buena intención, pretende organizar a esa gente para que trabajen de forma adecuada, según las buenas costumbres de programación, diseños, especificaciones, sin repetir código de un proyecto a otro, test unitarios, usen las mismas herramientas, etc, etc.
Para ello y puesto que llevamos mucho tiempo trabajando juntos y sabe que a mi me gustan todos esos temas, me ha dejado fuera de los proyectos. No estoy asignado a ninguno y pretende que la ayude a alcanzar esa organización ideal.
La cruda realidad:
Mi jefa anda más liada que la pata de un romano con cosas ajenas a su grupo de gente -herencias de su cargo anterior-, así que tiempo para organizar cero patatero. Yo, al no estar asignado a ningún proyecto, soy el que queda libre, por lo que cuando hay algo de lo que nadie puede -o quiere- ocuparse, me toca a mí. Así, sigo codificando, pero no código nuevo, sino código huérfano, realizado en su día por gente que se ha cambiado de departamento o ido de la empresa.
En cuanto a organizar, por el motivo anterior tengo poco tiempo, y además, como sigo siendo un don nadie currito de decimotercera clase, lo único que puedo hacer es aconsejar a la gente formas de hacer las cosas: "haz test automáticos", "haz un diseño y mételo en la wiki", "vamos a usar maven y javahelp", "usa esta herramienta", etc, etc. En algunos campos obtengo pequeñas victorias y en otros grandes fustraciones. Ente la gente a la que aconsejo hay varias especies, cada uno de su padre y de su madre:
- Los mios. Los dos o tres que me hacen caso incondicionalmente o, al menos, se toman en serio lo que digo y lo intentan. De treinta, dos o tres es una "buena proporción".
- Los nuevos. Hacen lo que les dices normalmente sin rechistar. A los que pillo yo o los que pillan los mios, siguen los consejos. Los que caen en manos ajenas, hacen lo que les dicen sus jefes ajenos.
- Los amables. Me escuchan, me dicen que tengo razón, que sí es bueno lo que digo… y luego no hacen ni puto caso. Siguen como siempre.
- Los pasotas. Ni escuchan. Oyen cosas como "patrón de diseño", les da el bostezo, se duermen y cuando acabas tu discurso les despiertas para que sigan con su trabajo.
- Los contrarios. Te escuchan, te argumentan en contra y siguen haciendo lo que les da la gana.
- Los de la programación heroica. Todo lo que digo son tonterías, los test unitarios es perder el tiempo, las ramas de CVS son muy complicadas, incluso CVS es muy complicado, maven es un lio, el diseño no sirve para nada. Lo que hay que hacer es ponerse a codificar ya, si es posible haciendo copy-paste de un proyecto anterior, y luego probar mucho, mucho, mucho.
Así que nada, en eso estamos. Y además, viendo que las "software factories" externas son cada vez una realidad más real y que cada vez somos menos gente, te entra la duda de si merece siquiera la pena intentar cualquier cosa de organizar nada. Dentro de cuatro días igual no hacemos software nosotros y lo de maven y los test unitarios nos quedará un poco lejos.