Prácticas en TI: visión del gerente



Continúa el reclutamiento para una pasantía de verano en Yandex. Va en cinco direcciones: backend, ML, desarrollo móvil, frontend y análisis. En este blog, en otros blogs sobre Habré y más allá, puede encontrar mucha información privilegiada sobre cómo va la pasantía. Pero mucho en este proceso sigue siendo un misterio para quienes no trabajan para la empresa. Y si observa desde el punto de vista de los gerentes de desarrollo, entonces hay aún más preguntas. ¿Cómo realizar una pasantía, cómo maximizar la utilidad mutua con un pasante, cómo lograr aprenderla en tres meses y enseñar todo lo que se requiere para seguir trabajando?

Preparamos este artículo cinco de nosotros. Nos presentamos: Ignat Kolesnichenko del servicio de tecnología informática distribuida, Misha Levin del servicio de inteligencia artificial del mercado, Denis Malykh del servicio de desarrollo de aplicaciones, Seryozha Berezhnoy del departamento de desarrollo de interfaz de búsqueda y Dima Cherkasov del grupo de desarrollo antifraude. Cada uno de nosotros representa su campo de prácticas. Todos somos gerentes, necesitamos pasantes y tenemos algo de experiencia trabajando con ellos. Permítanos contarle algo de esta experiencia.

Entrevista previa a la pasantía


Los candidatos esperan varias entrevistas técnicas. El éxito en la entrevista depende en menor medida de las habilidades blandas (capacidad para comunicarse de manera efectiva) y más en las habilidades duras (habilidades en matemáticas y programación). Sin embargo, los gerentes valoran ambos.
Ignat:
Incluso si una persona es muy genial, pero no comunicativa, no podrá aplicar todas las habilidades. Por supuesto, prestamos atención a esto, pero esta no es una razón para no llevar a alguien a una pasantía. En tres meses, todo puede cambiar y, además, su primera impresión puede estar equivocada. Y si todo está correcto, será necesario que la persona explique, busque otros equipos. Para los alumnos, la sociabilidad definitivamente no es un factor clave. Aún así, las habilidades profesionales son mucho más importantes.
Denis
Me gusta la gente que cuenta historias, en el buen sentido. Una persona que puede decir cómo trató heroicamente un fakap con un equipo es interesante. Empiezo a hacer preguntas adicionales cuando aparece una historia así. Pero esto rara vez sucede si solo pide "hablar sobre algo interesante en sus proyectos".

Una vez, un candidato pronunció una frase maravillosa, que incluso escribí: "Evité con éxito las tareas tediosas".



Como no hay mucho tiempo para comunicarse, el entrevistador trata de obtener información útil sobre el candidato cada minuto de la reunión. Es genial si el interno hubiera descubierto de antemano qué detalles de su experiencia (no del currículum) podría compartir. Esta debería ser una historia corta estrictamente sobre el caso.
Denis
Presto atención si una persona dice que probó muchos idiomas, enfoques. Las personas con horizontes más amplios proponen soluciones más elegantes en modo combate. Pero esta es una ventaja ambigua. Puedes agarrar la parte superior, pero en serio no aprender nada.

El tiempo en las historias descritas por Denis generalmente solo se mantiene en la entrevista final. Hasta entonces, es necesario demostrar el conocimiento fundamental y práctico que formará la base del trabajo futuro. Y, por supuesto, deberá escribir el código en una pizarra o en una hoja de papel.
Misha
Probamos el conocimiento de la teoría de la probabilidad y la estadística matemática. Observamos si una persona tiene experiencia trabajando con métricas, con algoritmos de aprendizaje automático, ajustando sus parámetros, con reentrenamiento, etc. Esperamos que una persona pueda escribir código lo suficiente como para ser analista.
Denis
Quienes vienen a una entrevista en su mayoría saben idiomas: en Ekaterimburgo tenemos una buena escuela de idiomas básicos, buenas instituciones. Pero para ser honesto, un candidato a pasantía con buenas habilidades es un caso raro, al menos en nuestro vecindario epsilon. Por ejemplo, Swift. Es muy difícil trabajar con cuerdas, y hay pocas personas que puedan trabajar con ellas fuera de mi cabeza. Para tal ojo se aferra inmediatamente. A menudo doy una tarea en las entrevistas, que está precisamente relacionada con el procesamiento de línea. Y durante todo el tiempo solo había una persona que, de inmediato, en una hoja de papel, pudo escribir un código Swift de ese tipo. Después de eso fui y les dije a todos que alguien finalmente pudo resolver este problema en Swift en una hoja de papel.

