Gastón Ramos
Blog personal
Guía de Entrevista técnica para Rubystas
Escrito en dos mañanas del 16 y 17 de Julio de 2024Hace menos de un mes que vengo haciendo algunas entrevistas de trabajo. El proceso me genera preguntas sobre qué debería observarse en una entrevista técnica y cómo evaluar la experiencia de una forma justa.
Pero bueno, también entiendo que del otro lado no es fácil tampoco, por que ¿cómo hacer para chequear/comprobar que la persona que están por contratar está calificada para el trabajo? repito once again, no es fácil. Ahora me voy a poner del lado del empleador/entrevistador, y por supuesto que tengo que hacerme las preguntas del rigor, a saber; ¿Cuáles son las cosas importantes que debo obeservar? ¿Qué es lo importante para mí *empleador* o para mí como CTO? ¿Cuáles son los aspectos innegociables? ¿Cuáles son los negociables? Obviamente que debo hacer un análisis de este hermoso problema que es contratar programadores.
¿Qué significa ser un buen programador?
¿Qué es ser un buen Rubysta?
Cómo siempre yo voy a hacer mi lista de cosas importantes, y acá vamos...
- Pasión
- Ser Pragmático, resolución de problemas, ser resolutivo
- Ruby, conocimentos del lenguaje buscado
- Entender el stack de Rails y poder explicarlo
- TDD
- SQL
- Ser exquisito con el código
- Linux/Shell / Shell Scripting
- Saber manejar bien el editor que uno elige
- Saber manejar bien la terminal
- Saber explicar cómo funciona HTTP, de forma simple
- Saber explicar cómo funciona un servidor Web
- Dominar Git
- Conocer las versiones de Rails y Ruby
- Ser austero con las deps
- Tener muchas ideas, poder expresarlas rápidamente en código (spykes)
- Colaboraciones en proyectos Open Source
- Escribir cosas en un Blog
- Formar parte de una Comunidad
- Saber instalar y configurar un Servidor Web
Pasión in Natta, no exista tal cosa
Son muchas cosas ¿eh? jajaja. Bueno vamos una por una. ¿Por qué es importante para mí que un programador tenga Pasión? ¿Es innegociable? Son dos muy buenas preguntas y vamos a intentar responderlas.
La pasión es importante, no sé si innegociable, pero es muy importante, por que cuando uno siente pasión por lo que hace, se apropia de las cosas y siempre quiere mejorar, es como una sed de conocimientos y de logros. Tener pasión es discutir con amigos si Ruby es mejor que Python, o discutir si tenemos que programar 100% TDD, o si la programación funcional es mejor que la programación Orientada a Objetos, tener pasión es hacer algo y querer mostrarseló a un amigo para que vea ese script tan genial que acabás de escribir o entrar en estado de Flow. Ahora bien, ¿la pasión es algo que viene con uno? la pasión ¿es algo que se tiene o no se tiene? NO La pasión se gana, y para esto hay que trabajar, y hay que trabajar duro para poder tenerla y sentirla, de hecho el trabajar duro en algo que sea difícil de hacer, que requiera habilidades genera estado de Flow, y por lo tanto pasión. Tener pasión es amar lo que hacemos
Volviendo al tema en cuestión, ¿es detectable la pasión? ¿Cómo podemos detectar pasión en un Programador? Excelente pregunta mi querido Gramos. Un Programador con pasión es un hacker en su buena acepción: alguien curioso, que disfruta los desafíos y busca resolver problemas de forma inteligente.
Para un hacker el aburrimiento es su enemigo número 1: disfruta hacer cosas interesantes y enfrentarse a problemas que nunca haya resuelto.
Detectando la Pasión
Una buena manera de conocer qué entusiasma a un Programador/Candidato es preguntarle por un problema que haya disfrutado resolver, algo que haya aprendido recientemente o un proyecto que haya querido compartir con otras personas. Las respuestas importan, pero también debemos prestar atención a cómo explica sus decisiones, lo que aprendió y las ventajas y desventajas de los caminos que eligió. El interlocutor tiene que ser lo suficientemente hábil para hacer que el candidato no se sienta examinado, sino que sienta que está en una charla entre amigos, de esta forma él podrá responder a estas preguntas con soltura y de forma genuina.
Quiero decir que la detección de la pasión no es fácil y que si vos lector tenés más ideas me escribas a ramos.gaston@gmail.com
Ser Pragmático, resolución de Problemas
¿Qué significa ser Pragmático?
No están fácil de explicar...
Pero bueno ser pragmático implica aprender algo nuevo todos los días,
por más que no sea algo tan grande, pero lo importante es hacerlo todos
los días, ser prgamático es hacerse responsable de las cosas,
mejorar el código de nuestro proyecto día a día, no tener miedo a los cambios,
adoptar una nueva tecnología sin miedo, en cuestión de días,
testear nuestro código con tests automáticos, hacer automatizaciones,
comunicarse de forma efectiva con los demás, confiar en el equipo
y en los compañeros.
Recomiendo fuertemente leer
El programador pragmático.
Conocimientos de Ruby
Voy a escribir una guía de conocimientos del Lenguaje, la voy a hacer basada en Ruby, pero se puede tranquilamente trasladar a otro lenguaje.
- Instalación y Manejador de Versiones ( Rbenv, Chruby, ruby-install )
- Operaciones con listas ( map, reduce, iteradores )
- Operaciones con Strings ( gsub, tr, regexs )
- Clases, objetos, módulos
- Tests (Rspec, Minitest)
Bueno en este punto debemos observar cómo el candidato utiliza las herramientas de las que venimos hablando, podremos observar como se maneja usando la terminal, como usa el editor, como escribe el programa y cómo lo prueba, es importante hacer una lista de las cosas que queremos observar y dejar por escrito cuáles son las habilidades que debe demostrar.
Probablemente continúe...
Lecturas recomendables:
Como hacer lo que amas (Paul Graham)Grandes Hackers (Paul Graham)