Prácticas en TI: la visión de un directivo

Prácticas en TI: la visión de un directivo

Reclutamiento para prácticas de verano en Yandex continúa. 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á, puedes encontrar mucha información sobre cómo funcionan las pasantías. Pero gran parte de este proceso sigue siendo un misterio para quienes no trabajan en la empresa. Y si se mira desde el punto de vista de los responsables de desarrollo, surgen aún más preguntas. ¿Cómo realizar correctamente unas prácticas, cómo maximizar la utilidad mutua con un becario, cómo conocerle en tres meses y enseñarle todo lo que necesita para seguir trabajando?

Cinco de nosotros preparamos este artículo. Nos presentamos: Ignat Kolesnichenko del servicio de tecnología informática distribuida, Misha Levin del servicio de inteligencia de máquinas Market, Denis Malykh del servicio de desarrollo de aplicaciones, Seryozha Berezhnoy del departamento de desarrollo de la interfaz de búsqueda y Dima Cherkasov del grupo de desarrollo antifraude. Cada uno de nosotros representa su propia área de prácticas. Todos somos gerentes, necesitamos pasantes y tenemos algo de experiencia trabajando con ellos. Te contamos algo de esta experiencia.

Entrevista previa a la pasantía

Varias entrevistas técnicas esperan a los candidatos. El éxito en una entrevista depende menos de las habilidades sociales (la capacidad de comunicarse de manera efectiva) y más de las habilidades duras (habilidades en matemáticas y programación). Sin embargo, los directivos evalúan ambos.

Ignat:

Incluso si una persona es muy tranquila, pero absolutamente poco comunicativa, no podrá aplicar todas sus habilidades. Por supuesto, prestamos atención a esto, pero esto no es motivo para no contratar a alguien para realizar prácticas. En tres meses todo puede cambiar y, además, tu primera impresión puede resultar errónea. Y si todo está correcto, tendrás que explicárselo a la persona, buscar otros comandos. Para los pasantes, las habilidades de comunicación no son definitivamente 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. Es interesante una persona que pueda contar cómo él y su equipo lidiaron heroicamente con un fakap. Empiezo a hacer preguntas de seguimiento cuando surge una historia como esta. Pero esto rara vez sucede si simplemente pides "contar algo interesante en tus proyectos".

Un candidato dijo una vez una frase maravillosa, que incluso escribí: "Evité con éxito resolver problemas tediosos".

Prácticas en TI: la visión de un directivo

Como hay poco tiempo para la comunicación, el entrevistador intenta obtener información útil sobre el candidato en cada minuto de la reunión. Sería fantástico si el pasante descubriera de antemano qué detalles de su experiencia (no de su currículum) podría compartir. Esta debería ser una historia corta estrictamente al grano.

Denis:

Presto atención si una persona dice que ha probado muchos lenguajes y enfoques. A las personas con una visión más amplia se les ocurren soluciones más elegantes en el modo combate. Pero esta es una ventaja ambigua. Puedes dominarlo, pero en realidad no aprendes nada.

El tiempo para las historias descritas por Denis suele quedar sólo en la entrevista final. Hasta entonces, es necesario demostrar los conocimientos fundamentales y prácticos que formarán la base del trabajo futuro. Y, por supuesto, necesitarás escribir el código en una pizarra o en una hoja de papel.

Misha:

Evaluamos conocimientos de teoría de la probabilidad y estadística matemática. Observamos si la persona tiene experiencia trabajando con métricas, con algoritmos de aprendizaje automático, configurando sus parámetros, con reentrenamiento, etc. Esperamos que la persona pueda escribir código lo suficiente como para ser un analista.

Denis:

La mayoría de los que vienen a una entrevista saben idiomas: en Ekaterimburgo tenemos una buena escuela de idiomas básicos, buenos institutos. Pero para ser honesto, un candidato a pasantía con buenas habilidades es un caso raro, al menos en nuestro vecindario épsilon. Por ejemplo, rápido. Implica un trabajo muy complejo con cuerdas y hay pocas personas que puedan trabajar con ellas sin pensarlo. El ojo llama inmediatamente tu atención. Durante las entrevistas, suelo asignar una tarea relacionada con el procesamiento de cadenas. Y en todo este tiempo sólo hubo una persona que fue capaz de escribir ese código Swift de inmediato, en una hoja de papel. Después de eso, anduve contándoles a todos que alguien finalmente pudo resolver este problema en Swift en una hoja de papel.

