Hoy en día a un programador se le requiere algo más que conocimientos de programación. Es necesario ganas de aprender, proactividad, trabajar en equipo, tener habilidades sociales, en definitiva trabajar cada día más y mejor.
A la hora de buscar un nuevo proyecto o de «cambiar» el proyecto/producto/compañía bajo mi punto de vista, estos son los puntos que necesita una empresa para atraer/mantener a buenos programadores. Estos puntos no están en ningún orden, solo es una reflexión acerca de que necesitan los programadores para estar cómodos en una empresa, aparte de café y cerveza 🙂
Problemas interesantes para resolver
Los desarrolladores necesitamos problemas que nos hagan pensar y poner sobre la mesa todas nuestras habilidades para afrontar retos. Estar pintando y coloreando un tiempo puede estar bien, peor todo el día haciendo lo mismo puede llegar a cansarte.
Por ello tener problemas interesantes y proyectos en los que quemar neuronas es algo muy a tener en cuenta a la hora de elegir una compañía. De la misma forma, por muy interesante que sea el proyecto el timing y el estrés deben estar controlados. Los retos solo son interesantes si disponemos de tiempo/respaldo para llevarlos a cabo.
Herramientas/Recursos para resolver los problemas
Si nos gustan los problemas interesantes, uno de los requisitos para poder resolver esos problemas son las herramientas, de la misma manera que un cocinero necesita unos buenos cuchillos un programador necesita una buenas herramientas, PC/Mac o lo que quieras, pero sería bueno que cada uno pudiese elegir que es lo que más le conviene para su labor. De la misma manera es necesario tener tiempo para poder hacer «Spikes» es decir, para poder experimentar con herramientas con las que mejorar el proyecto/producto (eso sí, siempre con #rigor)
Gratitud por parte del equipo y los superiores
Gratitud no solo por parte de los superiores, sino por parte de los compañeros del equipo. Si un compañero nos ha ayudado con una tarea o nos ha echado un cable en algo es necesario que podamos agradecerselo. Por ejemplo en Atlassian tienen Kudos la compañía da cada año 10 Kudos a cada empleado que puede gastar esos kudos en hacer un regalo a otro compañero.
Un rol, responsabilidades y objetivos
Como todo el mundo, los desarrolladores necesitamos responsabilidades. Tener una serie de responsabilidades definidas y unos objetivos que cumplir nos hacen focalizar nuestras fuerzas en conseguirlos. Los roles dentro del equipo, aunque sean rotativos, nos ayudan a saber que siente el otro, los objetivos, nos ayudan a focalizarnos y a dar lo mejor de nosotros para conseguirlos. Esos objetivos no tienen por qué ser monetarios siempre, días de vacaciones o una mejora en el equipamiento (nuevo ratón, nuevo teclado, nueva silla,…) puede ser un premio o reconocimiento por llegar a un objetivo.
Feedback
Me gusta que me digan cuando estoy haciendo las cosas bien y cuando no, creo que eso nos ayuda a mejorar. Ahora está cada vez más de «moda» hacer evaluaciones 360º para tomar el pulso dentro de la compañía. Este punto va ligado al anterior ya que el feedback nos ayuda a mejorar y a sentir como evolucionamos, los objetivos nos ayudan a focalizar nuestro esfuerzo.
Tiempo para explorar nuevas tecnologías / Realizar mejoras
Cada semana aparecen al menos 10 nuevos frameworks. Una compañía no podría sobrevivir sin investigación y sin explorar nuevas tecnologías. Al dar un poco de tiempo a la semana para explorar hace que podamos ver las cosas de otra manera, o incluso desarrollar pequeños hacks que nos ayuden en nuestro día a día.
Esto es tan simple como un par de horas por la tarde o un día al mes en el que los desarrolladores puedan probar cosas que sean beneficiosas. De la misma manera puede ser bueno tener tiempo para hacer mejoras que no tienen cabida en el día a día. Refactorizar un controller para mejorar arañar el performance o hacer un sistema para cachear/descachear Varnish de manera sencilla (GUI simple) puede ser algo en lo que trabajar un par de horas a la semana y que nos ahorrará tiempo y dolores de cabeza.
Compañeros con mayor experiencia/habilidades
¿Alguna vez has jugado a fútbol con alguien que tiene más habilidades que tú? Es la misma analogía. Los buenos desarrolladores buscan mejores desarrolladores con los que intercambiar experiencia/opiniones.
En general, los desarrolladores tendremos más retos y estaremos más «entretenidos» con compañeros con más experiencia/habilidades.
Opción de teletrabajar
Que necesites que venga a tu casa el fontanero, el electricista es un engorro, además hay día que llueve demasiado como para salir a la calle. Es una ventaja poder trabajar desde casa algunos días al mes.
Proceso definido
Da igual si utilizamos kanban, Scrum, XP o lo que sea, tener un proceso definido, en el que sabes que es lo que hay que hacer es necesario. Podemos decir que somos ágiles, pero si no podemos adaptarnos a los cambios y hacer mejorar en el proceso todo se queda en palabras. Los desarrolladores queremos un proceso definido, con unas tareas definidas y una planificación.
Un proceso definido no significa que sea rígido e inamovible, sino un proceso documentado, en el que si tienes dudas de a quien preguntar puedas echarle un vistazo al manual. Por ejemplo, si vas a realizar un cambio en las cookies o si vas a cambiar un id del código, es necesario preguntar si ese id/cookie se está utilizando en analítica para medir algún caso.
Horario flexible
El horario es importante, tener un horario flexible en el que poder entrar te hace estar mucho más cómodo y sin estrés. Permite que si un día se te pegan un poco las sábanas no tengas que dar excusas baratas para justificarte. De la misma manera, por higiene laboral es necesario coincidir con el resto de compañeros, ya sea de manera real o virtual. El tener un horario flexible, te permite tener vida antes/después del trabajo, hacer deporte, hacer la compra o apuntarte a clases de inglés.
Mejora continua
Mejora continua, no es solo hacer retrospectivas donde quejarnos/alegrarnos de lo malo/bueno que es todo. Es poder dudar de todo lo que nos rodea, es poder medir, realizar un cambio y volver a medir para ver si mejoramos. Mejora continua es tener un clima en el que proponemos una idea/mejora y esta se tiene en cuenta, se discute y si es posible se pone en práctica.
Conclusiones
Bajo mi humilde punto de vista, estos son los puntos a tener en cuenta a la hora de elegir una empresa, normalmente las ofertas de empleo solo mencionan que es lo que necesitan (PHP, Java, Mysql, CSS3, jQuery,…), pero cuentan poco acerca de la empresa, de como se organizan los equipos o como trabajan/mejoran.
Seguramente existan muchos otros puntos que no he mencionado ni de cerca, o inclusos estos puntos no son los que tú crees principales, así qué ¿Y tú? ¿cuáles añadirías/eliminarías? ¿Cómo mejorarías? Crees que es posible que cambiar/mejorar la compañía en la que trabajas ¿Cómo hacerlo?
BOLA EXTRA
He hecho una pequeña recopilación de posiciones abiertas en distintas compañías, no se si todas cumplen los puntos relacionados con el post, pero son ofertas que me han parecido interesantes y además publican la retribución:
https://docs.google.com/spreadsheets/d/1sE8Dm2CA4bnUIXn68vj4SOQOUFxY6oUR3nQofUgrtcE/edit?usp=sharing