Preguntas sobre… en una entrevista a un “desarrollador”

Normalmente cuando te encuentras ante un proceso de selección para un puesto técnico, tanto siendo la persona que realiza el proceso como el que se presenta tienes que enfrentarte a una batería de preguntas durante la/s entrevistas.

En este post vas a ver una recopilación de preguntas que podrían hacerte en una pruebas de selección relacionadas con desarrollo software o programación en PHP. No tienes qué conocer todas las respuestas a estas preguntas, es más la honestidad en la respuesta diciendo “no lo sé” es algo (bajo mi punto de vista) muy a valorar en un proceso de selección. Son solo una batería de preguntas que puedes repasar si vas a enfrentarte a un proceso de selección.

Aunque antes de seguir debes tener en cuenta una serie de consideraciones: estas preguntas están sacadas de vivencias personales, comentarios con compañeros o compañías que tienen públicos sus procesos de selección. No soy un experto en recruiting ni pretendo serlo (seguro que cometeré algún que otro gazapo, te ruego que comentes en el post y lo corregiré encantado) solo quiero aportar mi opinión acerca de qué pueden preguntar en las entrevistas y lo más importante IMHO el porqué de estas preguntas.

16456389452_7e096568c2_z
Foto extraída de “-Instantes- kris” en Flickr

Depende del perfil que estén buscando o al puesto que hayas aplicado creo las preguntas serán más técnicas, creo que a un perfil Junior puede que te realicen preguntas más técnicas solo por saber cuanta “hambre por aprender” demuestras. En cambio si están en busca de un perfil más senior tendrás preguntas más sobre arquitectura, diseño, patrones o management.

Preguntas sobre “el puesto”

  • ¿Conocías la compañía? ¿Has podido ver que hacemos?
  • ¿Qué te interesa de esta posición?
  • ¿Qué puedes aportar a esta posición?

A nadie le gusta que le hagan perder el tiempo, si una entrevista no te interesa coméntalo y si te decides ha hacerla aprende y busca más acerca de la empresa y del puesto. Es cierto que muchas veces las ofertas dejan bastante que desear pero somos libres de no aplicar si no nos sentimos atraídos por la oferta.

Preguntas sobre “conceptos software”

  • ¿Qué diferencia hay entre una cola(queue) y una pila(stack)?
  • ¿Que significa la expresión “pasar por referencia”?
  • Clases abstractas e interfaces ¿que diferencia hay?
  • ¿Qué es un ORM? ¿Qué es MVC? ¿Qué alternativas hay al patrón MVC?
  • ¿Te suena el concepto de dependencia de inyección? ¿inversión de dependencias?
  • ¿Qué patrones conoces aparte de Factory Pattern?
  • ¿Que diferencia hay entre un Mock y un Stub?

Habitualmente no es normal que conozcas al dedillo un lenguaje, que sepas todas las triquiñuelas que tiene, sobre todo si se trata de Javascript o PHP 😉 por lo que tener preguntas sobre conceptos generales son muy normales a la hora de afrontar un proceso de selección.

Como hemos comentado antes, no es necesario que conozcas todas las respuestas, ya que son conceptos que pueden que no te suenen o que los hayas oído pero no tengas claro lo que son. Sé franco y responde con sinceridad.

Preguntas sobre “Agile”

  • ¿Conoces Scrum? ¿Kanban?¿eXtreme Programing?
  • ¿Conoces los roles y artefactos de Scrum?¿reunión diaria? ¿retrospectiva?
  • ¿Conoces conceptos Test Driven Development (TDD),Behaviour Driven Development (BDD) o similares?
  • ¿Estas familiarizado con el concepto de Pair Programming? ¿Y con Code Review?
  • Sabes algunas técnicas de refactoring ¿cómo lo afrentas?

Este tipo de preguntas son para ver si conoces estos conceptos o si anteriormente has trabajado bajo un “marco de trabajo” agile. No pasa nada si no has estado en una compañía que practique agile o algo que se le parezca siempre pueden explicarlo como hacen los chicos de Tecnilógica. Creo que estas preguntas solo advierten sobre cómo has trabajado antes y puede que sirvan al entrevistador cual ha sido tu bagaje anterior en cuanto al mundo agile.

