
¿No le parece extraño que cuando vaya a cambiar su lugar de trabajo y necesite pasar por una entrevista, en primer lugar piense que "necesita prepararse para la entrevista"? Resuelva problemas en HackerRank, lea Crack la entrevista de codificación, memorice cómo funciona ArrayList y cómo difiere de LinkedList. Ah, sí, todavía pueden pedir clasificaciones, y obviamente no será profesional decir que la clasificación rápida es la mejor opción.
Pero espere, programa 8 horas al día, resuelve tareas interesantes y no triviales, y en el nuevo lugar de trabajo hará más o menos lo mismo. Pero, sin embargo, para aprobar la entrevista, debe prepararse de alguna manera, no solo para perfeccionar sus habilidades diarias, sino para aprender lo que no necesitaba en su lugar de trabajo actual, o es poco probable que sea necesario en la próxima. Ante sus objeciones de que la informática está en nuestra sangre, y nos despierta en medio de la noche, estamos obligados a escribir con los ojos cerrados en una funda de almohada un paseo alrededor de un árbol sin siquiera recuperar la conciencia, responderé que si me instalo en un circo, y mi principal este es el truco, tal vez sí, estoy de acuerdo. Necesitas verificar esta habilidad.
Pero, ¿por qué evaluar habilidades que son irrelevantes para su trabajo actual? ¿Solo porque se ha puesto de moda? ¿Porque Google está haciendo esto? O porque su futuro líder de equipo tuvo que aprender todos los métodos de clasificación antes de pasar por una entrevista y ahora cree que "todo buen programador debe saber de memoria la implementación de encontrar un palíndromo en línea".
Pato, no eres Google (s). Lo que Google puede pagar, las compañías comunes no pueden. Google, analizando los datos de sus empleados, llegó a la conclusión de que es específicamente con él, específicamente con sus tareas, los ingenieros con un pasado olímpico son capaces de lidiar. Además, al construir el proceso de selección, pueden permitirse el riesgo de no contratar a varios buenos ingenieros debido a que no saben cómo hacer clic en problemas matemáticos tan fácilmente. Pero para ellos no importa, hay muchas personas que quieren trabajar en Google, el puesto se cerrará.
Ahora miremos por la ventana, y si todavía hay más campistas frente a su oficina que no querían trabajar para usted, y es más probable que sus desarrolladores busquen en stackoverflow la próxima anotación de Spring, en lugar de las sutilezas de los algoritmos de clasificación, entonces, muy probablemente, Debes pensar si copiar a Google.
Bueno, si esta vez Google falló y no dio una respuesta, ¿qué debo hacer? Verifique exactamente lo que hará el desarrollador en el trabajo. ¿Qué valoras en los desarrolladores?
Establezca criterios para quién desea contratar y desarrolle pruebas que evalúen estas habilidades particulares.
Trabajos de pensamiento
¿Qué tiene que ver ThoughtWorks con esto? Fue aquí donde encontré un ejemplo de una entrevista modelo para mí. ¿Quiénes son ThoughtWorks? En resumen, esta es una empresa de consultoría de alta gama con oficinas en todo el mundo desde China, Singapur hasta las Américas, que ha estado asesorando en el desarrollo durante aproximadamente 25 años, tiene su propia división de Ciencias, dirigida por Martin Fowler. Si busca una lista de 10 libros que deben leerse para el ingeniero de software, entonces 2-3 de ellos serán escritos por personas de ThoughtWorks, como Refactoring By Martin Fowler y Building Microservices: Designing Fine-Grained Systems de Sam Newman o Building Arquitecturas evolutivas
por Patrick Kua, Rebecca Parsons, Neal Ford.
El negocio de la compañía se basa en la provisión de servicios bastante caros, pero el cliente paga por la calidad fenomenal, que consiste en experiencia, estándares internos y, por supuesto, personas. Por lo tanto, es de vital importancia contratar a las personas adecuadas.
¿Qué tipo de personas tienen razón? Por supuesto, para cada uno lo suyo. ThoughtWorks determinó que para su modelo de negocio para desarrolladores, los criterios más importantes son:
- Capacidad para emparejar el desarrollo. Es habilidad, no experiencia o habilidad. Nadie espera que las personas que han estado practicando la programación de parejas durante unos 5 años vengan, pero ser receptivo a las opiniones de los demás, poder escuchar es una habilidad necesaria.
- Capacidad para escribir pruebas y practicar idealmente TDD
- Comprenda SOLID y OOP y pueda aplicarlos.
- Presenta tu opinión. El consultor tiene que trabajar con los desarrolladores del cliente, con otros consultores, y no hay mucho beneficio si la persona sabe cómo hacer algo bien, pero es completamente incapaz de transmitir esto al resto del equipo.
Ahora es importante evaluar con precisión estas habilidades del candidato. Y aquí quiero hablar sobre mi experiencia de entrevistar en ThoughtWorks. Diré de inmediato que fui a Singapur y pasé, pero el proceso de reclutamiento está unificado y no diferirá mucho de un país a otro.
Etapa 0. HR
Como suele suceder, una entrevista de 20 minutos con RRHH. No me detendré en eso, solo puedo decir que nunca he conocido a RR.HH. que podría hablar sobre la cultura de desarrollo en la empresa durante 15 minutos, por qué usan TDD, por qué programar en pares. Por lo general, los recursos humanos hablan sobre esta pregunta y dicen que tienen un proceso normal: los desarrolladores desarrollan, los probadores prueban, los gerentes manejan.
Etapa 1. ¿Qué tan bueno eres en OOP, TDD?
1.5 horas antes de la entrevista, me enviaron una tarea para hacer un simulador Mars Rover.
Quest Mars roverLa NASA aterrizará un escuadrón de rovers robóticos en una meseta en Marte. Esta meseta, que es curiosamente rectangular, debe ser navegada por los rovers para que sus cámaras a bordo puedan obtener una vista completa del terreno circundante para enviar de vuelta a la Tierra. La posición y ubicación de un móvil se representa mediante una combinación de coordenadas x e y y una letra que representa uno de los cuatro puntos cardinales de la brújula. La meseta se divide en una cuadrícula para simplificar la navegación. Una posición de ejemplo podría ser 0, 0, N, lo que significa que el móvil está en la esquina inferior izquierda y está orientado al norte. Para controlar un rover, la NASA envía una simple cadena de letras. Las letras posibles son 'L', 'R' y 'M'. 'L' y 'R' hacen que el rover gire 90 grados hacia la izquierda o hacia la derecha, respectivamente, sin moverse de su lugar actual. 'M' significa avanzar un punto de la cuadrícula y mantener el mismo rumbo.
Suponga que el cuadrado directamente al norte desde (x, y) es (x, y + 1).
ENTRADA
La primera línea de entrada son las coordenadas superior derecha de la meseta, se supone que las coordenadas inferior izquierda son 0,0.
El resto de la entrada es información perteneciente a los rovers que se han implementado. Cada móvil tiene dos líneas de entrada. La primera línea da la posición del rover, y la segunda línea es una serie de instrucciones que le dicen al rover cómo explorar la meseta. La posición está compuesta por dos enteros y una letra separados por espacios, correspondientes a las coordenadas x e y y la orientación del móvil.
Cada rover se terminará secuencialmente, lo que significa que el segundo rover no comenzará a moverse hasta que el primero haya terminado de moverse.
SALIDA
La salida para cada móvil debe ser sus coordenadas finales y rumbo.
NOTAS
Simplemente implemente los requisitos anteriores y pruebe que una aspiradora funciona escribiendo pruebas unitarias para ello.
Crear cualquier forma de interfaz de usuario está fuera de alcance.
Se preferirá resolver el problema siguiendo un enfoque TDD (Test Driven Development).
En el poco tiempo disponible, nos preocupa más la calidad que la integridad.
* No puedo publicar la tarea que me enviaron, esta es una tarea antigua que se me asignó hace varios años. Pero créeme, básicamente todo sigue igual.
Por separado, quiero prestar atención a los criterios de evaluación. ¿Cuántas veces te has enfrentado a una situación en la que las cosas que son importantes para el candidato son completamente irrelevantes al verificar y viceversa? No todos piensan de la misma manera que usted, pero muchos pueden aceptar sus valores y seguirlos si se establece claramente. Entonces, a partir del criterio de evaluación, queda claro de inmediato que las habilidades más importantes en esta etapa son
- TDD
- Capacidad para usar OOP y escribir código compatible;
- emparejar habilidades de programación
Entonces, me advirtieron que pasara estas 1.5 horas pensando en cómo iba a hacer la tarea, en lugar de escribir código. Escribiremos el código juntos.
Cuando llamamos por teléfono, los chicos dijeron brevemente quiénes eran y qué estaban haciendo y se ofrecieron a comenzar el desarrollo.
Durante toda la entrevista, nunca tuve la sensación de estar en una entrevista. Existe la sensación de que está desarrollando código en un equipo. Si te quedas atrapado en algún lugar, te ayudan, aconsejan, discuten e incluso discuten entre ellos la mejor manera de hacerlo. En la entrevista, olvidé cómo en JUnit 5 verificar que el método arroja una excepción: sugirieron continuar escribiendo la prueba, mientras que uno de ellos buscó en Google cómo hacerlo.
Apenas unas horas después de la entrevista, recibí una respuesta constructiva: qué me gustó y qué no. En mi caso, alabado por usar las clases Sealed como una alternativa al objeto \ null; porque escribí un pseudocódigo antes de escribir el código, como si quisiera controlar el móvil, y así obtuve un bosquejo de las clases, al menos las que están involucradas en la API del robot.
Etapa 2. Cuéntanos
Una semana antes de la entrevista, me pidieron que preparara una presentación sobre cualquier tema que me interesara. El formato es simple y familiar: 15 minutos de presentación, 15 minutos de respuestas a preguntas.
Elegí Clean Architecture por el tío Bob. Y de nuevo un par de personas me entrevistaron. Esta fue mi primera experiencia de presentación en inglés y, tal vez, si estuviera en una situación estresante, no lo habría logrado. Pero nuevamente, nunca tuve la sensación de estar en una entrevista. Todo está como siempre. Te digo que están escuchando atentamente. Incluso la sesión tradicional de preguntas y respuestas no fue como una entrevista, estaba claro que las preguntas se hicieron para no "hundirse", sino para aquellas que realmente me interesaron en mi presentación.
Un par de horas después de la entrevista recibí un comentario: la presentación fue muy útil y realmente disfrutaron escuchando.
Etapa 3. Código de calidad de producción
Después de advertir que esta es la última etapa de las entrevistas técnicas, me pidieron que llevara el código al estado listo para producción en casa, luego lo enviara a una revisión y programe entrevistas en las que los requisitos para la tarea cambiarán y el código deberá modificarse. Mirando hacia el futuro, puedo decir que la revisión del código se lleva a cabo a ciegas, los revisores no conocen el puesto al que está postulando el candidato, no ven su CV, ni siquiera ven su nombre.
Llamé por teléfono, y de nuevo un par de chicos al otro lado del monitor. Todo es como en la primera entrevista: lo principal es no olvidarse de TDD, decir lo que está haciendo y por qué. Si no ha practicado TDD antes, le recomiendo que comience a hacerlo de inmediato, no porque sea necesario en las empresas, sino porque simplifica enormemente su vida y reduce el estrés si lo desea. ¿Recuerda cómo tuvo que buscar frenéticamente con un depurador un error que se reproduce solo a través del navegador, pero no puede reproducirlo con pruebas? Ahora imagine que tiene que detectar ese error durante la entrevista: se le proporcionan un par de canas. ¿Qué nos proporciona TDD? Cambiamos el código e inesperadamente nos dimos cuenta de que las pruebas ahora son rojas, pero ¿cuál es el error que no se puede entender la primera vez? De acuerdo, les decimos "Vaya" a los entrevistadores, presionamos Ctrl-Z y comenzamos a caminar en pequeños pasos hacia adelante. Y sí, la capacidad de desarrollarse usando TDD, necesita desarrollarse en sí mismo, la capacidad de ir a la meta para que sus pruebas sean permanentemente verdes y no rojas durante medio día, porque "tiene mucha refactorización". Esta es exactamente la misma habilidad que la capacidad de escribir código compatible o código productivo.
Entonces, qué tan bien se presta su código para cambiar depende del diseño que estableció originalmente, qué tan simple es y qué tan buenas son sus pruebas.
Después de la entrevista, recibí un comentario en unas pocas horas. En esta etapa, me di cuenta de que prácticamente había pasado y que quedaba muy poco hasta "reunirme con Fowler".
Etapa 4. Final. Suficientes preguntas técnicas. ¡Queremos saber quién eres!
Honestamente, estaba algo desconcertado por tal formulación de la pregunta. ¿Cómo puedo entender qué tipo de persona soy en una hora de conversación? Y aún más, ¿cómo puedo entender esto cuando hablo un idioma que no es nativo para mí y, francamente, es muy pésimo y sin palabras? En entrevistas anteriores, fue más fácil para mí personalmente hablar que responder preguntas, y el énfasis era la culpa. Al menos uno de los entrevistadores era asiático, y su énfasis, bueno, digamos, es algo específico para el oído europeo. Por lo tanto, decidí adoptar un enfoque proactivo: preparar una presentación sobre mí y al comienzo de la entrevista ofrecer ofrecer hablar sobre mí con esta presentación. Si están de acuerdo, entonces al menos habrá menos preguntas para mí, si rechazan la oferta, bueno, 3 horas de mi vida dedicadas a la presentación no son un precio tan alto. ¿Pero qué escribir en la presentación? Biografía: nació allí, luego, fue a la escuela, se graduó de la universidad, pero ¿a quién le importa?
Si buscas un poco en Google sobre la cultura Thoughtworks, puedes encontrar un artículo de Martin Fowler [https://martinfowler.com/bliki/ThreePillars.html], que describe 3 pilares: negocios sostenibles, excelencia en software y justicia social.
Supongamos que ya he comprobado Software Excellence. Queda por mostrar negocios sostenibles y justicia social.
Además, decidí centrarme en lo último.
Para empezar, te dije por qué ThoughtWorks: mientras aún estás en el instituto, lee el blog de Martin Fowler, de ahí el amor por el código Clean.
Los proyectos también se pueden presentar desde diferentes ángulos. También desarrolló un software para la medicina que facilitó la vida de los pacientes e incluso se rumoreaba que había salvado una vida. También desarrolló software para bancos, también una especie de simplificación de la vida de los ciudadanos. Especialmente si el 70% de la población del país usa este banco. No se trata de Sberbank y ni siquiera de Rusia.
¿Quieres saber de mi? Esta bien Mi pasatiempo es la fotografía, de una forma u otra he estado sosteniendo la cámara en mis manos durante aproximadamente 10 años, hay fotos que no son muy embarazosas para mostrar. Además, en un momento, ayudé a un refugio para gatos: fotografié gatos que necesitan un hogar permanente. Y con buenas fotos es mucho más fácil adjuntar un gato. Probablemente filmado con cien gatos :)Finalmente, el 80% de la presentación que tuve estuvo llena de gatos.
Inmediatamente después de la presentación, HR me escribió que aún no conocía los resultados de la entrevista, pero toda la oficina ya estaba impresionada con los gatos.
Al final, esperé por los comentarios: satisficí a todos como persona.
Pero Recursos Humanos en la conversación final dijo con tacto que la Justicia Social es muy buena y necesaria, pero no todos los proyectos son así. Y le pregunté si esto me asusta. En general, fui demasiado lejos con la Justicia Social, sucede :)
Resumen
Como resultado, llevo varios meses trabajando en Singapur en Thoughtworks, veo que aquí muchas empresas adoptan las "mejores prácticas de entrevistas" de Google, utilizando folletos y pizarras blancas para la codificación, a pesar de que el conocimiento está más allá de Spring, Symfony, RubyOnRails ( subrayado) no se requiere en el trabajo. Los ingenieros toman una semana libre antes de una entrevista para "prepararse".
En Thoughtworks, además de los requisitos adecuados para un candidato, los siguientes principios se ponen a la vanguardia:
Alegría de las entrevistas. Por otra parte, para ambos lados. De hecho, si desea obtener el mejor personal (¿y quién no quiere?), Entonces la entrevista no es un mercado donde se eligen esclavos, sino novios, donde tanto el empleador como el candidato se evalúan mutuamente. Y si un candidato asocia emociones agradables con una empresa, es probable que elija esta empresa.
Múltiples entrevistadores para mitigar sesgos. En Thoughtworks, la programación de pares es el estándar de facto. Y si esta práctica se puede aplicar en otras áreas, TW está tratando de hacerlo. En cada etapa, 2 personas realizan una entrevista. Por lo tanto, al menos 8 personas evalúan a cada persona, y TW intenta seleccionar entrevistadores con diferentes antecedentes, diferentes direcciones (no solo técnicos) y género.
En última instancia, se tomará una decisión sobre la contratación basada en la opinión de al menos 8 personas, y nadie tiene voto de calidad.
Contratación basada en atributos En lugar de tomar decisiones basadas en los gustos / disgustos del candidato, se ha desarrollado un formulario para cada rol y para cada etapa, incluidos los atributos que se evalúan. Al mismo tiempo, al evaluar, se recomienda evaluar no la experiencia de una habilidad en particular, sino la capacidad de aplicarla. Por lo tanto, si el candidato no pudo aplicar ninguna habilidad como TDD, pero de todos modos trata de aplicarlo, escucha consejos para un uso adecuado: tiene todas las posibilidades de obtener una entrevista.
No se requieren certificados de educación TW no requiere que los candidatos obtengan certificados obligatorios o educación en informática. Solo se evalúan las habilidades.
Esta es la primera entrevista de las que fui a empresas extranjeras para las que no tuve que prepararme. Después de cada etapa, no me sentí exprimido como un limón, pero por el contrario, me alegré de poder aplicar las mejores prácticas, de que las personas del otro lado del monitor lo aprecien y también las apliquen todos los días.
Después de unos meses, puedo decir que las expectativas se cumplieron por completo. ¿En qué se diferencia ThoughtWorks de una compañía normal? En una empresa normal, puedes encontrar buenos desarrolladores y personas agradables, pero en TW su concentración se sale de escala.
Si desea unirse a ThoughtWorks, los trabajos abiertos se pueden ver
aquí.También sugiero prestar atención a las vacantes interesantes:
Ingeniero principal de software: Alemania ,
Londres ,
Madrid ,
SingapurIngeniero de Software Senior: Sydney ,
Alemania ,
Manchester ,
BangkokIngeniero de software: Sydney ,
Barcelona ,
MilánIngeniero de datos sénior: MilánAnalista de calidad: Alemania ChinaInfraestructura: Alemania ,
Londres ,
Chile(Quiero advertir honestamente que el enlace es una referencia, si vas a TW, obtendré una buena bonificación). Elija una oficina a su gusto, no es necesario estar limitado solo a Europa, después de todo, cada 2 años TW estará encantado de transportarlo a otro país, porque Es parte de la política de ThoughtWorks, por lo que la cultura se difunde y promedia.
Siéntase libre de hacer preguntas en los comentarios o pedirme que lo recomiende.
Si el tema parecía interesante, escribiré sobre cómo funciona en ThoughtWorks y cómo vive en Singapur.