Durante muito tempo trabalhando em diferentes áreas de TI, a equipe de pesquisa e eu observamos todos os possíveis problemas de nos tornarmos desenvolvedores e todas as causas e consequências de sua escassez. Estávamos interessados: por que um programador se torna um especialista
sênior por tanto tempo ou não se torna um? De onde vêm as expectativas injustificadas de ambos os lados? E o mais importante - o que um desenvolvedor deve fazer em cada nível para entrar na casta privilegiada de s seniores, arquitetos, líderes de equipe e líderes?
Realizamos um extenso estudo entre programadores e seus líderes. Reunimos os requisitos para desenvolvedores
seniores das principais empresas, oportunidades e maneiras de desenvolver para esse nível, geramos todos os tipos de insights e hacks de vida e os transformamos neste artigo. Tudo isso será discutido mais adiante.

Sênior, quem é Alice Sênior?
Uma análise das descrições de cargos no hh e os requisitos que os gerentes compartilharam nas conversas presenciais mostraram que não há uma abordagem única para determinar
o nível
sênior . Em uma empresa, é ele quem é capaz de projetar um módulo complexo, em outra - para se conectar ao refinamento de soluções individuais, na terceira - a que é apenas mais legal do que as demais.
Dentro das próprias empresas, os requisitos também diferem significativamente entre gerentes, líderes de equipe, RH e programadores.
Como resultado, os desenvolvedores enfrentam vários problemas: sem uma definição adequada de requisitos, não há uma visão clara de uma carreira e etapas de desenvolvimento. Perguntas: “Que nível eu tenho agora? Eu ganho em proporção a ele? Quanto eu preciso atualizar para o próximo nível? ” - ouvimos em todos os lugares.
Em vez de desenvolvimento sistemático, é necessário resolver tarefas padrão, aguardar a atenção da gerência, aprender estruturas, sem perceber se elas avançarão na carreira. Aconselhamos: quando você entra na empresa ou agora - aprenda sobre os requisitos não apenas no nível atual, mas também no nível mais alto possível. Assim, você obtém uma visão em perspectiva do desenvolvimento e pode se relacionar com ela a cada passo.
Avaliação do programador - o trabalho do programador?

Seu desenvolvimento depende de qual estágio você está agora. Mas como avaliar isso? Este é o segundo problema.
Várias idéias foram obtidas nas pesquisas: 70% dos programadores de nível
médio tentam avaliar a si próprios. Paradoxo: quanto menor o nível de avaliação, mais ele opera com suas próprias idéias.
Nos estágios iniciais, não há profundidade de conhecimento e amplitude de horizontes - a imagem é muito limitada. E essa avaliação superestima a ideia de seu nível em 86% dos casos.
Recomendamos: o mais rápido possível, mude dos métodos de avaliação “internos” (sua própria opinião, experiência) para “externo” - peça feedback do próprio líder, ataque os colegas mais experientes, compare tarefas e métodos para resolvê-los, faça entrevistas com as principais empresas, onde o nível os requisitos são mais altos e a base de teste é melhor etc. A avaliação do gerente deve ser objetivada pelos resultados de fontes alternativas, para não cair na armadilha das limitações dos recursos e requisitos atuais da empresa / departamento / projeto.
Mas existe um caminho mais curto. Nós mesmos compilamos uma lista de requisitos das principais empresas para profissionais
seniores . E eles descobriram um sério atraso que se forma entre os níveis
médio e
sênior .
Se você não sabe para onde está indo, provavelmente se encontrará em algum lugar no lugar errado.

