"Te puedo contar sobre el dolor común de todos los desarrolladores de iOS" - 10 preguntas para el programador, número 2



Parece que te gusta la versión piloto . Y seguimos confiando en que los tipos que no usan lentes de cámara son tan interesantes como las estrellas de TI. Y tal vez aún más, porque hablan de problemas reales y sus soluciones. Esta semana le hicimos 10 preguntas a la persona que respalda modestamente Yandex.Maps para iOS.


Nikolai Likhogrud ( likhogrud ) de Moscú. Comenzó con HTML y Basic en noveno grado. Luego estudió independientemente C #, ingresó en la Universidad Estatal VMK de Moscú y luego ingresó en el equipo Any Void. Junto con Any Void, se mudó a Yandex; durante los últimos 2.5 años ha estado trabajando como líder de equipo para el grupo de desarrollo Yandex.Maps para iOS.

1. Cuéntanos sobre la función que has implementado y de la que estás orgulloso.


- Aquí es necesario separar las características del equipo y las personales. Desde el punto de vista personal, el más memorable, es que hace un año y medio aceleré dos veces el tiempo de lanzamiento de la aplicación. Y se lo contó a sus colegas. Descubrí algunas de las características de iOS que no se describieron en ninguna parte. Hubo un problema debido al hecho de que Swift extrae muchas bibliotecas dinámicas. Para cada uno de ellos, debe verificar la firma al principio, se ralentiza. Hizo un trabajo útil, realmente afectó la vida de los usuarios. Incluso hablé en Mobius entonces .

En cuanto al desarrollo del equipo, Maps es un gran proyecto con un montón de características diferentes. Probablemente nunca volví a ver eso. Y si te sientas a entender, entonces puedo mostrarte cosas que muchos ni siquiera saben: ¡hay muchas cosas! En casi todos los lanzamientos nuevos, estamos haciendo cosas nuevas y geniales, y estoy orgulloso de todo. Ahora estamos tratando de introducir en los "Mapas" escenarios de búsqueda y enrutamiento no establecidos históricamente, sino aquellos que hablan más sobre el lugar donde se encuentra. Llamamos a esto una guía de la ciudad. En general, ya no es información de referencia, sino cognitiva, entretenida. Y una característica muy interesante: realidad aumentada en las tarjetas. Lo hicimos rápidamente: todo salió de inmediato, todo despegó. Logramos en el lanzamiento de iOS 11, antes que otros equipos. Fue un placer

El muñeco flota en el Neva, nada inusual.

2. Y ahora, sobre el fakap más feroz.


Fakap fue. Eso fue al principio cuando me cambié a Maps: el proyecto no es familiar, el equipo anterior se dispersó por completo, no había nadie para revisarme. Y en una versión, utilicé los servidores de geocodificador zadosil, porque olvidé agregar un cheque. Después de algunas manipulaciones en la aplicación, se envió una solicitud al servidor para cada actualización de la posición del usuario, que devolvió datos sobre dónde se encuentra el usuario. Y tales cambios en la geolocalización pueden ser 10 veces por segundo. Y teniendo en cuenta cuántos usuarios tenemos, incluso si cada centésima o milésima parte realizara estas acciones, tuvimos una gran carga en el servidor.

Fue un momento que se hizo notable fuera del marco de mi equipo. La gente vino y dijo: Bueno, ¿qué estás haciendo? Pero, por cierto, se resolvió normalmente: levantaron el servidor para hacer frente a la carga. El error se encontró rápidamente, se corrigió rápidamente y luego se publicó la actualización. La verdadera revisión en la AppStore tomó aproximadamente una semana. Ahora se ha vuelto más fácil con esto. Estaba más ofendido entonces: ¿cómo podría ser, recién empecé a trabajar! Pero todos entendieron todo: que el proyecto era grande, estaba solo allí y no había nadie que me dijera ...

3. Describa su espacio de trabajo: desde la silla y el monitor hasta los entornos de programación y sus utilidades favoritas.


"Me dieron una silla y una mesa también". En él hay un monitor Thunderbolt y una computadora portátil. Y también teclado y mouse inalámbricos, para que solo pueda trabajar con el monitor.



La mesa está llena de pedazos de papel, donde están escritos todos mis pensamientos y planes. Para todo tipo de Trello y Dapulse, no fui. Cuando comencé, todo esto todavía no estaba allí, y en general el documento es de alguna manera más familiar. Por supuesto, todavía estoy tomando notas en la computadora portátil, pero escribirlo así y luego tacharlo es mejor. Por lo general, hay muchas cosas en la mesa que simplemente se acumulan con el tiempo desde algún lugar, pero recientemente las eliminé. Lego sigue en pie: comodidad. En general, creo que mi lugar es acogedor. Y cuando miro las mesas de colegas, donde no hay nada, un monitor y una computadora portátil, me parece que no podría hacerlo.

