
Parece que todos disfrutaron
el episodio piloto , y todavía estamos seguros de que las personas "detrás de escena" pueden ser tan emocionantes como las celebridades de TI que todos conocemos y amamos. Y tal vez aún más, porque hablan de problemas reales y soluciones reales. Esta semana le hicimos 10 preguntas a una persona detrás del desarrollo de Yandex.Maps para iOS.
Nikolay Likhogrud ( likhogrud ) de Moscú. Comenzó la programación en noveno grado desde HTML y Basic. Luego se enseñó a sí mismo C #, se graduó de la Universidad Estatal de Moscú con un título de TI y terminó en el equipo Any Void. Junto con ellos se mudó a Yandex, donde pasó los últimos 2.5 años como líder del equipo para el desarrollo de Yandex.Maps para iOS.1. Cuéntame sobre una característica que implementaste que te enorgullece mucho.
- Necesitamos diferenciar entre las características del equipo y las personales. Lo que más recuerdo es que hace 1,5 años reduje a la mitad personalmente el tiempo de lanzamiento de la aplicación y se lo conté a mis colegas. Desenterró algunas características de iOS que no fueron documentadas en ningún lado. Dado que Swift (el lenguaje de programación que usa iOS) arrastra muchas bibliotecas dinámicas, hubo un pequeño problema. Cada biblioteca necesitaba que se verificara su firma digital en el lanzamiento, lo que ralentiza todo. Entonces mi trabajo realmente ayudó a los usuarios. Incluso pronuncié
un discurso en Mobius al respecto.
Cuando se trata del desarrollo del equipo, "Maps" es un gran proyecto con muchas características diferentes. No he visto nada igual antes. Si realmente te sientas y profundizas en él, puedo mostrar algunas características que probablemente nadie conozca: ¡hay muchas cosas allí! Cada nuevo lanzamiento hacemos algo muy bueno, y estoy muy orgulloso de todo. Actualmente, hemos terminado de pulir los datos históricos para la búsqueda y la planificación de rutas y centrarnos en las características que le indican dónde se encuentra. Lo llamamos un "guía turístico de la ciudad". Es menos una herramienta útil y más cosas de entretenimiento. Una de las grandes características es la realidad aumentada en Maps. Lo hicimos inusualmente rápido: funcionó prácticamente desde el primer momento, primer intento. Incluso logró llegar a la fecha límite antes del lanzamiento de iOS 11, por delante de los otros equipos. Fue realmente genial.
Nada especial: solo una rosquilla rodando por el río2. Ahora cuéntame sobre tu peor cagada.
- Oh, hubo uno. Fue al principio, cuando me uní al equipo de Maps: era algo desconocido para mí, el equipo anterior estaba completamente fuera de control y no había nadie allí para revisarme. Y una vez accidentalmente hice DDoSed los servidores de geocodificación porque olvidé poner una prueba en alguna parte. Después de que un usuario hace algo con la aplicación, el teléfono envía una solicitud al servidor cada vez que se actualiza su fotografía y el servidor devuelve datos sobre dónde se encuentra el usuario. A la velocidad máxima de 10 veces por segundo. Y, teniendo en cuenta cuántos usuarios tenemos, incluso si cada usuario número 100 o 1000 interactúa con esa función, el servidor realmente tuvo problemas para hacer frente.
Fue el raro momento en que salió del equipo de Maps, la gente de otros equipos me preguntó: "¿Qué has hecho?". Pero, afortunadamente, solucionamos el problema bastante rápido: el servidor se hizo una copia de seguridad en muy poco tiempo. Encontramos el grande, lo arreglamos muy rápidamente y enviamos una revisión a Apple (aunque la revisión de la App Store tardó aproximadamente una semana). Ahora es mucho más fácil de detectar allí, y en aquel entonces estaba más enojado conmigo mismo: ¿cómo podría joder tanto después de unirme al equipo? Pero todos entendieron que el proyecto era grande y que no había nadie con quien consultar ...
3. Describa su lugar de trabajo: desde la silla y el monitor de su oficina hasta los entornos de desarrollo preferidos y las utilidades favoritas.
- Silla y escritorio que no elegí: lo que me dio la compañía lo tomé. En él hay un monitor Thunderbolt y una MacBook, además de teclado y mouse inalámbricos para que pueda dejar a un lado la computadora portátil.

