Hace un tiempo que llevo pensando que las entrevistas de trabajo no son nada equitativas. Por normal general la empresa pregunta mucho más que el entrevistado. No digo que no sea justo que la empresa pregunte, digo que nosotros no solemos preguntar suficiente.
Así que hace un tiempo me escribí una lista de cosas que iba yo a preguntar en mi turno de la entrevista. Lo que pasa es que hace un par de días seguí un enlace al blog de mr Joel Spolsky en el que recopilaba una lista de 12 puntos sobre buen código. Y yo he pensado que se le puede aplicar a empresas: The Joel Test: 12 Steps to Better Code. Ojo que el post es del año 2.000 y es perfectamente válido a día de hoy:
1 - Control de versiones (CVS, SVN o lo que sea).
Esta es crítica. Si una empresa no usa control de versiones, malo, malo. Para mi no hay desarrollo de software mínimamente serio sin poder volver a una versión anterior, saber qué cambió de una versión a otra, saber quién hizo los cambios, etc.
2 - Tener listo el producto en un paso.
Esta es importante pero no tan crítica. Es decir, lleva razón en que tener una versión funcional de tu producto (cd, web, lo que sea) tiene que ser sencillo y en el menor número de pasos posibles. Evitar hacer cosas a mano y poco documentadas como cambiar rutas de desarrollo a producción y cosas por el estilo.
3- Daily builds
No creo que sea muy importante, especialmente para el desarrollo de aplicaciones Flash, pero la idea me gusta.
4 - Gestor de bugs
Ya sea GForge, Mantis, JIRA o uno propio. Es fundamental tener todos los bugs de una aplicación en el mismo sitio y no esparramados por vaya usted a saber cuántos mails. Además es importante relacionar una nueva versión en el repositorio con un bug corregido.
5 - Corregir viejos problemas ANTES de escribir nuevas funcionalidades
Realmente buen apunte, pero creo que pocas o muy pocas de las empresas en las que he trabajado hacen esto. Y la verdad es que es muy buena idea.
6 - Tener plazos actualizados
Y reales, añadiría yo. Es importante tener unos plazos y cumplirlos. Claro que para eso los plazos deben ser realistas.
7 - Tener una especificación
Y actualizarla al finalizar el proyecto, añado. Hace poco leía no sé dónde que el desarrollo de software era tan sencillo como caminar sobre el agua, fácil si tienes una base congelada. Aunque los de eXtreme Programming tienen otro punto de vista. Tanto si tienes un documento monolítico como si vas haciendo programación ágil, durante el desarrollo de un proyecto, siempre hay pequeñas modificaciones que DEBEN reflejarse en la especificación. Y nunca hay tiempo para hacerlo sobre la marcha, así que un día extra de documentación y desintoxicación* debería ser obligatorio.
8 - Un espacio tranquilo para los programadores
Fundamental. Hay millones de artículos sobre el tiempo que tarda una persona de media en empezar a producir de verdad cuando se pone con una tarea: aproximadamente 15 minutos. Así que si te interrumpen cada poco, echa cuentas.
9 - Buen equipamiento
Igual de fundamental. Si tu IDE favorito tarda 50 segundos en abrir, si compilar un proyecto es darle al botón e irte a por un café, si renderizar una escena es hacer click y mejor vete a comer, mal vamos. Últimamente me he hecho super fan de tener 2 monitores, aunque es algo que un bonito monitor de 24 pulgadas también puede solucionar :)
10 - Equipo de testing
Hay veces que los quieres matar, pero cuanto más errores encuentran los de testing, menos errores encuentran tus usuarios. Pero hay veces que los quieres matar, claro.
11 - ¿Hacen los candidatos una prueba de código durante la entrevista?
En principio no ha lugar, aunque sería interesante saber qué proceso de selección han pasado tus posibles futuros compañeros.
12 - Tests de usabilidad de pasillo
Es decir, pillar al primero que pillas y que no tiene nada que ver con el producto y hacer con el/ella una pequeña prueba de usabilidad. Supongo que las empresas profesionales de usabilidad tendrán algo que decir sobre si es válido o no, pero seguro que están de acuerdo en que mejor eso que nada. Me gusta.
Y como extra bonus yo agrego:
13 - ¿Tienes una librería de clases propia?
14 - ¿Tus proyectos de hace un año compilan sin problemas?
15 - ¿Inviertes en formación?
En fin, una chuleta compartida para la próxima vez que vaya a buscar curro.
* ¿No os pasa que al terminar un proyecto grande (digamos un par de meses) necesitáis un tiempo para meteros de lleno en otro? Ésa es la intoxicación con un proyecto. Algunos lo llaman estar hasta los cojones, pero bueno. El caso, aprovechar el tiempo de desintoxicación para actualizar la documentación me parece una buena idea. Para ti y para el proyecto.