Algoritmos de entrevista


Este es un tema aparte, ya que los candidatos aún tienen la pregunta: ¿por qué siempre evaluamos el conocimiento de algoritmos y estructuras de datos? Incluso los futuros desarrolladores de dispositivos móviles y los proveedores frontales pasan esta prueba.
Misha
En la entrevista, definitivamente damos algún tipo de rompecabezas algorítmico. El candidato necesita descubrir cómo implementarlo en Python, preferiblemente sin errores. Debe comprender cómo verificar su programa y arreglarlo usted mismo.



La experiencia en algoritmos es útil por tres razones. En primer lugar, obviamente será necesario en problemas algorítmicos, que ocurren con poca frecuencia, pero aún suceden. En segundo lugar, el desarrollador podrá resolver de manera más eficiente los problemas relacionados con los algoritmos, aunque no requiera ingresar a los algoritmos (y ya hay bastantes de ellos). En tercer lugar, si no le enseñaron algoritmos en la universidad, pero aún sabe cómo trabajar con ellos, entonces esto lo caracteriza como una persona curiosa y elevará su autoridad a los ojos del entrevistado.
Denis
La mayor parte del desarrollo móvil es JSON Shifting. Pero una vez cada seis meses hay momentos en que se necesitan algoritmos. Ahora estoy dibujando hermosos mapas para Yandex.Weather. Y en una semana tuve que implementar un algoritmo de suavizado, el algoritmo Sutherland-Hodgman y el algoritmo Martinez. Si una persona no supiera lo que sería un hashmap o una cola prioritaria, se sentaría durante mucho tiempo y no está claro si lo habría logrado o no sin ayuda externa.

Los algoritmos son la base del desarrollo. Esto es lo que ayuda a un desarrollador a ser desarrollador. No importa lo que hagas. También son necesarios en proyectos simples, donde el trabajo principal consiste en "JSON cambiante". Incluso si no escribe los algoritmos por sí mismo, sino que utiliza implícitamente cualquier estructura de datos, es mejor comprenderlos. De lo contrario, obtendrá aplicaciones que funcionan lenta o incorrectamente.

Hay programadores que llegaron al desarrollo académicamente: ingresaron a la universidad, honestamente no aprendieron durante cinco años y recibieron una especialidad. Conocen los algoritmos porque se les ha enseñado. Y luego, el conocimiento de algoritmos no caracteriza los horizontes de una persona, es necesario verificar estos horizontes de otra manera.

Y hay autodidactas, a las que me considero. Sí, formalmente, tengo una educación en TI, un diploma en ingeniería de software. Pero las personas autodidactas aprendieron a programar "contrario". No tenían un programa universitario. Por lo general, no están familiarizados con los algoritmos, porque nunca se han encontrado con la necesidad de estudiarlos. Y cuando esa persona entiende los algoritmos, esto significa que pasó tiempo y los descubrió. Al terminar la universidad, me di cuenta de que tenía puntos blancos en la parte de los algoritmos fundamentales; el hecho es que se aplicó la especialidad. Fui y estudié cursos en línea en la Universidad de Princeton, el conocido Robert Sedgwick. Entendido, hizo toda la tarea. Y cuando una persona en la entrevista cuenta una historia similar, inmediatamente me intereso, hay un deseo de trabajar con él, o al menos continuar la conversación.


Ignat:
Cuando entrevista a un aprendiz, en cierto sentido, espera aún más que de un desarrollador experimentado. Estamos hablando de la capacidad de resolver problemas algorítmicos, escribir rápidamente al menos algún tipo de código correcto. Un candidato para una pasantía: todavía está en la universidad. Hace apenas un año, le contaron todo sobre los algoritmos en detalle. Se espera que pueda reproducirlos. Si la persona es adecuada y escuchó atentamente las conferencias, simplemente sabrá todo y lo sacará del caché.

¿Qué tareas resuelve el alumno?


