La entrevista de trabajo que ya me resigno a no pasar

Quizás sólo me pase a mí, pero llevo años observando cómo los recién licenciados, aquellos que buscan su primer trabajo en el mundo del software, vienen mucho menos preparados. Y año que pasa… la cosa va a peor.
Por supuesto no hay generalizar, y puede ser casualidad mía, pero es que en estos últimos años la cosa llega hasta que, en las entrevistas de trabajo, ya apenas hago preguntas técnicas… porque nadie es capaz de contestarlas. Y si hay que seleccionar a alguien, la elección se acaba basando en la posible capacidad de aprendizaje del candidato (y no en los conocimientos actuales).
Algunos estaréis pensando que “menudas preguntas técnicas serán esas”. “Serán súper difíciles”. Puede ser. Esto siempre es algo subjetivo. Pero no me resigno a ver normal que un recién licenciado en informática no sepan cosas como:

  • ¿Qué es una arquitectura en 3 capas y qué tecnologías / lenguajes son más apropiados para cada capa?
  • ¿Qué diferencia hay entre una asociación entre clases y una relación de herencia? ¿Conoces algún patrón de diseño?
  • ¿Qué tipos de pruebas conoces?
  • ¿Me puedes decir un par de ciclos de vida software?
  • O ya cosas del tipo… ¿Cuál es el último libro técnico que leíste? (la respuesta más frecuente es ninguno)

Y eso que las anteriores son ya preguntas de nivel, creo, no muy alto.
A modo de anécdota, que ya parece va a quedar para el recuerdo, y por ello, para que no se olvide, he querido escribir este post, no hace muchos años, cuando trabaja en empresas de desarrollo, algunos compañeros fuimos creando un conjunto de preguntas básicas para seleccionar candidatos. En aquellos tiempos un porcentaje importante de candidatos pasaba la entrevista, hoy ya ni me molesto en pasarla. Este es un pequeño extracto:

  • ¿Qué es la trazabilidad entre productos del ciclo de vida software? ¿cómo mantendrías, por ejemplo, la trazabilidad entre requisitos y casos de prueba?
  • ¿Qué es un riesgo en gestión de proyectos software? ¿algún ejemplo? ¿Puedes decirnos métodos de estimación? (hoy la mayoría de candidatos no responde nada aquí)
  • ¿Qué buscarías en una inspección de código? (hoy la mayoría de candidatos no sabe qué es una inspección de código)
  • ¿Puedes decirnos malas prácticas de programación o diseño en un programa Java o en otro lenguaje OO? (idem, la mayoría no responde nada)
  • ¿Cuándo (en qué fase del ciclo de vida) pueden empezar las pruebas? ¿Cómo harías/diseñarías de la mejor manera la prueba unitaria de un objeto/clase si dicha clase tiene una asociación con otra? ¿cómo sacarías casos de prueba de un caso de uso?
  • ¿Puedes decirnos qué métricas conoces? ¿Qué es la complejidad ciclomática? ¿Qué significa que sea alta?
  • ¿Has trabajado con alguna herramienta de control de versiones? ¿Qué es una línea base? (os soprendería saber el número de candidatos que nunca han trabajado con una herramienta de control de versiones)
  • ¿Qué son las formas normales?
  • ¿Puedes escribir el caso de uso de este requisito?

Como habréis podido ver, las anteriores están dentro de lo que yo considero “cultura general” del desarrollo software, nada especializado, no entro ya en preguntar metodologías concretas, modelos de procesos concretos, tecnologías concretas o similar.
El cuestionario anterior es más extenso, y he dejado una última pregunta por si alguien se atreve a contestarla (esta o las anteriores)… Si sólo nos fijamos en optimizar al máximo la mantenibildiad del siguiente diseño ¿qué cambios propondrías?

