Prácticas en TI: la perspectiva de un gerente

Prácticas en TI: la perspectiva de un gerente

Inscripciones para la pasantía de verano en Yandex continúan. Se lleva a cabo en cinco áreas: backend, ML, desarrollo móvil, frontend y analítica. En este blog, así como en otros blogs en Habr y fuera de él, se puede encontrar mucha información sobre cómo se lleva a cabo la pasantía. Sin embargo, mucho de este proceso sigue siendo un misterio para quienes no trabajan en la empresa. Y, desde la perspectiva de los líderes de desarrollo, surgen aún más preguntas. ¿Cómo realizar correctamente la pasantía? ¿Cómo maximizar la utilidad mutua con el pasante? ¿Cómo conocerlo en tres meses y enseñarle todo lo necesario para continuar trabajando?

Hemos preparado este artículo en cinco personas. Nos presentamos: Ihnat Kolesnichenko del servicio de tecnologías de computación distribuida, Misha Levin del servicio de inteligencia artificial de Market, Denis Malykh del servicio de desarrollo de aplicaciones, Seryozha Berezhnoy del departamento de desarrollo de interfaces de búsqueda y Dima Cherkasov del grupo de desarrollo de antifraude. Cada uno de nosotros representa su área de pasantía. Todos somos líderes, necesitamos pasantes y tenemos cierta experiencia trabajando con ellos. Vamos a compartir algo de esta experiencia.

Entrevista previa a la pasantía

Los candidatos se enfrentarán a varias entrevistas técnicas. El éxito en la entrevista depende en menor medida de las habilidades interpersonales (capacidad para comunicarse efectivamente) y en mayor medida de las habilidades técnicas (competencias en matemáticas y programación). Sin embargo, los líderes evalúan ambos aspectos.

Ihnat:

Incluso si una persona es muy buena, pero absolutamente no comunicativa, no podrá aplicar todas sus habilidades. Esto, por supuesto, lo tenemos en cuenta, pero no es razón para no aceptar a alguien en la pasantía. En tres meses, todo puede cambiar, además, tu primera impresión puede resultar ser incorrecta. Y si es correcta, habrá que explicarle a la persona y buscarle otros equipos. Para los pasantes, la comunicabilidad definitivamente no es un factor clave. Las habilidades profesionales son mucho más importantes.

Denis:

Me gustan las personas que cuentan historias, en el buen sentido. Alguien que puede relatar cómo él y su equipo lidiaron heroicamente con un contratiempo es interesante. Empiezo a hacer preguntas adicionales cuando surge una historia así. Pero esto ocurre rara vez si simplemente se pide "hablar sobre algo interesante en tus proyectos".

Un candidato dijo una vez una frase maravillosa que incluso anoté: "He evitado con éxito enfrentar tareas aburridas".

Prácticas en TI: la perspectiva de un gerente

Dado que hay poco tiempo para comunicarse, el entrevistador trata de obtener información útil sobre el candidato cada minuto de la reunión. Es genial si el pasante ha pensado de antemano qué detalles de su experiencia (fuera de su currículum) podría compartir. Debe ser un relato breve y al grano.

Denis:

Presto atención si una persona menciona que ha probado muchos lenguajes y enfoques. Las personas con una perspectiva más amplia suelen idear soluciones más elegantes en situaciones críticas. Pero esto es una ventaja ambigua. Se puede conocer un poco de todo y no aprender realmente nada.

El tiempo para las historias que describe Denis generalmente queda solo para la entrevista final. Hasta entonces, es necesario demostrar los conocimientos fundamentales y prácticos que serán la base del trabajo futuro. Y, por supuesto, será necesario escribir código en una pizarra o en una hoja de papel.

Misha:

Verificamos el conocimiento de la teoría de probabilidades y estadística matemática. Observamos si la persona tiene experiencia con métricas, con algoritmos de aprendizaje automático, con la configuración de sus parámetros, con el sobreajuste, etc. Esperamos que la persona pueda escribir código en un grado suficiente para ser analista.

Denis:

