En época de crisis se produce un curioso desequilibrio de las cosas. Por un lado, están los emprendedores que se arriesgan mucho más buscando productos innovadores con los que poder competir mejor, alejados de las tendencias impuestas por las grandes empresas del sector. Son las startups, surgidas como respuestas del estancamiento de la economía actual. Por contra, la crisis también nos obliga a deshacernos de todo aquello que se salga de la norma, siguiendo el dictado de recortes indiscriminados, persiguiendo no se sabe bién qué fines. Al final se consigue mermar la creatividad, a costa de imponer la mediocridad en todo lo que se hace.
Centrándonos en la programación python, es paradójico que en estos momentos la carencia de programadores python esté siendo una de las razones que impida crecer a algunas pequeñas empresas. Empresas que podrían ambicionar a tener un equipo de desarrollo acorde a la demanda que están teniendo, terminan por orientar su negocio a las adaptaciones para uno o dos clientes importantes, abandonando la mejora del producto en manos de la comunidad de software libre que lo crea interesante.
Antes de seguir, habría que precisar a qué nos referimos cuando hablamos de programadores python. No basta con saber la sintáxis del lenguaje, del mismo modo que no es suficiente saber coser para ser cirujano. Se está buscando un perfil concreto de programador, capaz de dar soluciones creativas e ingeniosas, y que sea capaz de expresarlas como código python al resto del equipo de desarrolladores.
Si te estás preguntándo si tú encajarías en este perfil, o bien si te preguntas cómo se haría una de estas selecciones de programadores python, en este artículo pretendo dar una idea de las preguntas de un proceso de selección de este tipo, más pensado como “filtrado” de todo perfil no deseado que en ser una exhaustiva evaluación de conocimientos. En un próximo artículo pondré algunas soluciones a estas preguntas para que así tengas tiempo para reflexionar.
1. Filtrado del simple “Hello, World!”
Antes de perder más tiempo, lo primero es preguntar al candidato si realmente sabe de python. No son pocos los que acuden con la idea de que da igual que sea python que cualquiera de los otros lenguajes “populares” como java o visual basic. Por mucho que se insista en que tiene que ser un programador experimentado en python, muchas veces te encuentras que ni es python lo que sabe, ni tampoco es experimentado.
La prueba del “Hello, World!” en python debería ser la primera prueba para descartar a los oportunistas. Otra de las preguntas más elementales sería hablar del “Zen de python”, si no recitarlo entero, al menos una explicación de la regla “Explicit is better than implicit”.
2. Preguntar por muestras de sus trabajos
Todo programador que aprecie debe tener una colección de cosas en las que haya trabajado. No tienen que ser cosas asombrosas. Pueden ser simplemente aquellas muestras de saber dejadas por internet como ayuda a los demás, tal vez un perfil de Stack Overflow o de Python Majibu donde se pueda ver qué clase de comunicador y resolvedor de problemas eres. Tal vez algún repositorio de código abierto donde participes, un blog profesional, twitter,…
Simplemente, viendo la clase de trabajos que hace la gente resulta de mucha ayuda para saber en qué destaca o no un programador.
3. Afín a la cultura de la empresa
La experiencia dice que ser afín a la cultura de la empresa asegura mejores éxitos que el ser un monstruo programando. Un ejemplo común son las empresas de software libre cuando tienden a adoptar ciertas prácticas éticas entre sus empleados como es la de compartir todo el conocimiento.
Tratándose de python, un programador en este lenguaje tiende a adoptar un perfil muy característico. Busca como fin la sencillez y la elegancia del código, antes que la optimización y eficiencia del mismo. Intenta ser “agnóstico” frente a la plataforma, que el código funcione en (casi) cualquier sitio. Sin embargo, es ávido de conocer nuevas librerías que poder emplear en sus desarrollos, siempre con python como lenguaje director de la lógica de la aplicación.
Toda esta actividad se ve plasmada en las “comunidades” python, donde se proponen y discuten sobre estos temas. Destaca la comunidad de “python hispano” como un primer lugar donde buscar perfiles apropiados, pero también se puede acudir a otros foros locales como las comunidades de python en Argentina, Perú, México,… o a foros más especializados de django o zope.
Pero una empresa que se precie, que tenga un buen producto de código abierto que ofrecer, debería ser capaz de formar su propia comunidad como punto de encuentro de los afines al proyecto, que no son sólo programadores. Esta comunidad sirve tanto para difundir la filosofía de la empresa como ser el punto de encuentro del personal afín a ella. Lamentablemente, muchas empresas han creído que una comunidad se monta mediante el bombardeo publicitario y es así como han concebido sus cuentas en las redes sociales como facebook o twitter. De este modo han conseguido consumidores fanáticos, pero muy pocos colaboradores.
A un programador hay que darle código. Las comunidades de programadores se forman alrededor de servicios como los github, bitbucket, sourceforge, launchpad, trac, etc. Si encuentras en tu comunidad un programador que te ha hecho un gran aporte o un hacker que ha dado con una extraña y oculta vulnerabilidad, contrátalo sin más dubitaciones.
4. Prueba de programación
Lo siguiente es pedir la realización de algunos programas sencillos: un detector de palíndromos, crear una expresión regular para encontrar teléfonos en un texto, una conversión de una lista de tuplas a diccionario,…
Con la prueba de programación no se busca, necesariamente, una respuesta perfecta, si no el crear un contexto donde observar al programador en su compresión de los problemas, así cómo su intento de resolverlos. Dentro de las posibilidades, es una prueba que muy bien se podría hacer online, combinando videconferencia y pizarra virtual. Si saltaran demasiadas alarmas, al ser online se podría dar por terminada la prueba en cualquier momento y así ahorrar tiempo tanto al candidato como al seleccionador.
5. Prueba real
Antes de dar el paso definitivo, se puede probar al candidato sobre un caso real como resolver algún ticket del gestor de bugs o crear una extensión sencilla en un plazo determinado. Por supuesto, no debe ser ninguna parte importante, tan sólo un medio de comprobar si el candidato es capaz de cumplir los plazos establecidos para así no desequilibrar al resto del equipo.
Idealmente, sería bueno que esta labor se realizara en las mismas instalaciones de la empresa, con los recursos de la empresa y con un contrato en prácticas.
6. Entrevista personal
Habiendo pasando todos los puntos anteriores, es casi seguro que el candidato es apto para la empresa. La entrevista está orientada más en conocer el perfil comunicativo del candidato con vistas a su integración de un equipo de trabajo. La entrevista empieza por una presentación del candidato sobre su experiencia hasta el momento. A continuación, se le realizan una serie de preguntas encaminadas a conocer del candidato su apasionamiento por lo que hace, su capacidad para comunicarse en grupos pequeños y qué podría aportar dentro de un pequeño equipo de trabajo.
7. Prueba de inglés
Se quiera o no, el inglés es el idioma común del programador, y no sólo porque toda la documentación esté en inglés. Cualquier proyecto de envergadura debe usar el inglés si quiere llamar la atención y conseguir nuevos colaboradores, ya sea en internet como en presentaciones en congresos. También empieza a ser frecuente la creación de equipos multinacionales de desarrollo. El inglés es la lingua franca de nuestros tiempos y comunicarse en inglés es fundamental para ser programador. Al ser una prueba de comunicación, la prueba de inglés podría formar parte de la entrevista personal.
8. Conclusión
Si has leído hasta aquí, espero no haberte aburrido y/o decepcionado mucho. No espero que todo lo dicho sea tomado al pie de letra. Más que una lista de reglas para buscar candidatos, he pretendido que sirva más como consejos para programadores python que buscan trabajo, sepan cómo hacerlo y, sobre todo, que se animen a buscarlos. Si de paso se amplía el número de programadores profesionales de python, mejor todavía. Ganaremos todos.