Un buen código no llegará a Google

Durante mucho tiempo trabajando en diferentes áreas de TI, el equipo de investigación y yo observamos todos los posibles problemas de convertirse en desarrolladores y todas las causas y consecuencias de su escasez. Estábamos interesados ​​en: ¿por qué un programador se convierte en un especialista senior durante tanto tiempo o no se convierte en uno? ¿De dónde provienen las expectativas injustificadas de ambos lados? Y lo más importante: ¿qué debe hacer un desarrollador en cada nivel para ingresar a la casta privilegiada de s seniors, arquitectos, líderes de equipo y líderes?

Realizamos un extenso estudio entre programadores y sus líderes. Recopilamos los requisitos para los desarrolladores senior de las principales empresas, las oportunidades y las formas de desarrollar a este nivel, generamos todo tipo de ideas y trucos de vida y los transformamos en este artículo. Todo esto se discutirá más a fondo.
imagen

Senior, ¿quién diablos es Alice Senior?


Un análisis de las descripciones de trabajo en hh y los requisitos que los gerentes compartieron en las conversaciones cara a cara mostraron que no existe un enfoque único para determinar el nivel superior . En una empresa, este es el que puede diseñar un módulo complejo por sí mismo, en otra, para conectarse al refinamiento de las soluciones individuales, en la tercera, la que es más genial que el resto. Dentro de las propias empresas, los requisitos también difieren significativamente entre los gerentes, los líderes de equipo, los recursos humanos y los propios programadores.

Como resultado, los desarrolladores tienen una serie de problemas: sin una definición adecuada de los requisitos, no hay una visión clara de una carrera profesional y pasos de desarrollo. Preguntas: “¿Qué nivel tengo ahora? ¿Gano en proporción a él? ¿Cuánto necesito para actualizar al siguiente nivel? - Lo escuchamos en todas partes.

En lugar del desarrollo sistemático, es necesario resolver las tareas estándar, esperar la atención de la gerencia, aprender los marcos, sin darse cuenta de si avanzarán en una carrera profesional. Aconsejamos: cuando ingrese a la empresa o en este momento, conozca los requisitos no solo al nivel actual, sino también al más alto posible. De este modo, obtienes una visión en perspectiva del desarrollo y puedes relacionarte con él en cada paso.

Evaluación del programador: ¿el trabajo del programador?




Su desarrollo depende de la etapa en que se encuentre ahora. ¿Pero cómo evaluarlo? Este es el segundo problema.

Se obtuvieron varias ideas de las encuestas: el 70% de los programadores junior - intermedios intentan evaluarse a sí mismos. Paradoja: cuanto más bajo es el nivel de lo evaluado, más opera con sus propias ideas.
En las etapas iniciales, no hay profundidad de conocimiento y amplitud de horizontes: la imagen es muy limitada. Y tal evaluación sobreestima la idea de su nivel en el 86% de los casos.

Recomendamos: lo antes posible, cambiar de métodos de evaluación “internos” (su propia opinión, experiencia) a “externos”: solicite comentarios del líder usted mismo, ataque a los colegas más experimentados, compare tareas y métodos para resolverlos, vaya a entrevistas a las principales empresas, donde el nivel los requisitos son más altos y la base de prueba es mejor, etc. La evaluación del gerente debe ser objetivada por los resultados de fuentes alternativas, a fin de no caer en la trampa de las limitaciones de las capacidades y requisitos actuales de la empresa / departamento / proyecto.

Pero hay un camino más corto. Nosotros mismos hemos compilado una lista de requisitos de las principales empresas para profesionales de alto nivel. Y descubrieron un serio retraso que se forma entre los niveles medio y superior .

Si no sabe a dónde va, lo más probable es que se encuentre en un lugar equivocado.




Compilamos los requisitos y descubrimos que no solo un buen código convierte a un especialista junior en middl . En el nivel junior , un programador debe dominar todas las tecnologías necesarias y la capacidad de resolver problemas típicos en principio, aprender a escribir código de manera competente y rápida. En el nivel de desarrollador intermedio , ya se requiere una cultura de código, la capacidad de pensar más profundo y más amplio, implementar tareas más grandes de forma independiente y poder aplicar varias herramientas de desarrollo.