El escritorio está lleno de papeles con mis pensamientos y planes sobre ellos. Todavía no me atrevo a cambiar a algo progresivo: Trello o Dapulse, no importa. Nada de eso estaba alrededor cuando me uní, y todavía prefiero el papel. Claro, también tomo notas en la computadora portátil, pero aún así es agradable escribir algo y luego tacharlo más tarde. También hay muchas otras cosas en el escritorio que periódicamente limpio. También hay algunos ladrillos de Lego para mayor comodidad. Intento conscientemente hacer que mi espacio de trabajo se sienta como en casa, y a veces miro las mesas de mis compañeros de trabajo, donde no hay nada más que una computadora portátil y un monitor, y creo que no puedo vivir de esa manera.
4. ¿Cómo eliges un trabajo? Pila, producto, condiciones de vida, dinero?
- Probablemente respondería si la pregunta fuera "si estuviera eligiendo ...". Básicamente, todavía no he cambiado de trabajo. Estoy en mi sexto año en Yandex y no me puedo imaginar en ningún otro lado. Tengo una excelente posición, equipo, responsabilidades, muchas perspectivas de carrera.
Entonces, si elijo dónde trabajar, probablemente miraría primero al equipo. Necesito saber con qué personas trabajaré antes de tomar ese tipo de decisión. Si los conoce, probablemente también sepa en qué proyecto estará trabajando. Si la persona se lleva a cabo, puede estar seguro de que también tiene algunos proyectos excelentes. Es importante conocer a otras personas y dejar que otras personas te conozcan. No puedes aislarte y entrar en lo desconocido. Incluso las tareas dependen en gran medida de las personas. Si la compañía extravía su nueva contratación, rápidamente se volvería desinteresado.
El tema del dinero también es importante, pero es más o menos igual en todas partes. He realizado muchas entrevistas y sé lo que generalmente se ofrece en otras compañías.
5. ¿Qué le gustaría arreglar en las tecnologías e idiomas que usa?
- Puedo contarte sobre el dolor que todo desarrollador de iOS tiene en el culo. El compilador de Swift es terriblemente inoportuno, el entorno de desarrollo tampoco está pulido. Nuestros proyectos de 400 mil líneas de largo se retrasan como locos. La indexación es lenta como la melaza, cada archivo se abre varios minutos, un proyecto puede inicializarse durante una hora. La compilación no es más rápida, y también consume mucha potencia de procesamiento.
Nuestro trabajo depende de qué tan rápido Xcode compila cosas. Funciona bien con Objective-C, pero hay algo mal con Swift. Si funcionó un poco más rápido, no habríamos tenido que dividir el proyecto en módulos, pero tuvimos que invertir en él. Actualmente desarrollamos más en proyectos de prueba y no en la aplicación principal en sí, luego la transferimos. Aunque finalmente funcionó bien para nuestro proyecto, tomó dinero y tiempo aprender a trabajar de esa manera.
6. ¿Dónde está el mejor lugar para compartir experiencias de trabajo: universidad, conferencias, Habr? ¿En algún otro lugar que eso?
- La forma más efectiva es tener un problema específico y buscar una solución. "Obtener experiencia" es un término muy amplio, pero "buscar una solución" es más apropiado. Simplemente escribe tu pregunta en Google y mira lo que te da.
Normalmente voy a convenciones no para ganar experiencia, sino para compartir la mía. Tengo cierta experiencia en el mantenimiento de un gran proyecto, y eso interesa a las personas. Hay muy, muy pocos proyectos como el nuestro en Rusia, por lo que nuestra experiencia es bastante única. Me preguntan cómo dividió la aplicación en módulos, cómo se ve su revisión de código, cómo funciona su
CI .
7. Dados los recursos ilimitados (tiempo, dinero, personas), ¿en qué proyecto te gustaría trabajar?
- Tengo una lista bastante larga de "quiero hacer, no tengo tiempo" sobre lo que pretendo hacer en Maps. Hay cosas que necesitan mejorar.
Pero en general, me gustaría entrar en la industria espacial. Me fascina la idea de un hombre fuera de la Tierra, explorando el universo. Cada vez que hay noticias sobre avances científicos en esa área, me emociono. Aunque el desarrollo de iOS probablemente no sea necesario allí, pero puedo encajar en algún lugar con mis habilidades de gestión de equipo. Demonios, incluso le llevaría café a la gente si la idea fuera correcta.
8. ¿Cómo te relajas? ¿Qué haces en la vida, además del trabajo?
- Todo el mundo necesita "reiniciar" a veces. El programa 5 + 2 fue inventado por algunas personas muy inteligentes. Si realmente está involucrado en un proyecto, interesado en su éxito tanto que está dispuesto a trabajar los fines de semana en él, no terminará bien. Perderá su chispa, y debe mantenerse a toda costa si desea trabajar durante meses o años.
Los fines de semana suelo hacer algo simple: caminar, mirar televisión, nada demasiado extremo. Aunque probablemente me hubiera gustado, simplemente no tengo a nadie con quien hacerlo. Un par de veces nuestro equipo fue en kayak por el río Vyazma, fue genial. A veces vamos al paintball. Pero no es algo a lo que vamos regularmente, porque te drena bastante rápido. Claro, lo cambias por emociones, pero ... ¿Trabajas durante cinco días, luego pasas dos días haciendo algo físicamente intensivo y luego trabajas durante cinco días nuevamente? Probablemente no lo lograría.
También me gusta pasar tiempo restaurando mi casa. Algunas reparaciones se realizan rápidamente, algunas continúan para siempre. Es su propio pequeño mundo con sus propias tecnologías y experiencia.
9. Cuéntame sobre tus 3 libros favoritos: educativo, ciencia popular y ficción.
- No he tenido experiencias positivas con libros educativos. Probablemente no he leído ninguno sobre mi trabajo. Tal vez solo al principio, estudié C ++ en los libros. Recuerdo que fui a un campamento infantil al aire libre, todos a mi alrededor tenían libros normales y yo tenía C ++. Terminé no leyendo demasiado porque no tenía una computadora conmigo. Lo leí y sobre todo entiendo, ¿pero ahora para aplicarlo todo a mis necesidades? ¿Cómo ganar experiencia? Soy más una persona práctica que una persona teórica. Tal vez no conozco algunos de los términos geniales que mis colegas usan regularmente, pero al menos sé cómo hacer las cosas. Aprendí eso simplemente resolviendo problemas complejos y buscando soluciones en Internet.
Para las personas que se concentran en blogs y literatura inteligentes, solo puedo decir que nada de lo que leen o ven les garantiza que pueden replicarlo ustedes mismos. Siempre tenga en mente sus objetivos y complemente la lectura con práctica.
Wikipedia reemplaza la ciencia popular para mí. Leí sobre todo. Me gusta mucho la historia y de vez en cuando puedo leer sobre la línea de sangre gobernante rusa: desde Rjurjik hasta Iván el Terrible, desde el primer Romanov hasta la Revolución de Octubre, y luego saltar a un enlace sobre Alejandro Magno. Puedo pasar 2-3 horas allí y apenas notarlo. Hay algunos artículos interesantes sobre armas, herrería y otras cosas. Desafortunadamente no puedo replicarlo, pero es genial imaginar cómo la gente inicialmente tuvo estas ideas.
No leo mucho libros de ficción actualmente. Fueron reemplazados casi por completo por películas. Sirven para el mismo propósito, pero las películas son mucho más compactas. Pero mencionaré un libro que realmente me quedó grabado: "Oblomov". Me conmovió de una manera que ningún otro libro lo hizo.
10. Si un sistema de IA de repente tomara conciencia frente a ti, ¿qué le dirías?
- Primero preguntaría: ¿qué significa "consciente"? Si simplemente significa pasar la prueba de Turing, entonces todavía no es conciencia. Pero si no estamos entrando en detalles, probablemente le pediría que resuelva algún problema específico. Soy una persona práctica, después de todo. Entonces, "¿Cómo hacer Xcode más rápido?"
Pero aún necesita comenzar con "Hola, ¿cómo estás?". Una respuesta a este tipo de preguntas nos puede decir mucho sobre la IA. ¿Cómo evalúa una máquina su propio estado de ánimo? Que hace
Pregunta de un invitado anterior: ¿qué tecnología fue la más divertida de aprender?
- "Diversión" específicamente? Todavía no he aprendido a divertirme aprendiendo o trabajando. He aprendido a tomarlo con calma y hacerlo bien. Por ejemplo, realmente no me he divertido mucho aprendiendo el SDK de iOS, porque es bastante simple si conoces los conceptos básicos.
Donde realmente me divertí fue en la universidad, donde trabajé en un proyecto que implementó el aprendizaje automático. Fue refrescante darse cuenta de que realmente no hay nada tan difícil para ML. Si conoce los parámetros de entrada, puede predecir con cierta precisión el resultado. Quizás, eso explica por qué no estoy tan enamorado de la IA como todos los demás parecen estar; sé que son solo algoritmos.
Además, me divertí trabajando con compiladores que tenían subprocesos múltiples automáticos. Es una tecnología bastante desarrollada, tiene muchas cosas que aprender. Son realmente inteligentes y hacen mucho más de lo que puedes imaginar. Por ejemplo, transformaciones de árbol de sintaxis increíblemente complejas. O la optimización de la generación de código para una configuración particular de hardware y CPU.
Es genial que tengamos un marco de código abierto para eso,
LLVM , para que pueda crear su propio compilador. ¡Incluso podrías hacer tu propio idioma! Escriba un parcer para él que realice análisis de lexis y sintaxis, y luego utilice el poder de un compilador moderno para transformarlo en código de máquina.
Bonificación: pregúntale a otro desarrollador lo que quieras
- ¿Te unirías al primer vuelo tripulado a Marte, sabiendo que no regresarás?