Algoritmos de prueba durante una entrevista

Este es un tema aparte porque los candidatos todavía tienen una pregunta: ¿por qué siempre evaluamos el conocimiento de algoritmos y estructuras de datos? Incluso los futuros desarrolladores de dispositivos móviles y desarrolladores front-end se someten a estas pruebas.

Misha:

Durante la entrevista seguro que daremos algún tipo de problema algorítmico. El candidato debe descubrir cómo implementarlo en Python, preferiblemente sin errores. Debe comprender cómo verificar su programa y corregirlo usted mismo.

Prácticas en TI: la visión de un directivo

La experiencia en algoritmos es útil por tres razones. En primer lugar, obviamente será necesario en tareas algorítmicas, que no suceden con frecuencia, pero suceden. En segundo lugar, el desarrollador podrá resolver de forma más eficaz problemas relacionados con algoritmos, incluso si no requieren profundizar en los algoritmos en sí (y ya existen bastantes). En tercer lugar, si no te enseñaron algoritmos en la universidad, pero aún sabes cómo trabajar con ellos, esto te caracteriza como una persona curiosa y aumentará tu autoridad ante los ojos del entrevistado.

Denis:

Una gran parte del desarrollo móvil es la mezcla JSON. Pero cada seis meses hay casos en los que se necesitan algoritmos. Actualmente estoy dibujando hermosos mapas para Yandex.Weather. Y en una semana tuve que implementar el algoritmo de suavizado, el algoritmo de Sutherland-Hodgman y el algoritmo de Martínez. Si una persona no supiera qué es un hashmap o una cola de prioridad, se habría quedado atrapado en él durante mucho tiempo y no estaría 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 sencillos, donde el trabajo principal consiste en “traducir JSON”. Incluso si no escribe los algoritmos en sí, pero utiliza implícitamente algunas estructuras de datos, es mejor comprenderlos. De lo contrario, terminarás con aplicaciones lentas o incorrectas.

Hay programadores que se desarrollaron académicamente: ingresaron a la universidad, estudiaron cinco años y recibieron una especialidad. Conocen los algoritmos porque se los enseñaron. Y entonces el conocimiento de los algoritmos en sí no caracteriza de ninguna manera los horizontes de una persona; este horizonte debe ser probado de otra manera.

Y hay gente autodidacta, entre los que me cuento. Sí, formalmente tengo una educación en TI, un diploma en ingeniería de software. Pero los autodidactas aprendieron a programar “a pesar de ello”. No tenían un programa universitario. Por lo general, no están familiarizados con los algoritmos, porque nunca se han enfrentado a la necesidad de estudiarlos. Y cuando una persona así comprende los algoritmos, significa que ha dedicado tiempo y los ha entendido. Después de graduarme de la universidad, me di cuenta de que tenía puntos ciegos en términos de algoritmos fundamentales; el hecho es que mi especialidad se aplicaba. Fui y estudié cursos en línea de la Universidad de Princeton, el conocido Robert Sedgwick. Lo descubrí e hice toda mi tarea. Y cuando una persona cuenta una historia similar durante una entrevista, inmediatamente me intereso, tengo el deseo de trabajar con él o al menos continuar la conversación.

Prácticas en TI: la visión de un directivo

Ignat:

Cuando entrevistas a un pasante, en cierto modo esperas incluso más que de un desarrollador experimentado. Estamos hablando de la capacidad de resolver problemas algorítmicos, escribir rápidamente al menos algo de código correcto. El candidato a la pasantía todavía está en la universidad. Hace apenas un año le contaron en detalle todo sobre los algoritmos. Se espera que pueda reproducirlos. Si una persona es adecuada y escucha atentamente las conferencias, simplemente lo sabrá todo y lo obtendrá del caché.

¿Qué tareas resuelve el pasante?