Preguntas sobre “Ecosistema Desarrollo de Software”

  • ¿Que herramientas de automatización has usado? ¿Jenkins? ¿Phing? ¿Travis?
  • ¿Cómo despliegas en producción? ¿MagePHP? ¿Capistrano? ¿Ansistrano? ¿script personalizados? ¿Por FTP?
  • ¿Has oído hablar de Vagrant? ¿Docker? ¿Los has utilizado?
  • Estas familiarizado con los estándares de código PSR-2, Zend Standard
  • Autoload, ¿require o include? PSR-4
  • ¿Conoces Composer?
  • ¿Te suena PHPUnit? ¿Behat?

Aquí conocerán cómo o cuánto automatizas los despliegues a producción o si estas familiarizado con estándares de código (algo IMHO indispensable cuando se trabaja en equipo). Son características de tu manera de programar que quizás con una prueba de código no pueden verse al 100%.

Como indentas el código, si los nombres de variables son los aceptablemente buenos, si has utilizado tests, si sabes de que va eso de PSR4 y los namespaces, como resuelves un problema, como nos expresamos,… caracteristicas como esta son las que podrían verse en una prueba de código. Pero resolver por n-ésima vez Fibonacci o la kata FizzBuzz no creo que demuestren que seas un ninja de la programación.

Preguntas sobre “SQL y Bases de Datos”

  • ¿Qué diferencia hay entre una vista(View) y una tabla(Table)?
  • ¿Qué hace la cláusula HAVING?
  • Estas familiarizado con las bases de datos NoSQL

Depende del perfil que estén buscando estas preguntas serán más “rebuscadas” o irán a conceptos más básicos. SQL es muy amplio y pueden preguntarte relaciones con JOIN’s, MongoDB o incluso quizás con ejemplos.

Preguntas sobre tu día a día programando

  • ¿Linux, Mac, Windows?
  • ¿Cuál es tu framework favorito? ¿y el menos?
  • ¿Qué IDE usas?
  • ¿Control de código fuente? ¿Git? ¿Cónoces estrategia de branching como Git flow?
  • ¿Has utilizado algún bug tracker como Jira, Trello o similar?
  • ¿Cómo debugueas?
  • ¿Prácticas TDD, BDD o similar?¿PHPUnit?
  • ¿Estás habituado a tratar con código legado?
  • ¿Has trabajado en remoto?

Estas preguntas no son decisivas ni mucho menos, en mi opinión solo sirven para romper el hielo y/o relajar la tensión. Al final quien nos está entrevistando también programa o programaba y por ello conoce IDEs, herramientas y a partir de hay es fácil empezar a charlas de puntos afines o de discordia Linux vs Mac, PHPStorm vs Eclipse, Vi o Emacs,… ;);)

Preguntas “motivacionales”

  • ¿De tus trabajos previos qué te ha gustado más/menos?
  • Si tiene trabajo, ¿por qué quieres cambiar de trabajo? ¿Qué es lo que más valoras de un trabajo?
  • ¿Qué estás orgulloso de haber hecho en el trabajo? ¿A qué problemas de te has enfrentado?
  • Si tú fueras el entrevistador ¿qué cualidades valorarías más? ¿Qué es lo que más valoran de ti tus compañeros?

Estas preguntas son para determinar si la empresa y tu encajáis, si estáis buscando lo mismo ya que ahí estas contando lo que valoras en una compañía, lo que le pides a una compañía, si serías capaz de enfrentarte a los retos que la compañía tiene y cuanto puedes aportar a la compañía como profesional y como persona.

Consideraciones finales

Como he dicho al principio este post solo recopila una serie de preguntas que podrían hacerte durante un proceso de selección, no soy un experto en recruiting así que esto es solo mi visión personal desde un lado de la mesa. El hecho de que no sepas responder a una pregunta no va a excluirte del puesto automáticamente la idea detrás de estas preguntas es bajo mi punto de vista aprender a construir un discurso coherente con el puesto al que has aplicado basándote en tus experiencias profesionales. Es decir, avalado por tu curriculum y tus experiencias ser capaz de responder a estas preguntas de una manera honesta y sincera de tal modo que puedas 4

Anuncios

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s