Todos los días nos encontramos con los conceptos de "junio", "medio", "senior", pero nuestras ideas sobre qué conocimiento debe tener un desarrollador en diferentes etapas de crecimiento varían. La falta de un plan de desarrollo claro y la falta de comprensión de dónde ir a continuación a menudo conduce a la frustración y a los cambios de trabajo precipitados.

Los chicos de AppsCast junto con el Jefe de dispositivos móviles del proyecto Pandao
Alexander Cherny (
@AlexChernyy ) trataron de resolver el problema y elaborar su propio mapa del desarrollo de un desarrollador móvil desde el momento en que ingresó en la profesión y en los principales puestos. Debajo del gato hay consejos para entrevistar a los jones, dónde obtener buenos desarrolladores, recomendaciones para que los principiantes obtengan un trabajo, las diferencias clave entre jones, intermedios y adultos mayores, y la importancia de las habilidades de comunicación para todos los niveles.
Daniil Popov : Hoy nuestro invitado es Alexander Cherny, de Mail.ru del proyecto Pandao. Cuéntanos más sobre ti.
Alexander Cherny : Hola. Lidero el equipo de desarrollo móvil en el proyecto Pandao, que se dedica al comercio electrónico. Ahora hay seis personas en el personal, y todo comenzó conmigo solo.
Comencé mi carrera como programador en C y ensamblador, y llegué al desarrollo móvil como desarrollador de iOS. El primer factor fue la motivación personal para buscar un camino de desarrollo adicional. Luego había dos opciones: Java en el sector financiero o desarrollo móvil, que apenas comenzaba a aparecer. Hice un gran trabajo al encontrar personas de ambas áreas, escuché sus recomendaciones y pensamientos. El segundo factor fue aleatorio: la computadora portátil murió y, por consejo de un amigo, compré una MacBook usada.
Daniil Popov : ¿Resulta que has pasado de ser un simple desarrollador al jefe del departamento?
Alexander Cherny : El camino era lineal. Al principio crecí como desarrollador de iOS, luego obtuve un compañero de equipo, luego mi propio pequeño equipo de desarrollo de iOS, luego un equipo distribuido más grande. En algún momento, hubo una transición al liderazgo de todo el desarrollo móvil.
Entrada al desarrollo móvil
Daniil Popov : Basándonos en su experiencia, analicemos este camino con más detalle y comencemos con el puesto de junior. ¿Qué esperas de un especialista novato que llevas al equipo? ¿Cómo puede una persona del exterior entrar en la profesión de desarrollador móvil?
Alexander Cherny : La mejor manera es sacar
NO todas
las primeras escuelas de desarrollo móvil que periódicamente reciben varias empresas. Las empresas tienen una cantidad fija de la cantidad de empleados por el número de personas mayores en el equipo, por lo que toman una o dos de estas escuelas. No hay más junos para digerir al mismo tiempo, o simplemente no hay suficientes vacantes.
Pero el resto a menudo no es peor que los tomados por los organizadores del curso. Llamé a un desarrollador junior a mi equipo, y él recomendó un chico para el próximo equipo con el que estudié juntos.
Alexei Kudryavtsev : ¿Resulta que los chicos de los cursos pueden ser Jones normales y ser capaces de desarrollarse adecuadamente? Me pareció que muchas personas allí tienen la motivación de pasar rápidamente por todo para comenzar a ganar dinero lo antes posible, pero en realidad no saben cómo.
Alexander Cherny : Hay un indicador adicional de calidad: esta es la presencia de una selección preliminar obligatoria de cursos educativos y puntos de control durante todo el ciclo de clases. Esto significa que el graduado, como mínimo, tenía la fuerza de voluntad para llegar hasta el final y la paciencia de los maestros para entrenarlo.
Set de caballero de junio
Daniil Popov : ¿Cuáles son las tres cosas que un joven debe saber por sus habilidades físicas y sociales?
Alexander Cherny : De habilidades difíciles,
debe conocer el idioma de la plataforma seleccionada,
si es posible, conocer el SDK de la plataforma. Conocer la arquitectura no es importante para mí porque no entiendo cómo se puede entender la arquitectura si no ha encontrado los problemas que resuelve.
Es más interesante escuchar desde junio la respuesta a la pregunta "¿Por qué elegiste Android o iOS?".
En términos de habilidades blandas, me gustaría ver habilidades básicas de comunicación de todos, ya que no solo los dzhuns tienen dificultades para hablar. Cuando un desarrollador junior ingresa al equipo, la capacidad de señalar cuándo algo sale mal es importante. Tantos pecados en su juventud, creyendo que si no podían hacer algo, entonces este es el final de la historia.
Daniil Popov : Cómo entender de forma independiente tu nivel: ¿estás maduro para junio, medio o superior?
Alexander Cherny : El nivel se mide en relación con el equipo en el que se encuentra actualmente el desarrollador.
Daniil Popov : ¿Resulta que en un equipo puedes ser senior y en otro medio?
Alexander Cherny : Sí, y aquí la objetividad sufre, porque comienzan a exigir competencias de un especialista, cuya presencia no está completamente clara. Por ejemplo, te piden que saltes tres metros hacia arriba, pero no sabes cómo. En general, saltar no es tuyo, y nadie puede explicar por qué son necesarios en la aplicación cliente-servidor. No saltar Entonces, no es un senior.
Alexei Kudryavtsev : Joons a menudo viene a buscar trabajo con la confianza de que ya son geniales, pero al mismo tiempo tienen habilidades diferentes. ¿Qué otras dificultades tienen las entrevistas?
Alexander Cherny : El mayor problema es la evaluación desde cero, ya que no se sabe nada sobre junio: no hay nadie para escribir y pedir recomendaciones, no hay proyectos terminados.
Esto es bien tratado por el repositorio en vivo en GitHub, incluso si es solo un proyecto sintético y se escribe una actividad y media.
Si se escribe una prueba y media para esta actividad, bien hecha, y si hay una apariencia de arquitectura, debe tomar esto. Algo como esto me lleva a Jones. Tengo un criterio más subjetivo y difícil de evaluar: esto es
curiosidad .
Para resumir, aquí están las recomendaciones para el mes de junio:
- entender el lenguaje, conocer todas las construcciones básicas del lenguaje y no solo repetir lo que vieron en los videos;
- nadie espera un conocimiento profundo del SDK, ya que las actualizaciones salen a menudo y yo mismo he dejado de verlas, pero usted necesita saber las cosas a nivel del ciclo de vida;
- comprende tu motivación y entra conscientemente en la profesión.
Alexei Kudryavtsev : Cuando era junio, me pareció que para una comprensión básica del idioma que necesita ejecutar en todos los muelles de Apple, conocer cada clase y función. ¿Qué se incluye en la base de datos, en su opinión?
Alexander Cherny : esta es la sintaxis básica del lenguaje que resalta inmediatamente el IDE, las principales colecciones de la serie "cómo trabajar con matrices / listas", "cómo trabajar con diccionarios / mapas". Por UI, el conocimiento básico se forma al momento de escribir al menos un proyecto de prueba.
Creciendo en el medio
Daniil Popov : ¿Cómo saltar de junior a middle? ¿Cómo entender instantáneamente que un especialista ha dado el siguiente paso?
Alexander Cherny : Por supuesto, de la noche a la mañana, no lo entiendo. El problema mismo de la categorización es el problema. Imagine que cumple con un conjunto de criterios, pero uno de ellos no se cumple y no puede pasar formalmente al siguiente nivel. Estoy reservado a tal enfoque, especialmente en equipos pequeños.
Al mismo tiempo, existen criterios claros que no se pueden eludir. Por ejemplo, el nivel de establecimiento de objetivos y la responsabilidad que usted asume por ello. Desde junio no esperas nada. Él leerá la tarea, por la escritura clara de la cual es responsable su líder, y el máximo hará preguntas sobre puntos oscuros. No espera que reflexione sobre lo que sucederá, si evalúa casos limitados, para pensar un nuevo paradigma de código para la solución. Medio comienza a cruzar esta línea.
Daniil Popov : ¿Qué habilidades agregaste al medio además de las que tiene el junior?
Alexander Cherny : Debe haber una comprensión de la arquitectura y prioridad sobre
QUÉ escribes y
CÓMO .
Una de las características de un desarrollador junior es que para él el hecho de escribir código es valioso. Para el medio, el código es secundario, la tarea que resuelve pasa a primer plano.
En la división de desarrolladores en junio, Middle y Senior, se visualiza el crecimiento sin éxito a través de una secuencia de pasos estricta. En la gestión de productos, existe el triángulo MVP, un producto mínimamente viable. MVP es una línea que se dibuja no paralela a la base, sino desde la base hasta la parte superior del triángulo. En tal esquema, siempre sabes un poco de todo, el medio puede hacer más que un junior, y el señor, teóricamente, debería cerrar el triángulo completo por competencia.
Es más correcto considerar los criterios no a través de "saber / no saber", sino a través de "cuán profundamente lo sé". El joven puede saber acerca de la existencia, el medio sabe lo que hay dentro y el mayor entiende por qué se inventó.
Daniil Popov : ¿Debería el medio entender la informática? ¿Estructuras de datos, algoritmos, colecciones hash?
Alexander Cherny : Sí, es difícil resolver un problema aplicado sin comprender el trabajo de las mismas colecciones, por lo tanto, definitivamente se puede presentar un requisito para un medio.
Alexei Kudryavtsev : Usted mencionó el triángulo de competencias, y luego, ¿qué incluye?
Alexander Cherny : En una versión simplificada de habilidades difíciles hay lenguaje, plataforma y arquitectura. Si miras más profundamente, entonces debes usar la fórmula de Daniel y romper los bloques en Ciencias de la Computación e Ingeniería de Software.
Alexei Kudryavtsev : ¿Qué pasa con las habilidades que un ingeniero no siempre necesita, pero que pueden ser útiles: depuración, criptografía, rendimiento?
Alexander Cherny : Todos los ingenieros deberían estar interesados en la posibilidad de utilizar el peaje. Es posible que el junior no pueda trabajar con todas las herramientas, pero desde el medio, espero el mismo nivel de curiosidad que el junio en la entrada. Estoy seguro de que en algún momento se cansará de hacer clic en los botones del IDE y comenzará a aprender el método abreviado de teclado. En lugar de iniciar sesión para buscar pérdidas de memoria, iniciará la herramienta de aplicación.
Daniil Popov : ¿Debería el medio estar interesado en campos relacionados y ampliar sus horizontes?
Alexander Cherny : Estoy a favor del desarrollo de horizontes y erudición. Si una persona muestra tanta curiosidad, este es un buen vector para la persona mayor. Él es simplemente diferente en su habilidad para responder la pregunta "¿Por qué existe?" Si Middle escribe la clase más simple de una aplicación, a la que todos se refieren como cliente-servidor, pero no se da cuenta de por qué el tráfico no se detecta con https, y todo funciona al instalar Charles, esto es insultante. Pero para el menor, se lo explicaría yo mismo.
En general, el medio fue más desafortunado. Esta es una zona de crecimiento demasiado larga e impredecible, no está claro si se extenderá durante mucho tiempo.
Los mismos dzhuns son más simples: con un empleo constante en proyectos en un equipo adecuado, su crecimiento a la mitad llevará de un año a dos años y medio, no más.
Daniil Popov : ¿Qué pasa con las habilidades blandas para el medio?
Alexander Cherny : Middle ya no debería tener miedo de hablar sobre problemas y ser capaz de tomar una función y resolverla por sí misma, tal vez todavía no entienda su interacción con otras características. Por ejemplo, una tarea voló con una imagen del diseñador y describió brevemente lo que hay que hacer. Basado en este medio introductorio, debo decir qué problemas pueden ser, por ejemplo, hay un elemento que no está en el sistema y tendrá que hacerse durante mucho tiempo. Este es un tipo de mecanismo de autocensura con respecto a las tareas que recibe. Incluso en este punto, se agrega la habilidad de estimar plazos.
Daniil Popov : ¿Qué hay de las comunicaciones? Sin ellos, la tarea no se puede resolver y evaluar?
Alexander Cherny : Sí, debes poder hablar con las partes interesadas. No complique la cadena y pregunte directamente al diseñador, vaya a los desarrolladores de otra plataforma y descubra si entiende la tarea de la misma manera.
Daniil Popov : ¿Qué es lo que los medios generalmente no saben?
Alexander Cherny : Muchas personas abruman el idioma y el SDK, y en los lugares más fantásticos. Cuántos medios murieron debido a la incomprensión de que el iterador es un objeto, o por la pregunta de si la cadena está representada: una matriz o una lista.
Intento verificar no el nivel de conocimiento y ni siquiera el razonamiento, sino la reacción al razonamiento. Por ejemplo, le digo que hay tres situaciones diferentes y que el compilador se comporta de manera diferente. Uno puede descartar esta situación, y el otro puede decir que nunca pensó en ello, pero con una computadora portátil en sus manos podría reproducir la situación en el IDE para que el depurador muestre cuál es la diferencia.
¡Felicidades, usted es señor!
Daniil Popov : ¿Qué habilidades se deben agregar a las del medio para que puedas llamarte un senior?
Alexander Cherny : ¿Qué está haciendo el señor? Él define la cultura técnica del proyecto en su conjunto, ya que comprende los beneficios que todas las actividades de desarrollo aportarán al negocio. Aquí necesita experiencia, comprensión del negocio y la capacidad de asumir riesgos. El senior entiende los problemas del nivel "Tengo una congelación de vidos, pero quiero que se vaya sin problemas". Cómo exactamente se hará esto no importa.
Senior: el garante de la experiencia técnica. Acuden a él con una pregunta y un deseo de obtener un conjunto específico de acciones.
Desde el medio, espero la comprensión de que hay una máquina virtual y existe por una razón, por parte del señor: cómo se puede usar con beneficio.
Alexei Kudryavtsev : ¿Qué tal el conocimiento en ingeniería inversa?
Alexander Cherny : Cualquiera puede revertir. No tengas miedo de hacer esto: este es el límite de los medios y superiores. Debe comprender dónde se almacenan los datos y los recursos, nada fantástico.
Una característica interesante del medio, que distingue a su superior, es que siempre dice que está listo para hacer la tarea, pero no siempre comprende qué hay detrás de esto y cuáles serán las consecuencias.
Para distinguir entre niveles, puede agregar el uso de bibliotecas. Junior arrastra cualquier biblioteca si resuelve un problema. El medio se arrastra, pero piensa que necesitamos ver si hay una solución similar en el proyecto. Senior escribe su bicicleta para poner estrellas en GitHub.
Puede arrastrar silenciosamente una biblioteca y asumir que resolvió el problema. Puede mirarlo y ver que solo necesita una pieza pequeña y tomarlo solo. Puede arrastrar toda la biblioteca porque los plazos se estaban agotando, pero cree un problema apropiado para solucionarlo más tarde. El punto es con qué nivel de comprensión abordar el tirón.
Daniil Popov : Senior no solo debe seleccionar correctamente las bibliotecas, sino también comprenderlas, también pueden tener problemas. A diferencia del medio, que cubrirá todo con try-catch, el senior bifurcará, reparará y hará una solicitud de extracción para este problema.
Alexander Cherny : Al agregar una biblioteca, el señor se responsabiliza por las consecuencias. Middle arrastrará y transferirá la responsabilidad a la propia biblioteca o sus desarrolladores.
¿A dónde sigue?
Daniil Popov : ¿Hay vida después del señorío? Veo opciones: jefe, jefe de departamento, CTO o gestión de proyectos.
Alexei Kudryavtsev : ¿Qué pasa con el desarrollo técnico: experiencia técnica, director o incluso cambiar de dirección?
Alexander Cherny : Todas las opciones tienen sus propias consecuencias. Sí, puede ocupar puestos gerenciales, pero puede permanecer en el entorno técnico; esto definitivamente no es una parada en el desarrollo.
Daniil Popov : Tengo la sensación de que el conjunto de habilidades difíciles depende en gran medida de la empresa para la que trabajas y su perfil.
Alexander Cherny : Afecta. Una gran empresa de abarrotes como Facebook tiene miles de técnicos. Todos ellos son muy limitados en la elección de soluciones técnicas: hay una pila aprobada, hay equipos de infraestructura completos y un comité de arquitectura que toma decisiones para todos. En este caso, el ingeniero se convierte en un desarrollador bloqueado de la compañía, que está obligado a usar los paradigmas de la compañía. Con el tiempo, se vuelve más valioso para la empresa, pero no el hecho de que este valor se perciba desde el exterior.
Daniil Popov : ¿Y si quisiera participar en una habilidad que no es típica de un producto de la compañía?
Alexander Cherny : Primero le pregunto a la persona de dónde surgió la idea. A veces las personas vienen con deseos extraños y no pueden explicar su naturaleza. Si el desarrollador puede justificar, entonces necesita mirar más a fondo cómo esta idea se ajusta al producto. Es probable que siga siendo útil para los negocios.
Es importante abordar este proceso individualmente. A menudo resulta que esto no es lo mejor que una persona puede hacer ahora.
Daniil Popov : Dijiste que considerabas la división en junio, medio y alto difuso. ¿Es necesario entonces?
Alexander Cherney : Cuando el equipo es pequeño y todos lo saben todo, puedes hacerlo sin atajos. En una gran corporación, se requerirá la graduación para cumplir con el código laboral a fin de transferir los salarios.
Tarjetas de desarrollo para desarrolladores
Alexei Kudryavtsev : ¿Cómo puede un desarrollador determinar los puntos de crecimiento?
Alexander Cherny : Soy de la opinión de que el empleado debe participar en una carrera, ya que es imposible patrocinar a todos. Si una persona quiere buscar algo, la solicitud correcta es el nombre de la plataforma y la hoja de ruta del desarrollador. Puede encontrar un montón de mapas mentales con información detallada, en qué orden y qué desarrollar.
Daniil Popov : Al preparar el lanzamiento, miramos el mapa de desarrollo del desarrollador de iOS. Hay tantas cosas que parece que después de estudiar todo el espectro, un ingeniero se sobrecalificará para el 90% de las empresas en el mercado ruso.
Alexander Cherny : Nadie verifica la profundidad del conocimiento. Por ejemplo, miro el mapa y veo el marco de Core Location, pero no hay detalles específicos sobre lo que se necesita exactamente en él: saber sobre su existencia o comprender cosas de bajo nivel, por ejemplo, qué coprocesadores son capaces de producir eficiencia energética adicional en el fondo.
La hoja de ruta es solo un mapa topográfico que observa y analiza qué ciudad ya ha visitado y fotografiado en el fondo de un letrero en la entrada. Al mismo tiempo, la hoja de ruta no es lineal y no necesita conocer la anterior para pasar a la siguiente, puede moverse donde quiera aquí y ahora.
Alexei Kudryavtsev : Las hojas de ruta no siempre son útiles, ya que a menudo no coinciden con lo que se requiere en el trabajo, y no siempre cubren las cosas en las que "nadas". ¿Cómo crear una hoja de ruta personal?
Alexander Cherny : Hackerrank recientemente realizó un
estudio sobre lo que los empleadores ahora quieren de los desarrolladores. Independientemente del tamaño del equipo, el primero es la resolución de problemas: el deseo del empleador de escuchar del ingeniero una respuesta clara sobre cómo resolver un problema en particular y a qué costo.
Alexei Kudryavtsev : ¿Cómo te sientes acerca de las tarjetas de desarrollo individual, donde se describen las competencias, con un líder de equipo, se evalúan los resultados y se determina qué bombear a continuación?
Alexander Cherny : Es genial si ambas partes tienen tiempo para esto. En todas las conversaciones sobre el desarrollo, hay una molestia: en algún momento, el empleado comprende que no hay ningún lugar para desarrollarse aquí y cambia su trabajo con la esperanza del desarrollo. Surge una distorsión cognitiva: con el cambio del entorno, dejas de pensar en el desarrollo real y todas las fuerzas se dirigen a la adaptación en un nuevo lugar.
Alexei Kudryavtsev : ¿Entonces vale la pena cambiar de trabajo por el bien del desarrollo?
Alexander Cherny : Si el empleador es estable y permite resolver problemas tecnológicos, y el equipo de desarrollo no cambia, entonces no. No quiero que los desarrolladores cambien de trabajo para resolver algunos problemas personales. Siempre hago la pregunta en la entrevista qué acciones tomó la persona para resolver los problemas que llevaron a su despido de su trabajo anterior.
Por cierto, hay problemas con el Jefe de posición de desarrollo y otras posiciones gerenciales del desarrollador. No hay muchas personas arriba, y esta parte superior del negocio lo considera una persona autosuficiente que no solo debe ayudar a resolver los problemas de sus empleados, sino también lidiar solo con sus dificultades. No estoy seguro si este es el enfoque correcto.
Daniil Popov : ¿Qué más preguntas en la entrevista además de las preguntas técnicas?
Alexander Cherny : Recientemente, he estado usando casos de proyectos pasados de nuestros equipos. Es importante para mí entender cómo reacciona una persona ante diversas situaciones. Por ejemplo, dos desarrolladores entienden de manera diferente el papel y la responsabilidad del modelo de vista. Eres el tercero , . , . -, , . ?
, , , 30 , soft skill .
: : soft hard?
: , . hard skill. - — . . . soft skill , 65% 35%.
, , soft skill . , Saint AppsConf 2019 . Introductory- , General- . , — 16 .