"Puedo contarte sobre el dolor que cada desarrollador de iOS tiene en el culo" - 10 preguntas para un desarrollador, episodio 2



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ío

2. 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?

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


All Articles