4. ¿Por qué principio eliges un trabajo? Pila, producto, condiciones de vida, dinero?


- Probablemente respondería la pregunta " si eligiera ...". De hecho, de hecho, nunca he cambiado de trabajo. Ya me he convertido en Yandex, he estado trabajando durante más de cinco años. Ahora tengo una buena posición, equipo, responsabilidades, muchos planes.

Entonces, si lo eligiera, probablemente lo haría por orden. Es decir, conocer de antemano a las personas con las que trabajaré. Y si los conoce, entonces, por regla general, sabe qué producto desarrollará. Si una persona no se dedica a la basura, puede estar seguro de que sus proyectos son buenos. Es importante estar en la comunidad: que eres conocido y tú, los demás. Para que no exista tal cosa que vayas a cero, a lo desconocido. Después de todo, incluso las tareas dependen de las personas. Si un nuevo empleado es enviado sin éxito, rápidamente puede volverse poco interesante.

Otra cuestión monetaria importante. Pero aquí todo parece ser más o menos. Realizo muchas entrevistas y sé cuánto ofrecen en otras compañías.

5. ¿Qué tecnologías e idiomas que utiliza le gustaría corregir?


- Puedo contarte sobre el dolor común de todos los desarrolladores de iOS. En Swift, el compilador no está optimizado, el entorno de desarrollo no está finalizado. En nuestro proyecto, donde 400 mil líneas de código, todo se ralentiza. La indexación se ralentiza, la apertura de archivos se ralentiza, la apertura de proyectos se ralentiza. La compilación lleva mucho tiempo, requiere muchos recursos.

Incluso nuestro trabajo depende de lo que compila Xcode durante mucho tiempo. Funciona bien con Objective-C, pero malo con Swift. Si lo hiciera normalmente, no tendría que dividir la aplicación en módulos; tuvimos que invertir en ella. Ahora estamos desarrollando más en proyectos de prueba, en lugar de en la aplicación principal. Luego pasamos de los proyectos de prueba al principal. Aunque esto finalmente benefició a todo el proyecto, hubo algunos costos para aprender a trabajar de esta manera.

6. ¿Dónde es mejor aprender de la experiencia de otra persona: en una universidad, en conferencias, en un centro? En otro lugar?


- Lo más efectivo es cuando tiene un problema específico y está buscando una solución. "Aprender de la experiencia" - Realmente no entiendo lo que esto significa. Pero "dónde buscar una solución al problema" es comprensible. Donde se encuentra Simplemente lo ingresas en Google y ves lo que te dice.

Y con las conferencias de alguna manera resulta que ni siquiera adopto la experiencia de otros, voy allí, sino que comparto la mía. Ya existe cierta experiencia en la gestión de un gran proyecto que interesa a muchos. Podemos decir que solo hay unas pocas aplicaciones como la nuestra, por lo que la experiencia es única a su manera. Me preguntan: cómo se dividieron en módulos, cómo se organiza la revisión de código, cómo CI funciona para usted allí.

7. Si tuviera recursos ilimitados (tiempo, dinero, poder, personas), ¿qué proyecto tomaría?


- Tengo una pequeña lista "He estado esperando durante mucho tiempo, pero no tengo tiempo": lo que quiero hacer en Maps. Hay piezas que me gustaría mejorar.

En general, sería interesante contactar a la industria espacial. La idea de una persona fuera de la Tierra, el conocimiento del universo, me interesa mucho. Me alegro cuando se producen algunos éxitos en esta dirección. Probablemente, no hay nada que escribir debajo de iOS allí, pero en algún lugar podría ser útil con mi habilidad de gestión de equipo. Sí, al menos iría a preparar café, si tengo una idea.

8. ¿Cómo te relajas? ¿Qué haces además del trabajo?


- Necesitas reiniciar - cien por ciento. Este modo 5/2 fue inventado por tíos realmente inteligentes. Si estás involucrado en un proyecto, te estás quemando, estás enfermo por él, entonces si trabajas en él el fin de semana, será malo. Como resultado, perderá el fusible, pero debe mantenerlo estable por el contrario para que funcione durante meses y años.

Durante el fin de semana, elijo hacer algo simple: dar un paseo, mirar televisión, nada extremo. Aunque, tal vez, me gustaría, simplemente no hay una compañía adecuada. Un par de veces los chicos y yo salimos a kayak en Klyazma, fue genial. A veces hay paintball. Pero todo esto no es regular, porque es un desperdicio activo de energía. Por supuesto, obtienes algún tipo de emociones a cambio ... ¿Pero cinco días para trabajar, y luego otros dos días para nadar y correr en algún lugar y luego volver a trabajar cinco días? ¡Y tu cuerpo ya duele! Creo que no pude.

También paso tiempo en reparaciones. Pequeño e interminable. Este es un mundo separado con sus propias tecnologías, experiencia única. Es muy interesante allí.

9. Cuente sobre 3 libros favoritos: educación, ciencia popular y ficción.


- No trabajé con los libros de entrenamiento. En el trabajo, puedo decir que no he leído un solo libro. Al principio, tal vez estos eran libros sobre C ++. Recuerdo viajar a un campamento para niños: la gente era normal y yo tenía C ++. Como resultado, realmente no leí nada, porque no había computadora a mano. Leí, parece comprensible, pero ¿cómo puedo aplicar esto a mis tareas? ¿Cómo ganar experiencia? Soy más un practicante, no un teórico. Tal vez no conozco ningún término interesante que usen otros tipos, pero al mismo tiempo puedo hacer mi trabajo. Aprendí esto solo resolviendo tareas difíciles. Siempre busqué experiencia y soluciones simplemente en Internet.

Les diría a aquellas personas que se enfocan mucho en leer literatura y blogs que lo que leen y ven no es garantía de que puedan reproducirlo ustedes mismos. Uno no debe separarse de sus propias tareas para que la lectura siempre esté acompañada de práctica.

De la comunidad científica, leí Wikipedia, donde puedes leer sobre todo. Realmente amo la historia y puedo leer desde Rurik hasta Iván el Terrible, desde el primer Romanov hasta los golpes de estado. Y luego accidentalmente salta sobre el enlace a Alejandro Magno. Puedo pegarme por 2-3 horas. Hay artículos interesantes sobre armas, sobre tecnologías de procesamiento de metales. Es una pena, no puedo reproducir esto, pero entender cómo la gente pensaba en todo esto antes, desde el horno de leche cruda hasta el proceso Bessemer, es genial.

Una ficción en mi vida no es suficiente. Tales libros probablemente han suplantado a las películas. Porque, de hecho, su misión es similar, pero las películas son más compactas. Aunque mencionaré un libro, es "Oblomov" de Goncharov. Estaba muy triste cuando lo leí durante mucho tiempo. Parece incluso llorar. Ahora sería interesante volver a leerlo. Ahora probablemente pensaría que lo necesitaba, Oblomov.

10. Si, justo ante tus ojos, AI se despierta, ¿qué le dirás?


- La pregunta es, ¿qué significa "conciencia"? Si simplemente se hace pasar la prueba de Turing, todavía no es conciencia. Pero si uno no entra en tales detalles, entonces preguntaría sobre la solución de cualquier problema específico. Todavía soy una persona de práctica. "¿Cómo hacer Xcode más rápido?" :).

Pero definitivamente necesitas comenzar con "Hola, ¿cómo estás?" "¿Cómo estás?", "¿Qué estás haciendo?" - las respuestas a estas preguntas pueden contener algunas notas de reflexión. ¿Cómo evalúa realmente la máquina sus asuntos y estado de ánimo? ¿Y qué está haciendo ella ahora?

Pregunta del héroe anterior: ¿qué tecnología disfrutaste más en el proceso de aprendizaje?


- ¿Es un placer? Todavía no he aprendido a disfrutar el trabajo y el estudio. Aprendí a tratarlos con calma y a desempeñarme bien. El SDK de iOS, por ejemplo, no me causó mucho interés, porque generalmente es simple.

Fue interesante en la universidad cuando utilicé el aprendizaje automático en un proyecto. Fue interesante entender que esencialmente no hay nada complicado en ML. Conociendo los parámetros de entrada, puede predecir más o menos el resultado. Probablemente, en parte debido a esto, no experimento la euforia de la IA, que muchos experimentan. Sé que todos estos son solo algoritmos.

Y alguna vez fue interesante comprender compiladores con paralelización automática. Esta es una tecnología muy desarrollada, hay muchas cosas diferentes en los compiladores. En realidad son inteligentes y hacen mucho más de lo que puedes imaginar. Por ejemplo, las conversiones más complejas sobre el árbol de sintaxis. O la optimización más complicada de la generación de código cuando el compilador funciona para un hardware y procesador específicos.

Es genial que ahora exista un marco LLVM de código abierto que le permita crear su propio compilador. ¡Puedes crear tu propio idioma! Escriba un analizador para él, que se dedicará al léxico y al análisis, y luego use el poder de un compilador moderno para obtener el código de la máquina.

Bonificación: haga cualquier pregunta a otro desarrollador.


- Sabiendo que no puedes regresar, ¿volarías a Marte en la primera expedición?

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


All Articles