Por lo general, el programa de pasantías se puede describir y discutir en las entrevistas finales. Un pasante puede obtener tareas de capacitación solo al comienzo del trabajo, cuyo resultado no estará involucrado en la producción. Además, la probabilidad de obtener tales tareas es pequeña. Muy a menudo, se dan proyectos militares de la cartera de pedidos, que se reconoce como dignos de atención, pero no prioritarios y "separables", para que otros componentes no dependan de su implementación. Los líderes intentan distribuirlos para que el interno conozca las diferentes partes del servicio, trabaje en el mismo entorno que los demás miembros del equipo.
Ignat:
Estas son tareas extremadamente útiles. Quizás no aumentarán la utilización del clúster en un 10%, no le ahorrarán a la empresa un millón de dólares, pero harán felices a cientos de personas. Por ejemplo, ahora tenemos un interno que se dedica a nuestro cliente para iniciar operaciones en nuestros clústeres. Antes de comenzar la operación, debe cargar algunos datos en el clúster. Por lo general, tarda entre 20 y 40 segundos, y antes de que esto ocurra en silencio: lo inicié en la consola y te sientas a mirar la pantalla en negro. Llegó un pasante e hizo una función en dos semanas: ahora puede ver cómo se cargan los archivos y qué está sucediendo. La tarea, por un lado, no es difícil en la descripción, y por otro lado, hay algo en lo que profundizar, en qué bibliotecas mirar. La mejor parte es que lo hiciste, pasó una semana, resultó estar en grupos, la gente ya lo está usando. Escribes una publicación en la red interna, te dicen gracias.


Misha
Los pasantes preparan modelos, recopilan datos para ellos, elaboran métricas y realizan experimentos. Poco a poco, solo comenzamos a darle más libertad y responsabilidad: verificamos si él se las arregla. Si es así, pasa al siguiente nivel. No asumimos que cuando llega un interno, él puede hacer todo esto. El jefe lo ayuda a resolverlo, le da un enlace a un recurso interno o un curso en línea.

Si el aprendiz se muestra a la altura, se le puede dar algo de prioridad, importante para el departamento u otros servicios.
Dima:
Nuestro aprendiz ahora se dedica a refinamientos incondicionales de antifraude. Este es un sistema que lucha contra una amplia variedad de noticias y fraudes en los servicios de Yandex. Al principio pensamos en dar cosas que no fueran muy complicadas y que no fueran muy importantes para la producción. Tratamos de pensar en las tareas del alumno por adelantado, pero luego vimos que una persona se está "quemando", resuelve problemas de forma rápida y satisfactoria. Como resultado, comenzamos a confiarle el lanzamiento del antifraude para nuevos servicios.

Además, hay pocas posibilidades de obtener una tarea que los colegas no hayan abordado antes debido a su volumen.
Dima:
Hay un sistema antiguo y hay uno nuevo, aún no completado. Necesitas moverte de uno a otro. En el futuro, este es un proyecto importante, aunque con una gran incertidumbre: necesita comunicarse mucho, leer un código heredado incomprensible. En la entrevista final, sinceramente le dijimos al interno que la tarea era difícil. Él respondió que estaba listo, vino a nuestro equipo y tuvo éxito. Resultó que tiene las cualidades de no solo un desarrollador, sino también un gerente. Estaba listo para caminar, reconocer, hacer ping.

Mentoría sobre el interno


Un aprendiz necesita un mentor para sumergirse en los procesos. Esta es una persona que conoce no solo sus tareas, sino también las tareas del aprendiz. Se establece una comunicación regular con el mentor, siempre puede recurrir a él para pedirle consejo. El mentor puede ser el líder del grupo (si es un grupo pequeño) o uno de los colegas, miembros regulares del equipo.
Ignat:
Trato de aparecer al menos cada dos días, preguntando cómo está el aprendiz. Si veo que he cavado, trato de ayudarlo, le pregunto cuál es el problema y lo encuentro con él. Está claro que esto me quita la fuerza y ​​hace que el trabajo del interno esté menos integrado de manera tan eficiente. También paso mi tiempo. Pero esto le permite no cavar en nada, para obtener un resultado. Y aún así es más rápido que si lo hiciera yo mismo. Yo mismo necesito 5 horas para la tarea. El interno lo hará en 5 días. Y sí, pasaré 2 horas durante estos 5 días para hablar con el interno y ayudarlo. Pero al menos 3 horas ahorraré, y el aprendiz estará complacido de que se le haya pedido y ayudado. En general, solo necesita comunicarse estrechamente, observar lo que hace una persona y no perder el contacto.