25 comentarios en “La entrevista de trabajo que ya me resigno a no pasar”

  1. Pingback: Bitacoras.com

  2. Cuando coincidimos profesionalmente, te escuché un día hacer una pregunta de las buenas en una entrevista que tuvo moda que hacer juntos. El candidato no contestó (2003). No podría decir si la media es o no peor, pero la pregunta sigue siendo un hit para saber si se ha leído y comprendido. La pregunta era «Dime la diferencia entre una clase abstracta y un interfaz»
    Buen post. Un abrazo.

  3. Hola Javier, interesante el post. Esto también debe servir de referencia a los estudiantes y profesionales del software y ver cuántas de las preguntas listadas las responden.
    Saludos.

  4. Yo estudié la técnica (Sistemas) y no te abría respondido a ninguna pregunta, sin embargo esta año que he hecho el grado especialidad en ingeniería del software y te las respondía todas. Y si no hubiera elegido ese itinerario probablemente pocas hubiera respondido dado que las respuestas a estas preguntas las he obtenido en asignaturas especificas de mi itinerario. Como están organizados en muchas universidades los planes de estudios es muy normal encontrarse conque jamás han oído hablar de nada de eso (no es que no recuerden si no que jamás lo estudiaron)

  5. Yo llevo más de 20 años trabajando en la industria del software. He observado que la gente es «buena» en el dominio de una tecnología o de un entorno de manera aislada, pero desconoce muchas de las cuestiones que se plantean en el post, no comprende las interrelaciones entre las diferentes piezas de un proyecto que marcan la diferencia entre el éxito o el fracaso del mismo.
    En mi opinión, ni la carrera universitaria de informática, ni la FP ni los variopintos másters y posgrados preparan para la realidad de la profesión. Hay materias obligatorias que no tienen posterior aplicación (¿Física, Algebra, Estadística?) y en cambio faltan muchas otras de aplicación diaria.
    El tema de la normalización de bases de datos es seguramente el más grave. Por su desconocimiento, se diseñan bases de datos sin ton ni son, con nefastas consecuencias en tiempo de respuesta, deadlocks, escalabilidad, mantenimiento evolutivo, etc.
    También hay un analfabetismo casi total en el tema de diseño de juegos de pruebas y de tipos de pruebas.
    Ya ni hablamos del desconocimiento de las etapas a seguir en un proyecto de software o de como hacer un buen diseño técnico.

  6. Es correcto y terrible lo que cuentas, pero más terrible es que gente que dice que tiene 10 ó 20 años de experiencia y lo sabe todo, no tiene ni pajolera idea de responder a ninguna de esas preguntas (sean ingenieros informáticos o no).
    Lo del último libro leído, ya es suficiente para saber que clase de persona es, en mi opinión.
    Saludos.

  7. Y lo que es peor: en demasiadas ocasiones no saben (o no están acostumbrados) a pensar, lo cual merma mucho la capacidad de aprendizaje y de resolución de problemas. Pero creo que, si bien ellos (los recién licenciados) son los mayores perjudicados, no son los máximos responsables, lo somos la sociedad en su conjunto. Algo estamos haciendo muy mal para que se esté desperdiciando tanto potencial.
    Un abrazo. Dácil.

  8. Muy buen post. De las decenas de entrevistas que he hecho, sólo hice una con preguntas parecidas a las que comentas. Por suerte, acababa de terminar un curso online de UML y me pude defender un poco, aunque la verdad es que me pillo con alguna de ellas (no recordaba que era el Round Robin…) y me saco los colores pero bueno, al final me dijo que tenía una buena base.
    Intentaré repasar/estudiar tus preguntas para estar un poco más preparado 😉

  9. Pingback: Lo que le contaría a Dijkstra: cierto, si necesitas un buen desarrollador, ante todo, que sea humilde - Javier Garzás, sobre calidad software y otros temas relacionados

  10. Pingback: 5 reflexiones que te ayudarán a comprender el sector tecnológico español… y a orientar mejor tu carrera profesional - Javier Garzás | Javier Garzás

  11. Hace tiempo fui a una entrevista en la que en la parte técnica me hicieron las típicas preguntas del mundo J2EE (patrones de diseño, servicios web, etc). Actualmente trabajo en un proyecto basado en SOA, y puedo afirmar que haber sabido contestar a esas preguntas no me habría hecho mas capaz para ese puesto de trabajo.
    He visto mucho código de gente con nosecuantos años de experiencia, y que cuando le pasas Sonar salen resultados desastrosos. Porque al final estas entrevistas parecen ser un cuestionario de «cómo te defiendes en Java» en vez de «cuánta ingeniería informática sabes, independientemente de la plataforma». Hay cantidad de patrones de diseño que no son más que referencias de soluciones a problemas comunes en Java porque (especial énfasis en esto) es un lenguaje horriblemente verboso en el que algo tan común como referencias a funciones tienen que solucionarse con artificios innecesarios en otros lenguajes como Python, JavaScript o C++. Siempre recomiendo leer este excelente artículo del co-fundador de StackOverflow sobre los peligros de los licenciados en «universidades Java», y en concreto a aquellos que dicen que para qué sirve conocer varios lenguajes y paradigmas de programación.

  12. Perdón por rescatar el post. Sólo quería comentar que realmente un recien licenciado (pero recien recien) creo que sí que puede contestarte a todas esas preguntas, o al menos, recordando el temario de la carrera, creo que es así. El problema creo que viene un poco más adelante.
    Me explico. En mi caso, tras llevar trabajando 1 año después de acabar la carrera, probablemente habría dejado en blanco la mayoría de las respuestas porque no tenia las cosas «frescas». Ahora, casi 5 años después, sí que podría contestarlas, pero no a raíz de la experiencia, sino a raíz de mis inquietudes, de leer, informarme, y de implantar alguna práctica en mi trabajo tras mucho pelear y tratar de convencer a los responsables de sus virtudes, pero más testimonial que de uso diario.
    Veo que en parte el problema se achaca al modelo educativo y, sí que éste tiene gran parte de la culpa (desconozco como están los grados ahora), pero también es cierto que normalmente se trabaja bastante mal, y esto lo que hace es estancarte tecnológicamente, viéndote a ti mismo al cabo de unos años poniendo cara de poker ante preguntas tan genéricas como estas.
    De todas formas, me hubiera gustado encontrarme estas preguntas en entrevistas en lugar de algunas más enfocadas a ciertos frameworks o temas más «específicos» que, dada la gran cantidad de tecnologías que existen, es más bien imposible encontrar un perfil que encaje exactamente con lo que buscas, por lo que la mayoría de procesos creo que acaban valorando la proactividad, la actitud y la aparente capacidad de aprendizaje y adaptación del entrevistado. Cosa que no veo mala, al revés, creo que es algo positivo, dadas las circunstancias. No se si me explico.

  13. No si te acuerdas … pero yo fuy uno de aquellos que paso’ la entrevista 😉
    Por cierto otra pregunta clasica a la cual «experienced architects» no me han respondido es: si en un modelo logico tienes dos entidades con una relacion M:N, cuantas tablas necesitas para implementar el correspondiente modelo fisico? 🙂

  14. Excelente post, a mi parecer la Academia esta divorciada del mundo real. Esto es triste porque los docentes no enseñan por experiencia sino por teoría.

  15. Raffaele:
    Pues necesitas tres tablas para la representación de esa relación lógica en el modelo físico, una para cada entidad y una tabla para la relacion M:N de esas dos entidades.

  16. Me gustaría sentarte con el 99% de los profesores que he tenido y que les hicieras esas preguntas. A mí me gustaría estar presente. Recuerdo un profesor que para que te diese la guía de la asignatura casi que tenías que ponerle una reclamación (cosa que no hacías porque sabías que estarías suspenso eternamente).
    Ese no es el horror pedagógico más grande que he visto, pero vamos a correr un tupido velo.
    Yo no utilicé control de versiones hasta mi tercer trabajo, no hablo ya de que a nivel académico vi nada y menos.
    A un profesor de programación (con Java para más señas) le mostré parte de mí código de una práctica, le dije que creía que había demasiado código y que no conseguía abstraer las clases lo suficiente: ya irás aprendiendo con el tiempo (fue su respuesta). El tema es que con Java se nos enseñó la arquitectura de tres capas. Ah! Tuve un 9 en la asignatura, la nota más alta.
    Tenía un compañero que le decía a otro de cursos más bajos: javascript es como el hermano pequeño de Java…
    Yo sabría responderte a algunas y no todas esas preguntas. Y si sé algo no es ni de lejos gracias al apoyo académico ni profesional, sino que nací con ganas de aprender y ser bueno en lo que hiciera. Por curiosidad, de buscar, investigar, intentar aprender algo. Ahora, orientación ninguna.
    Esto no es para excusarme ni alabarme, esto es para ayudar, para que se vea que así vamos mal no, lo siguiente.
    Ya me gustaría a mí ver un «Javier Garzas» en cada asignatura de cada centro, y entonces habría mejores profesionales.
    Por cierto, mí último JP me dio 3 manuales en que inglés, de una herramienta que yo no había utilizado nunca (y me atrevería a afirmar que él…tampoco) y añadió: yo no hablo inglés porque prefiero vivir. A partir de ahí todo lo que ves te parece normal.
    Yo soy de los que dice: sólo sé que no sé nada. Pero es que lo triste, después de tanto esfuerzo, es que es verdad. Y dirás: pero cómo dices esto si hay gente que sabe mucho menos y ahí la tienes en su puesto de trabajo. Pues porque no voy a volver a sufrir una y otra y otra vez lo mismo. Pero vamos, que el error está en la base: la calidad de la educación.

    1. Por cierto, el último libro que leí: Alimentación sana para la Esclerósis Múltiple. ¿Se puede decir esto en una entrevista de trabajo? No. Porque las personas no son concebidas como personas ni en ambientes ágiles.
      «For me you are a resource» Cuando escuché eso de un jefe por cuya empresa había dado hasta el sueño comprendí el sin sentido que es la vida tal y como nos la pintan. Todos van a explotarte y si te tratan bien es sólo hasta que te han robado tus ideas y te han hecho implementarlas. Con este panorama …
      Un dato ilustrativo, durante el crack del 29 hubo gente construyendo chabolas en Central Park, porque se habían quedado sin nada. La gente iba a concursos de baile donde podían estar bailando hasta 24 horas seguidas, parejas que sujetaban a su esposo/a en la extenuación. El premio era comida, y sólo ganaba el que más aguantara.
      Toda información no estudiada en contexto socio-económico no es información, son datos.

  17. Ddesesperación profunda

    Una pregunta ¿alguien me puede dar el nombre de alguna empresa en la que el departamento de recursos humanos no sean niñas cuya cabeza hace la función de sujetar pelo exclusivamente? En serio. Buscan un MEAN haciendo Developer y he tenido que aclarar que JS es JavaScript. Y otra pregunta ¿qué hacen luego esas niñas con mis datos? En serio, es desesperante buscar curro en este pais. Desesperante.

    1. Desesperación profunda

      Crowdhunting lo llaman. Pero bueno, se nota que protocolo saben, porque son muy educadas y no pierden los nervios ante ninguna circunstancia (puede que sea protocolo o ignorancia en estado máximo).
      Ha sido mejor que la anterior empresa, en la que una socióloga me instó a convencerla de que sabía java… Pufff. Le dije…pásame un test y ya valorad vosotros si estoy al nivel que pedís. En qué hora… Me contrataron. Lidiar con mis compañeros «informáticos» fue peor que lidiar con la de «convenceme». Aunque era de cajón que me iba a encontrar aquello, mantenía la esperanza.
      Una de mis primeras entrevistas…Dos horas de psicotécnicos (por cierto, evaluación de tus capacidades intelectuales cuyos datos se queda la empresas, ojo), pasé. Pasamos pocos, pero es que menos 3, todos traían el test hecho de casa y encima lo dicen. Eran amigos de la gente más importante de la empresa: los de RRHH.

  18. Hola buen día, sin ganas de generar una disputa ni mucho más, me gustaría preguntarte. ¿Tu hubieras podido responder esas preguntas cuando saliste de la Ingeniería?, ¿En que universidad estudiaste?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This
Ir arriba