Compilamos os requisitos e descobrimos que não apenas um bom código transforma um especialista
júnior em
middl . No nível
júnior , um programador deve dominar todas as tecnologias necessárias e a capacidade de resolver problemas típicos em princípio, aprender a escrever código com competência e rapidez. No nível do desenvolvedor
intermediário , já é necessária uma cultura de código, a capacidade de pensar mais e mais profundamente, implementar tarefas maiores de forma independente e poder aplicar várias ferramentas de desenvolvimento.
A diferença entre
médio e
sênior é muito menor. É aqui que os desenvolvedores formam um atraso, que nem todos podem superar por conta própria. Essa é uma série de habilidades e qualidades pessoais implícitas, mas das quais ninguém fala claramente: responsabilidade pela maior parte do sistema que está sendo desenvolvido, orientação, capacidade de formular e propor independentemente soluções técnicas, habilidades de comunicação etc.
Então, quem é super
sênior ? Para formalizar os requisitos, tivemos que ir o mais longe possível e reunir tudo o que as empresas do grupo Yandex, Luxoft, Mail.Ru e até o nível do Google exibem em fontes abertas. E também verificou essas informações em conversas com os gerentes de desenvolvimento de empresas eminentes.
Habilidades difíceis1. Código de limpeza;
2. Habilidades de nível superior:
- Conhecimento de algoritmos e estruturas de dados (esta é a base, sem a qual não há lugar nenhum);
- Conhecimento dos princípios da OOP;
- Conhecimento de estruturas modernas (e quanto maior a lista, melhor; reposição regular é bem-vinda);
- Compreensão dos princípios de design, arquiteturas básicas (projeta independentemente um sistema / módulo como atração principal do projeto ou participa do design de grandes sistemas; minimamente - resolve uma tarefa volumosa, levando em consideração a arquitetura atual do projeto);
- Conhecimento dos padrões de design (reconhecer e aplicar uma bicicleta no tempo e não reinventar a roda; no sentido amplo, é a comunicação da equipe em um idioma para encontrar rapidamente uma solução ou avaliar a decisão dos colegas);
- Experiência em interação com DBMSs relacionais e NoSQL, construindo consultas para eles, habilidades de otimização e gerenciamento;
- Compreensão dos princípios da organização de teste, conhecimento de teste de unidade, idealmente - alternando para teste automatizado em vez de manual;
- Posse de pelo menos um sistema de controle de versão (na maioria das vezes você precisa de um sistema específico, dependendo dos requisitos da empresa).
Soft Skills e horizontes profissionaisEsses mesmos requisitos misteriosos, subestimados desesperadamente pelos próprios programadores. Freqüentemente, a gerência e o RH da empresa operam com os conceitos de "trabalho em equipe" e "responsabilidade", mas não formalizam seus critérios nem suas manifestações na vida. Como resultado, 90% dos desenvolvedores não mencionaram esses aspectos como importantes para o desenvolvimento.
- Compreensão de metodologias flexíveis de desenvolvimento, capacidade de trabalhar com elas e adaptá-las às especificidades do projeto;
- Tutoria: a capacidade de levar juniores, iniciantes e, às vezes, toda a equipe em caso de necessidade urgente;
- A capacidade de encontrar e oferecer tecnologias, ferramentas para a melhor implementação, avaliação competente de um conjunto de tarefas;
- Habilidades de trabalho em equipe: elaborar acordos, tomar decisões em equipe, manter relacionamentos, focar nos resultados da equipe, buscar interesses em comum;
- O nível de responsabilidade pessoal é a aceitação da responsabilidade nas áreas de: objetivos e planos, relações profissionais, liderança, desenvolvimento de carreira.
A ideia de testar a nós mesmos a proficiência em todos os blocos listados nos foi apresentada pela escassez total de ferramentas para avaliar algo que não fosse o nível de proficiência no idioma no mercado russo. Para as necessidades de nosso projeto de pesquisa, compilamos uma versão de teste do teste para três idiomas, o que ajuda a navegar rapidamente no nível atual e também destaca os pontos fortes e fracos.
Em resumo, avaliar-se adequadamente usando a quantidade máxima de recursos externos é extremamente importante. Para evitar o problema clássico no mercado de trabalho - “expectativas dos desenvolvedores vs. realidade das empresas ". Quando os desenvolvedores avaliam suas habilidades e seu valor mais alto do que as empresas estão prontas para fazer. Eles também esperam uma rápida decolagem e desenvolvimento, o que, nessa medida, não acontece (para mais detalhes, consulte o próximo artigo).
PS Na versão inicial do artigo, propusemos passar o teste para todos. No entanto, não esperávamos um fluxo tão poderoso de entrevistados. E eles foram forçados a fechar o teste para poder processar as respostas e os resultados atuais para aqueles que deixaram os detalhes de contato. Por favor, preencha o teste por paciência :)