Los que vienen a la entrevista, en su mayoría saben lenguajes: en Ekaterimburgo tenemos una buena escuela de lenguajes básicos y buenos institutos. Pero sinceramente, encontrar un candidato para prácticas con buenas habilidades técnicas es un caso raro, al menos en nuestra área e. Por ejemplo, Swift. La manipulación de cadenas en él es muy compleja, y hay pocas personas que pueden trabajar con ellas de inmediato. Esas llaman la atención de inmediato. A menudo les doy a los candidatos una tarea relacionada con el procesamiento de cadenas en las entrevistas. Y en todo este tiempo solo ha habido una persona que pudo escribir ese código en Swift de inmediato, en un papel. Después de eso, estuve contando a todos que finalmente alguien pudo resolver esta tarea en Swift en un papel.

Verificación de algoritmos en la entrevista

Este es un tema separado, ya que los candidatos aún se preguntan: ¿por qué siempre evaluamos el conocimiento de algoritmos y estructuras de datos? Incluso los futuros desarrolladores móviles y frontend pasan por esta verificación.

Misha:

En la entrevista siempre damos alguna tarea algorítmica. El candidato debe idear cómo implementarla en Python, preferiblemente sin errores. Necesitamos entender cómo verificar su programa y corregirlo por su cuenta.

Prácticas en TI: la perspectiva de un gerente

La experiencia en algoritmos será útil por tres razones. En primer lugar, será necesaria en las tareas algorítmicas, que no son frecuentes, pero existen. En segundo lugar, el desarrollador podrá resolver tareas relacionadas con algoritmos de manera más eficiente, aunque no requieran profundizar en los propios algoritmos (y ya hay bastantes de esas). En tercer lugar, si no se le enseñó algoritmos en la universidad, pero aún así puede trabajar con ellos, eso lo caracteriza como una persona curiosa y elevará su autoridad ante el entrevistador.

Denis:

La mayor parte del desarrollo móvil es simplemente "trasladar JSON". Pero hay ocasiones cada seis meses en las que se necesitan algoritmos. Actualmente estoy creando mapas bonitos para el clima de Yandex. Y en una semana tuve que implementar un algoritmo de suavizado, el algoritmo de Sutherland-Hodgman y el algoritmo de Martínez. Si alguien no sabe qué es un hashmap o una cola de prioridad, se quedaría atascado con esto durante mucho tiempo y sería incierto si podría resolverlo sin ayuda externa.

Los algoritmos son la base del desarrollo. Son lo que ayuda a un desarrollador a ser un desarrollador. No importa en qué estés trabajando. Son necesarios incluso en proyectos simples, donde el trabajo principal consiste en "mover JSON". Incluso si no escribes algoritmos tú mismo, pero usas estructuras de datos de manera implícita, es mejor entenderlas. De lo contrario, tus aplicaciones pueden funcionar lentamente o incorrectamente.

Hay programadores que entraron en el desarrollo de manera académica: se inscribieron en la universidad, estudiaron honestamente durante cinco años y obtuvieron un título. Saben sobre algoritmos porque los han aprendido. Sin embargo, el simple conocimiento de algoritmos no caracteriza el panorama general de una persona; hay que evaluar ese panorama de otra forma.

Y hay autodidactas, a los que también me incluyo. Sí, formalmente tengo una educación en TI, un diploma de ingeniero en programación. Pero los autodidactas aprendieron a programar "a pesar de todo". No tuvieron un programa universitario. Normalmente no están familiarizados con los algoritmos, porque nunca se encontraron con la necesidad de estudiarlos. Y cuando una de estas personas comprende los algoritmos, significa que ha dedicado tiempo a entenderlos. Al terminar la universidad, me di cuenta de que tenía lagunas en cuanto a algoritmos fundamentales; el problema era que mi especialidad era aplicada. Así que fui y tomé cursos en línea de la Universidad de Princeton, muy conocida por Robert Sedgewick. Lo entendí y completé todas las tareas. Y cuando una persona en una entrevista cuenta una historia similar, me interesa de inmediato y tengo ganas de trabajar con ella o al menos continuar la conversación.

Prácticas en TI: la perspectiva de un gerente

Ihnat:

Cuando entrevistas a un pasante, en cierto sentido esperas incluso más que de un desarrollador experimentado. Se trata de la capacidad para resolver problemas algorítmicos y escribir rápidamente algún código correcto. El candidato a la pasantía aún está en la universidad. Hace literalmente un año le enseñaron todo sobre algoritmos en detalle. Se espera que pueda reproducirlos. Si la persona es sensata y prestó atención a las lecciones, simplemente sabrá todo, sacándolo de la memoria.

¿Qué tareas resuelve un pasante?