Por lo general, el programa de pasantías se puede delinear y discutir durante las entrevistas finales. Solo al comienzo del trabajo a un pasante se le pueden asignar tareas de capacitación, cuyos resultados no se utilizarán en la producción. Además, la probabilidad de recibir tales tareas es pequeña. La mayoría de las veces, los proyectos de combate se dan a partir del trabajo atrasado, es decir, aquellos reconocidos como dignos de atención, pero no prioritarios y "separables", de modo que otros componentes no dependan de su implementación. Los gerentes intentan distribuirlos para que el alumno conozca diferentes partes del servicio y trabaje en el mismo entorno con otros miembros del equipo.

Ignat:

Estas son tareas extremadamente útiles. Puede que no aumenten la utilización del clúster en un 10% ni ahorren a la empresa un millón de dólares, pero harán felices a cientos de personas. Por ejemplo, actualmente tenemos un pasante que trabaja con nuestro cliente para ejecutar operaciones en nuestros clústeres. Antes de comenzar, la operación debe cargar algunos datos en el clúster. Esto suele tardar entre 20 y 40 segundos, y antes sucedía en silencio: lo iniciabas en la consola y te sentabas allí, mirando una pantalla negra. El pasante vino e hizo la función en dos semanas: ahora puedes ver cómo se cargan los archivos y qué está sucediendo. La tarea, por un lado, no es difícil de describir, pero por otro lado, hay algo en lo que profundizar, qué bibliotecas mirar. Lo mejor es que lo hiciste, pasó una semana, resultó estar en clusters, la gente ya lo está usando. Cuando escribes un post en la red interna te dicen gracias.

Prácticas en TI: la visión de un directivo

Misha:

Los alumnos preparan modelos, recopilan datos para ellos, elaboran métricas y realizan experimentos. Poco a poco, simplemente comenzamos a darle más libertad y responsabilidad; comprobamos si puede manejarlo. En caso afirmativo, pasa al siguiente nivel. No asumimos que cuando llega un pasante, sabe cómo hacerlo todo. El gerente lo ayuda a resolverlo, le brinda un enlace a un recurso interno o un curso en línea.

Si un pasante demuestra estar en su mejor momento, se le puede dar algo prioritario, importante para el departamento u otros servicios.

Dima:

Nuestro pasante ahora está realizando modificaciones importantes al sistema antifraude. Este es un sistema que combate una amplia variedad de abusos y fraudes en los servicios de Yandex. Al principio pensamos en dar cosas que no fueran muy complejas ni muy importantes para la producción. Intentamos pensar de antemano en las tareas del pasante, pero luego vimos que la persona estaba "en llamas", resolviendo problemas rápida y bien. Como resultado, comenzamos a confiarle la tarea de lanzar programas antifraude para nuevos servicios.

Además, existe una pequeña posibilidad de recibir una tarea que los compañeros no hayan abordado anteriormente debido a su volumen.

Dima:

Hay un sistema antiguo y otro nuevo, que aún no está terminado. Es necesario pasar de uno a otro. En el futuro, este es un proyecto importante, aunque con mucha incertidumbre: es necesario comunicarse mucho, leer código heredado incomprensible. En la entrevista final, le dijimos honestamente al pasante que la tarea era difícil. Él respondió que estaba listo, vino a nuestro equipo y todo le salió bien. Resultó que tiene las cualidades no solo de un desarrollador, sino también de un gerente. Estaba listo para caminar, descubrir, hacer ping.

Tutoría a un pasante

Un pasante necesita un mentor para sumergirse en los procesos. Se trata de una persona que es consciente no sólo de sus propias tareas, sino también de las tareas del pasante. Se establece una comunicación regular con el mentor, siempre puedes acudir a él en busca de consejo. El mentor puede ser el líder del grupo (si es un grupo pequeño) o uno de los colegas, miembros habituales del equipo.

Ignat:

Intento venir al menos cada dos días y preguntar cómo está el pasante. Si veo que estoy estancado, trato de ayudarlo, le pregunto cuál es el problema y lo analizo con él. Está claro que esto me quita energía y hace que el trabajo de un pasante no sea tan integralmente efectivo; también estoy perdiendo el tiempo. Pero esto le permite no estancarse en nada y obtener resultados. Y aún es más rápido que si lo hiciera yo mismo. Yo mismo necesito unas 5 horas para la tarea. El pasante lo hará en 5 días. Y sí, dedicaré 2 horas durante estos 5 días a charlar con el pasante y ayudar. Pero ahorraré al menos 3 horas y el pasante se alegrará de haber recibido algunos consejos y ayuda. En general, basta con comunicarse estrechamente, observar lo que hace la persona y no perder el contacto.