La diferencia entre medio y senior es mucho más delgada. Es aquí donde los desarrolladores forman un retraso, que no todos pueden superar por sí mismos. Esta es una serie completa de habilidades y cualidades personales que están implícitas, pero de las cuales nadie habla claramente: la responsabilidad de la mayoría del sistema que se está desarrollando, la tutoría, la capacidad de formular y proponer soluciones técnicas óptimas, habilidades de comunicación, etc.

Entonces, ¿quién es súper mayor ? Para formalizar los requisitos, tuvimos que ir lo más lejos posible y reunir todo lo que las empresas del Yandex, Luxoft, Mail.Ru Group e incluso el nivel de Google muestran en código abierto. Y también verificó esta información en conversaciones con los gerentes de desarrollo de empresas eminentes.

Habilidades duras

1. Código de limpieza;
2. Habilidades duras de nivel superior:

  • Conocimiento de algoritmos y estructuras de datos (esta es la base, sin la cual no hay ningún lugar);
  • Conocimiento de los principios de OOP;
  • Conocimiento de los marcos modernos (y cuanto más larga sea la lista, mejor; la reposición regular es bienvenida);
  • Comprensión de los principios de diseño, arquitecturas básicas (diseña independientemente un sistema / módulo como cabeza de cartel del proyecto, o participa en el diseño de sistemas grandes; como mínimo, resuelve una tarea voluminosa teniendo en cuenta la arquitectura actual del proyecto);
  • Conocimiento de los patrones de diseño (para reconocer y aplicar una bicicleta a tiempo, y no para reinventar la rueda; en sentido amplio, es la comunicación del equipo en un idioma para encontrar rápidamente una solución o evaluar la decisión de los colegas);
  • Experiencia en la interacción con DBMS relacionales y NoSQL, generando consultas, habilidades de optimización y gestión;
  • Comprender los principios de organización de pruebas, conocimiento de pruebas unitarias, idealmente: cambiar a pruebas automatizadas en lugar de pruebas manuales;
  • Posesión de al menos un sistema de control de versiones (la mayoría de las veces necesita uno específico, dependiendo de los requisitos de la empresa).

Soft Skills y horizontes profesionales
Esos mismos requisitos misteriosos, desesperadamente subestimados por los propios programadores. A menudo, la gerencia de la compañía y los recursos humanos operan sobre los conceptos de "trabajo en equipo" y "responsabilidad", pero no formalizan ni sus criterios ni sus manifestaciones en la vida. Como resultado, el 90% de los desarrolladores no mencionaron estos aspectos como importantes para el desarrollo.

  • Comprensión de las metodologías de desarrollo flexible, la capacidad de trabajar con ellas y adaptarlas a los detalles del proyecto;
  • Tutoría: la capacidad de llevar a juniors, principiantes y, a veces, a todo el equipo en caso de necesidad urgente;
  • La capacidad de encontrar y ofrecer tecnologías, herramientas para la mejor implementación, evaluación competente de un conjunto de tareas;
  • Habilidades de trabajo en equipo: elaborar acuerdos, tomar decisiones en equipo, mantener relaciones, centrarse en los resultados del equipo, perseguir intereses comunes;
  • El nivel de responsabilidad personal es la aceptación de la responsabilidad en las áreas de: objetivos y planes, relaciones profesionales, liderazgo, desarrollo profesional.

La idea de probarnos a nosotros mismos para la competencia en todos los bloques enumerados nos fue presentada por la escasez total de herramientas para evaluar cualquier otra cosa que no sea el nivel de competencia lingüística en el mercado ruso. Para las necesidades de nuestro proyecto de investigación, hemos compilado una versión de prueba de la prueba para 3 idiomas, que ayuda a navegar rápidamente en el nivel actual, y también destaca las fortalezas y debilidades.

Para resumir, es extremadamente importante evaluarse adecuadamente utilizando la cantidad máxima de recursos externos. Para evitar el clásico problema en el mercado laboral: "expectativas de los desarrolladores vs. realidad de las empresas ". Cuando los desarrolladores evalúan sus habilidades y su valor más alto que las empresas están listas para hacer. También esperan un despegue y desarrollo rápidos, que hasta este punto no sucede (para más detalles, vea el siguiente artículo).

PD: En la versión inicial del artículo, propusimos pasar la prueba a todos. Sin embargo, no esperábamos una afluencia tan poderosa de encuestados. Y se vieron obligados a cerrar la prueba para poder procesar las respuestas y los resultados actuales a quienes dejaron los datos de contacto. Por favor complete la prueba de paciencia :)

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


All Articles