Serge:
El interno está constantemente en contacto con su mentor y se comunica con él varias veces al día. El mentor revisa el código, participa en la programación de pares con el aprendiz, ayuda cuando hay algunos lugares problemáticos. Es de esta manera, combinando la ayuda de un mentor y misiones de combate reales, que entrenamos los renderizadores frontales.
Dima:
Para que el interno no resulte abandonado, discutiremos quién lo guiará incluso antes de contratarlo. Esta es también una gran actualización para el mentor: prepararse para el papel de líder del equipo, probar la capacidad de tener en cuenta tanto su tarea como la tarea del aprendiz. Hay reuniones regulares que a veces voy a mí mismo para mantenerme al tanto. Pero el mentor se comunica con el alumno con bastante regularidad. Al principio, pasa mucho tiempo, pero vale la pena.

Sin embargo, la presencia de un mentor no significa que todos los problemas emergentes se resuelvan a través de él.
Misha
Se acepta que las personas que se encuentran con un problema les piden consejo a sus vecinos y colegas y rápidamente encuentran ayuda. Cuanto más rápido crece una persona, más a menudo necesita ir a sus colegas para descubrir algo. Es útil incluso aprender sobre las tareas de otras personas para crear nuevas tareas. Cuando el interno puede estar de acuerdo, comprender lo que es importante para el otro lado y alcanzar un resultado en el equipo, crecerá mucho más rápido que aquel por el cual el líder debería hacer todo esto.
Serge:
Hay documentación, pero la mayor parte de la información se disuelve en el aire. Si lo absorbe al comienzo de una carrera, esta es una ventaja adicional, y podemos enfocar a una persona en lo que necesita ser estudiado.

Un aprendiz ideal es alguien que ha estado practicando durante varios meses, se convierte en un desarrollador junior, luego solo un desarrollador, luego un líder de equipo, etc. Para esto, necesita un arquetipo de un estudiante que no dude en preguntar si no entiende algo, pero es capaz de trabajo independiente Si le dijeron que puede leer sobre eso allí, él irá, leerá y realmente regresará con nuevos conocimientos. Puede estar equivocado, pero no debe estar equivocado más de uno, un máximo de dos veces en el mismo lugar. Un aprendiz ideal debe desarrollarse, absorber todo como una esponja, aprender y crecer. Cualquiera que se siente, trata de resolverlo por sí mismo, hurga durante mucho tiempo, no hace preguntas, es poco probable que arraigue.

Fin de la pasantía


Antes de comenzar a trabajar, firmamos un contrato a plazo fijo con cada alumno. Por supuesto, la pasantía se paga, se ejecuta de acuerdo con el Código Laboral de la Federación de Rusia, y el pasante tiene las mismas ventajas que cualquier otro empleado de Yandex. Tres meses después, el programa finaliza; luego transferimos muchos pasantes al estado (con un contrato perpetuo).