Normalmente, el programa de prácticas se puede planificar y discutir en las entrevistas finales. Al principio, el pasante puede recibir tareas de entrenamiento, cuyos resultados no se utilizarán en producción. Además, la probabilidad de recibir tales tareas es baja. Por lo general, se asignan proyectos en curso del backlog, es decir, aquellos que son dignos de atención, pero no priorizados y 'separables', para que otros componentes no dependan de su implementación. Los gerentes intentan distribuirlos de tal manera que el pasante conozca diferentes partes del servicio y trabaje en el mismo entorno que otros miembros del equipo.

Ihnat:

Estas son tareas extremadamente útiles. Es posible que no aumenten la utilización del clúster en un 10%, ni ahorren un millón de dólares a la empresa, pero harán felices a cientos de personas. Por ejemplo, actualmente tenemos un pasante que trabaja con nuestro cliente para lanzar operaciones en nuestros clústeres. Antes del lanzamiento, la operación debe cargar ciertos datos en el clúster. Normalmente, esto toma de 20 a 40 segundos y antes se realizaba en silencio: la iniciaste en la consola y te quedabas mirando la pantalla negra. El pasante llegó y en dos semanas hizo una función: ahora se puede ver cómo se cargan los archivos y qué está sucediendo. La tarea, por un lado, no es complicada de describir, pero por otro, hay mucho que investigar y bibliotecas que examinar. Lo más agradable es que tú lo hiciste, pasó una semana, ya está en los clústeres y la gente lo está utilizando. Escribes un post en la red interna y te dicen gracias.

Prácticas en TI: la perspectiva de un gerente

Misha:

Los pasantes preparan modelos, recopilan datos para ellos, idean métricas y realizan experimentos. Poco a poco, comenzamos a darles más libertad y responsabilidad, comprobando si pueden manejarlo. Si es así, pasan al siguiente nivel. No suponemos que cuando un pasante llega, ya sepa todo esto. El gerente le ayuda a orientarse, le proporciona un enlace a un recurso interno o a un curso en línea.

Si el pasante se destaca, puede recibir algo prioritario, importante para el departamento u otros servicios.

Dima:

Nuestro pasante está actualmente trabajando en mejoras rigurosas del antifraude. Este es un sistema que combate diversas formas de abuso y fraude en los servicios de Yandex. Al principio, pensamos en darle tareas que no fueran muy complicadas ni muy importantes para la producción. Tratamos de planificar con antelación las tareas del pasante, pero aquí vimos que la persona "brilla", resuelve las tareas rápidamente y de manera efectiva. Al final, comenzamos a encargarle el lanzamiento del antifraude para nuevos servicios.

Además, existe una pequeña posibilidad de obtener una tarea que los colegas no habían abordado anteriormente debido a su volumen.

Dima:

Hay un sistema antiguo y hay uno nuevo, que aún no está terminado. Necesitamos realizar la migración de uno a otro. A largo plazo, este es un proyecto importante, aunque con alta incertidumbre: se requiere mucha comunicación y leer código legado confuso. En la entrevista final, le dijimos honestamente al pasante que la tarea era complicada. Él respondió que estaba listo, se unió a nuestro equipo y tuvo éxito. Resultó que tenía cualidades no solo de desarrollador, sino también de gerente. Estaba dispuesto a investigar, preguntar y hacer seguimiento.

Mentoría sobre el pasante

El pasante necesita un mentor para integrarse en los procesos. Esta es una persona que está al tanto no solo de sus propias tareas, sino también de las del pasante. La comunicación con el mentor es regular y siempre se puede buscar consejo. El mentor puede ser el líder del grupo (si se trata de un grupo pequeño) o algún colega, un miembro constante del equipo.

Ihnat:

Intento acercarme al menos cada dos días para preguntar cómo está el pasante. Si veo que está atascado, trato de ayudarlo, pregunto cuál es el problema y lo desenterramos juntos. Está claro que esto consume mi energía y hace que el trabajo del pasante no sea tan eficiente en términos integrales — también estoy gastando mi tiempo. Sin embargo, esto le permite no atascarse en nada y obtener resultados. Y de todos modos, es más rápido que si yo lo hiciera solo. Para mí, tomaría condicionalmente unas 5 horas para la tarea. El pasante la haría en 5 días. Y sí, gastaré 2 horas en esos 5 días para hablar con el pasante y ayudarlo. Pero al menos ahorraré 3 horas, y al pasante le agradará que le hayan dado sugerencias y ayuda. En general, simplemente es necesario comunicarse estrechamente, observar qué está haciendo la persona y no perder el contacto.