Prácticas en TI: la visión de un directivo

Seryozha

El alumno está constantemente en contacto con su mentor y se comunica con él varias veces al día. El mentor revisa el código, empareja la programación con el pasante y ayuda cuando surge cualquier área problemática. De esta forma, combinando la ayuda de un mentor y tareas de combate reales, formamos a los desarrolladores front-end.

Dima:

Para evitar que un pasante sea abandonado, discutimos quién será su mentor incluso antes de contratarlo. Esto también supone una gran mejora para el propio mentor: preparación para el papel de líder del equipo, prueba de la capacidad de tener en cuenta tanto su propia tarea como la tarea del alumno. Hay reuniones periódicas, a las que a veces acudo yo mismo, para mantenerme informado. Pero es el mentor quien se comunica con el pasante con bastante regularidad. Al principio dedica mucho tiempo, pero vale la pena.

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

Misha:

Para nosotros es habitual que las personas que se enfrentan a un problema pidan consejo a sus vecinos y compañeros 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 resulta útil simplemente conocer las tareas de otras personas para poder idear otras nuevas. Cuando un pasante es capaz de llegar a un acuerdo, comprender lo que es importante para la otra parte y lograr resultados en un equipo, crecerá mucho más rápido que alguien para quien el gerente debe hacer todo esto.

Seryozha

Hay documentación, pero la mayor parte de la información se pierde en el aire. Si lo absorbe temprano en su carrera, es una ventaja adicional y podemos enfocar a la persona en lo que necesita aprender.

El pasante ideal es alguien que se capacita durante varios meses, se convierte en desarrollador junior, luego solo desarrollador, luego líder de equipo, etc. Esto requiere un arquetipo de estudiante que no se avergüence de preguntar si algo no le queda claro, pero También es capaz de trabajar de forma independiente. Si le dijeran que podía leer sobre ello en alguna parte, iría, lo leería y regresaría con nuevos conocimientos. Puede cometer errores, pero no debe cometer errores más de una vez, máximo dos, en el mismo lugar. El pasante ideal debe desarrollarse, absorberlo todo como una esponja, aprender y crecer. El que se sienta y trata de resolverlo todo por sí solo, pasa mucho tiempo husmeando y no hace preguntas, difícilmente se acostumbrará.

Fin de las prácticas

Antes de empezar a trabajar, firmamos un contrato de duración determinada con cada alumno. Por supuesto, la pasantía es remunerada, formalizada de acuerdo con el Código del Trabajo de la Federación de Rusia, y el pasante tiene los mismos beneficios que cualquier otro empleado de Yandex. Después de tres meses, el programa finaliza; luego transferimos a muchos de los pasantes al personal (con un contrato indefinido).

Prácticas en TI: la visión de un directivo

Por un lado, para el directivo es importante que el desarrollador cumpla con su mínimo de prácticas. Aquí es donde se conduce al alumno, comenzando con la entrevista. Sin embargo, esto es sólo el comienzo de la historia. Para nosotros, un pasante es siempre un candidato potencial para formar parte del personal. El programa mínimo para un gerente es identificar desde el principio 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, contratándolo como miembro del staff. Al mismo tiempo, tenemos en cuenta que un estudiante de segundo o tercer año, incluso si se ha convertido en pasante, deberá continuar sus estudios en una universidad al inicio del año académico.

Seryozha

Para nosotros, los aprendices son ante todo un potencial de 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:

Cuando contratamos a un pasante, inmediatamente lo probamos para que se una a nuestro equipo. Y, por regla general, el único obstáculo es la falta de una vacante. Intentamos contratar suficientes jóvenes como pasantes. Si una persona tiene cinco años de experiencia en desarrollo, viene a Yandex y es pasante de nivel, entonces, por desgracia, para nosotros esto significa que, aunque sea un gran tipo, ya que consigue un trabajo en Yandex con cinco años de experiencia. experiencia, no podrá convertirse en desarrollador senior. Generalmente es una cuestión de velocidad: un crecimiento lento en el pasado significará un crecimiento lento aquí. Sí, a veces la comprensión de que una persona no está a la altura de la tarea llega solo después de tres meses. Pero esto es bastante raro. En más de la mitad de los casos, estamos dispuestos a contratar personal en plantilla. En mi memoria, nunca ha habido una situación en la que una persona haya completado con éxito una pasantía, pero no haya podido aprobar una entrevista para un puesto de tiempo completo.

Misha:

Ofrecemos a todos los pasantes exitosos permanecer en la empresa. Después de unas prácticas, normalmente asumimos más de la mitad de ellas a tiempo completo. Las prácticas de verano son más difíciles porque a menudo vienen a nosotros estudiantes de tercer año y les resulta difícil compaginar trabajo y estudio.

Dima:

Digamos que el pasante hace un gran trabajo y tiene muchas perspectivas de convertirse en un buen desarrollador, incluso si no tiene suficiente experiencia en este momento. Y supongamos que no hay ninguna vacante para un contrato indefinido. Entonces todo es simple: tengo que ir a mi jefe y decirle: esta es una persona genial, debemos retenerlo por todos los medios, ofrezcámosle algo, busquemos un lugar donde ubicarlo.

Historias sobre pasantes

Denis:

La chica que hizo prácticas con nosotros en 2017 era de Perm. Se encuentra a 400 kilómetros de Ekaterimburgo al oeste. Y todas las semanas venía a nosotros desde Perm en tren a la Escuela de Desarrollo Móvil. Ella venía durante el día, estudiaba por la noche y regresaba tarde por la noche. Apreciando tal celo, la invitamos a trabajar y valió la pena.

Ignat:

Hace varios años participamos en un programa de intercambio de prácticas. Fue interesante trabajar con chicos extranjeros. Pero los alumnos de allí no son más fuertes que, por ejemplo, los de ShAD o de la Facultad de Informática. Parecería que la EPFL se encuentra entre las 20 mejores universidades de Europa. En ese momento, como entrevistador todavía sin mucha experiencia, tenía esta expectativa: increíble, estamos entrevistando a gente de la EPFL, serán geniales. Pero las personas que han recibido una educación básica sobre codificación aquí, incluso en importantes universidades regionales, resultan estar bastante a la altura.

U otra historia. Ahora tengo un chico en mi personal, es muy joven, de unos 20 años. Trabaja en San Petersburgo, vino para hacer prácticas. Es muy genial. Tú, como siempre, le das problemas a una persona, él los resuelve, y al mes viene y dice: los resolví, miro, y parece que tu arquitectura está mal construida. Rehagámoslo. El código será más simple y claro. Yo, por supuesto, lo disuadí: la cantidad de trabajo es grande, no hay ganancias para los usuarios, pero la idea parece absolutamente razonable. La persona descubrió un proceso complejo de múltiples subprocesos y sugirió mejoras, quizás inoportunas, refactorizar por refactorizar. Pero tan pronto como quieras complicar este código, aún puedes hacer esta refactorización. De hecho, pasaron varios meses y nos pusimos manos a la obra. Con mucho gusto lo contraté. No todos somos genios. Puedes venir, resolver algo y señalar nuestros problemas. Esto se agradece.

Misha:

Tenemos pasantes tan ideales. A pesar de su falta de experiencia, ven la tarea no sólo a nivel técnico, sino también a nivel global. Ofrecen mejoras fundamentales. Saben cómo traducir problemas del mundo real al mundo técnico sin perder su significado. Se preguntan cuál es el objetivo final, si vale la pena profundizar en los detalles ahora o si se puede cambiar por completo el enfoque de la tarea o incluso la formulación del problema. Esto significa que tienen el potencial de estar varios niveles más arriba. Para seguir este camino, sólo necesitan actualizar algunas habilidades y herramientas internas. Además, lanza varios proyectos exitosos.

Prácticas en TI: la visión de un directivo

Fuente: habr.com

Añadir un comentario