Por un lado, es importante para el líder que el desarrollador cumpla con su mínimo interno. Esto es a lo que conduce el aprendiz, comenzando con la entrevista. Sin embargo, esto es solo el comienzo de la historia. Un interno para nosotros siempre es un candidato potencial para el estado. El programa mínimo para el líder es desde el principio discernir a una persona que, después de tres meses, no se avergonzará de recomendar a otros departamentos. El programa máximo es mantenerlo en el mismo equipo, contratando personal. Al mismo tiempo, tenemos en cuenta que un estudiante de segundo o tercer año, incluso si se convirtió en pasante, deberá continuar estudiando en la universidad al comienzo del año escolar.
Serge:
En primer lugar, los pasantes para nosotros son recursos humanos. Estamos tratando de hacer crecer a las personas dentro de Yandex para que sean ideales para nuestras tareas. Les damos todo, desde una cultura de comunicación e interacción en equipos hasta conocimiento enciclopédico sobre todos nuestros sistemas.
Ignat:
Al tomar un pasante, inmediatamente lo probamos para que llegue a nuestro equipo. Y como regla, el único obstáculo es la falta de vacantes. Los pasantes tratan de llevar suficientes jóvenes. Si una persona tiene cinco años de experiencia en desarrollo, viene a Yandex y es un aprendiz en términos de nivel, entonces, para nosotros, esto significa que aunque es un buen compañero, consigue un trabajo en Yandex con cinco años de experiencia y no podrá convertirse en un desarrollador senior . Por lo general, se trata de velocidad: un crecimiento lento en el pasado también significará un crecimiento lento aquí. Sí, a veces la comprensión de que una persona no tira solo llega después de tres meses. Pero esto es bastante raro. En más de la mitad de los casos, estamos listos para reclutar personas. En mi memoria, no era tal que una persona tuviera una pasantía exitosa, pero no podía pasar una entrevista para un puesto de tiempo completo.
Misha
Todos los pasantes exitosos están invitados a quedarse con la empresa. Después de la pasantía, generalmente tomamos más de la mitad del tiempo completo. Es más difícil con una pasantía de verano, porque a menudo los estudiantes, por ejemplo, del tercer año, vienen a nosotros y les resulta difícil combinar el trabajo con el estudio.
Dima:
Supongamos que un aprendiz hace un excelente trabajo y tiene muchas posibilidades de convertirse en un buen desarrollador, incluso si no tiene suficiente experiencia ahora. Y supongamos que no hay vacante para un contrato perpetuo. Entonces todo es simple: necesito ir a mi líder y decirle: esta es una persona muy genial, debe quedarse con todas sus fuerzas, ofrezcamos algo, encuentre dónde conectarlo.

Historias pasantes

Denis
La chica que nos consiguió una pasantía en 2017 era de Perm. Está a 400 kilómetros de Ekaterimburgo al oeste. Y cada semana venía a nosotros desde Perm en tren a la Escuela de Desarrollo Móvil. Llegó por la tarde, estudió por la noche y se fue a última hora de la tarde. Habiendo apreciado tanto celo, la llamamos al trabajo y valió la pena.
Ignat:
Hace unos años, participamos en un programa de intercambio de aprendices. Fue interesante trabajar con tipos extranjeros. Pero los pasantes de allí no son más fuertes que, por ejemplo, del ShAD o del FCN. Parece que EPFL se encuentra entre las 20 mejores universidades de Europa. En ese momento, yo, como un entrevistador aún no muy experimentado, tenía esa expectativa: es increíble, entrevistaremos a personas de EPFL, serán súper geniales. Pero las personas que han recibido educación básica sobre codificación en nuestro país, incluso en universidades regionales clave, están bastante al nivel.

U otra historia. Ahora tengo un chico en mi personal, bastante joven, de unos 20 años. Trabaja en San Petersburgo, vino para una pasantía. El es muy genial. Usted, como de costumbre, le asigna tareas a la persona, él las resuelve, y después de un mes llega y le dice: he decidido, estoy buscando, y parece que su arquitectura está mal construida. Vamos a rehacerlo. El código será más simple, más comprensible. Por supuesto, lo disuadí: el volumen de trabajo es grande, no hay ganancias para los usuarios, pero la idea parece absolutamente razonable. Una persona entendió un proceso complejo de subprocesos múltiples y sugirió mejoras, tal vez inoportunas, refactorizando para refactorizar. Pero tan pronto como quiera complicar este código, aún puede hacer esta refactorización. De hecho, pasaron varios meses y asumimos esta tarea. Con mucho gusto lo tomé en el personal. No somos genios. Puedes venir, resolver algo y señalarnos nuestros problemas. Es apreciado
Misha
Tenemos pasantes tan perfectos. A pesar de la falta de experiencia, ven la tarea no solo a nivel técnico, sino también a nivel mundial. Ofrecen mejoras fundamentales. Comprenden cómo traducir las tareas del mundo real al técnico, sin perder el significado. Se preguntan cuál es el objetivo final, si vale la pena profundizar en los detalles ahora, o si puede cambiar por completo el enfoque de la tarea o incluso la declaración del problema. Entonces, tienen una reserva para ser varios niveles más altos. Para ir por este camino, solo necesitan bombear algunas habilidades y herramientas internas. Además, lanza varios proyectos exitosos.

Source: https://habr.com/ru/post/445962/


All Articles