Prácticas en TI: la perspectiva de un gerente

Sergey:

El pasante está constantemente en contacto con su mentor y se comunica con él varias veces al día. El mentor revisa el código, realiza programación en pareja con el pasante y ayuda cuando surgen problemas. Así es como, mediante la combinación de la ayuda del mentor y tareas reales, formamos a los desarrolladores front-end.

Dima:

Para que el pasante no se sienta abandonado, discutimos quién será su mentor incluso antes de la contratación. Esto también es un gran impulso para el propio mentor: preparación para el rol de líder del equipo, verificación de su capacidad para mantener en mente tanto su tarea como la del pasante. Hay reuniones regulares, a las que a veces asisto yo mismo para estar al tanto. Pero el mentor es quien se comunica regularmente con el pasante. Al principio, invierte mucho tiempo, pero esto da frutos.

Sin embargo, tener un mentor no significa que todas las preguntas que surjan se resuelvan a través de él.

Misha:

Es costumbre que las personas que se enfrentan a problemas pidan consejo a sus vecinos y colegas, y encuentren ayuda rápidamente. Cuanto más rápido crece una persona, más a menudo necesita acudir a sus colegas para aprender algo. Incluso es útil simplemente conocer las tareas de los demás para idear nuevas tareas. Cuando el pasante puede negociar por sí mismo, entender lo que es importante para el otro y llegar a un resultado en equipo, crecerá mucho más rápido que aquel por el que el líder debe hacer todo esto.

Sergey:

Hay documentación, pero la mayor parte de la información está en el aire. Si la absorbes al inicio de tu carrera, eso es una ventaja adicional, y podemos enfocar a la persona en lo que necesita estudiar.

El pasante ideal es aquel que se pasantía durante varios meses, se convierte en un desarrollador junior, luego en un desarrollador y posteriormente en un líder de equipo, etc. Para esto, se necesita el arquetipo del aprendiz, que no tiene miedo de preguntar si algo no le queda claro, pero que también es capaz de trabajar de manera independiente. Si se le dice que puede leer sobre esto aquí o allá, él irá, leerá y realmente regresará con nuevos conocimientos. Puede cometer errores, pero no debe equivocarse más de una, como máximo dos veces en el mismo lugar. El pasante ideal debe desarrollarse, absorber todo como una esponja, aprender y crecer. Aquellos que se sientan tratando de entenderlo todo por sí mismos, hurgando durante mucho tiempo y no haciendo preguntas, probablemente no perdurarán.

Finalización de la pasantía

Antes de comenzar a trabajar, firmamos un contrato temporal con cada pasante. Por supuesto, la pasantía es remunerada, se formaliza de acuerdo con el Código del Trabajo de la Federación Rusa, y el pasante tiene las mismas ventajas que cualquier otro empleado de Yandex. Después de tres meses, el programa se cierra; muchos pasantes luego se convierten en empleados (con un contrato indefinido).

Prácticas en TI: la perspectiva de un gerente

Por un lado, es importante para el líder que el desarrollador cumpla con su mínimo de pasantía. Precisamente a esto se dirige el pasante, comenzando desde la entrevista. Sin embargo, esto es solo el comienzo de la historia. Para nosotros, el pasante siempre es un candidato potencial para el empleo. El programa mínimo para el líder es vislumbrar desde el principio a esa persona que, después de tres meses, no dará vergüenza recomendar a otros departamentos. El programa máximo es mantenerlo en el mismo equipo, haciéndolo empleado. Al mismo tiempo, tenemos en cuenta que un estudiante de segundo o tercer año —incluso si se ha convertido en pasante— necesitará continuar sus estudios en la universidad al inicio del año académico.

Sergey:

En primer lugar, los pasantes son para nosotros un potencial de talento. Intentamos cultivar personas dentro de Yandex para que se ajusten perfectamente a nuestras tareas. Les proporcionamos todo, desde la cultura de comunicación y colaboración en equipos hasta conocimientos enciclopédicos sobre todos nuestros sistemas.

Ihnat:

Al contratar a un pasante, lo evaluamos de inmediato para que pueda unirse a nuestro equipo. Y, por lo general, el único obstáculo es la falta de vacantes. Intentamos seleccionar a chicos jóvenes como pasantes. Si una persona tiene cinco años de experiencia en desarrollo y llega a Yandex y, por su nivel, es considerado un pasante, lamentablemente, eso significa que, a pesar de ser talentoso, al buscar un trabajo en Yandex con cinco años de experiencia, no podrá ascender a desarrollador senior. Normalmente, esto se debe a la velocidad: un crecimiento lento en el pasado significará un crecimiento lento también con nosotros. Sí, a veces, la comprensión de que una persona no está a la altura solo llega después de tres meses. Pero esto es bastante raro. En más de la mitad de los casos, estamos dispuestos a contratar a las personas. En mi recuerdo, no ha habido casos de personas que se hayan desempeñado bien como pasantes, pero no hayan podido pasar las entrevistas para un puesto permanente.

Misha:

A todos los pasantes exitosos les ofrecemos quedarse en la empresa. Por lo general, después de la pasantía, contratamos más de la mitad a tiempo completo. La pasantía de verano es más complicada porque, a menudo, vienen estudiantes, por ejemplo, de tercer año, y les resulta difícil compaginar el trabajo con los estudios.

Dima:

Supongamos que el pasante está manejando muy bien las tareas y tiene muchas perspectivas de convertirse en un buen desarrollador, incluso si ahora no tiene suficiente experiencia. Y supongamos que no hay vacantes para un contrato indefinido. Entonces es simple: tengo que ir a mi jefe y decirle: "Esta persona es excepcional, debemos hacer todo lo posible para conservarla, busquemos algo para ella, encontremos una manera de integrarla."

Historias sobre pasantes

Denis:

La chica que se incorporó a nosotros como pasante en 2017 era originaria de Perm. Esto está a unos 400 kilómetros al oeste de Ekaterimburgo. Y cada semana viajaba desde Perm en tren a la Escuela de Desarrollo Móvil. Llegaba de día, estudiaba por la tarde y regresaba tarde en la noche. Al evaluar tal dedicación, la invitamos a trabajar y esto resultó ser una buena decisión.

Ihnat:

Hace varios años participamos en un programa de intercambio de pasantes. Trabajar con chicos de otros países fue interesante. Pero los pasantes de allí no son más capaces que, por ejemplo, los de SHAD o de FKN. Se podría pensar que la EPFL está entre las 20 mejores universidades de Europa. En ese momento, como un reclutador no muy experimentado, tenía esa expectativa: increíble, estamos entrevistando a personas de la EPFL, tendrán que ser súper competentes. Pero las personas que recibieron una educación básica en codificación con nosotros —incluyendo en universidades regionales clave— resultan estar completamente a la altura.

O otra historia. Ahora tengo en mi equipo a un chico, muy joven, alrededor de 20 años. Trabaja en San Petersburgo, vino a hacer una pasantía. Es realmente genial. Tú, como de costumbre, le das tareas, él las resuelve, y al cabo de un mes viene y dice: he estado trabajando, miro y parece que su arquitectura está mal construida. Vamos a rehacerlo. El código será más simple y claro. Por supuesto, intenté disuadirlo: el volumen de trabajo es grande, no hay beneficios para los usuarios, pero la idea suena absolutamente razonable. La persona entendió un proceso complejo de múltiples hilos y sugirió mejoras —quizás no muy oportunas, refactorización por la refactorización. Pero tan pronto como queramos complicar ese código, podremos hacer la refactorización después. De hecho, pasaron unos meses y nos ocupamos de esa tarea. Con gusto lo incorporé a mi equipo. Todos no somos genios. Se puede llegar, entender algo y señalar nuestros problemas. Eso se aprecia.

Misha:

A veces tenemos pasantes ideales. A pesar de la falta de experiencia, ven las tareas no solo a nivel técnico, sino también a un nivel más global. Proponen mejoras fundamentales. Tienen una comprensión de cómo traducir tareas del mundo real a lo técnico, sin perder el sentido. Se cuestionan cuál es el objetivo final, si vale la pena ahora profundizar en los detalles o si se puede cambiar completamente el enfoque hacia la tarea o incluso reformular la tarea. Esto significa que tienen el potencial de estar varios niveles por encima. Para recorrer este camino, solo necesitan mejorar algunas habilidades y herramientas internas. Además, lanzar varios proyectos exitosos.

Prácticas en TI: la perspectiva de un gerente

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster