Todos os dias nos deparamos com os conceitos de "junho", "médio", "sênior", mas nossas idéias sobre o conhecimento que um desenvolvedor deve ter em diferentes estágios de crescimento variam. A falta de um plano de desenvolvimento claro e a falta de entendimento de onde ir em seguida geralmente levam à frustração e a mudanças imprudentes de emprego.

Os caras do AppsCast, juntamente com o chefe de mobile do projeto Pandao,
Alexander Cherny (
@AlexChernyy ), tentaram descobrir o problema e elaboraram seu próprio mapa do desenvolvimento de um desenvolvedor móvel desde o momento em que ele ingressou na profissão e nas principais posições. Sob o gato, há dicas para entrevistar os jones, onde conseguir bons desenvolvedores, recomendações para iniciantes em conseguir um emprego, as principais diferenças entre jones, intermediários e idosos e a importância das habilidades de comunicação para todos os níveis.
Daniil Popov : Hoje nosso convidado é Alexander Cherny, do Mail.ru do projeto Pandao. Conte-nos mais sobre você.
Alexander Cherny : Olá. Lidero a equipe de desenvolvimento móvel no projeto Pandao, dedicado ao comércio eletrônico. Agora, há seis pessoas na equipe, e tudo começou comigo sozinho.
Comecei minha carreira como programador C e Assembler e vim para o desenvolvimento móvel como desenvolvedor iOS. O primeiro fator foi a motivação pessoal para procurar um caminho de desenvolvimento adicional. Havia duas opções: Java no setor financeiro ou desenvolvimento móvel, que estava apenas começando a aparecer. Fiz um ótimo trabalho em encontrar pessoas de ambas as áreas, ouvindo suas recomendações e pensamentos. O segundo fator foi aleatório: o laptop morreu e, a conselho de um amigo, comprei um MacBook usado.
Daniil Popov : Você passou de um desenvolvedor simples para o chefe do departamento?
Alexander Cherny : O caminho era linear. No início, cresci como desenvolvedor iOS, depois tive um companheiro de equipe, depois minha pequena equipe de desenvolvimento iOS, depois uma equipe distribuída maior. Em algum momento, houve uma transição para a liderança de todo o desenvolvimento móvel.
Entrada para desenvolvimento móvel
Daniil Popov : Com base na sua experiência, vamos discutir esse caminho com mais detalhes e começar com a posição de júnior. O que você espera de um especialista iniciante que você leva para a equipe? Como uma pessoa de fora pode ingressar na profissão de desenvolvedor de dispositivos móveis?
Alexander Cherny : A maneira mais legal é pescar em todas as
NÃO as primeiras escolas de desenvolvimento móvel que são periodicamente hospedadas por várias empresas. As empresas têm uma quantidade fixa de número de associados por número de idosos na equipe, portanto, eles tiram um ou dois dessas escolas. Não há mais junho para digerir ao mesmo tempo, ou simplesmente não há vagas suficientes.
Mas o resto muitas vezes não é pior do que aqueles realizados pelos organizadores do curso. Liguei para um desenvolvedor júnior da minha equipe e ele recomendou um cara para a próxima equipe com quem estudei juntos.
Alexei Kudryavtsev : Acontece que os caras dos cursos podem ser Jones normais e ser capazes de se desenvolver adequadamente? Pareceu-me que muitas pessoas têm a motivação de passar rapidamente por tudo para começar a ganhar dinheiro o mais rápido possível, mas, na realidade, não sabem como.
Alexander Cherny : Há um indicador adicional de qualidade - é a presença da seleção preliminar obrigatória de cursos e pontos de controle durante todo o ciclo de aulas. Isso significa que o graduado, no mínimo, tinha força de vontade até o fim e professores de paciência para treiná-lo.
Conjunto de junho do cavalheiro
Daniil Popov : Quais são as três coisas que um júnior deve saber sobre habilidades duras e leves?
Alexander Cherny : Com habilidades difíceis, você
deve conhecer o idioma da plataforma selecionada,
se possível, conhecer o SDK da plataforma. Conhecer a arquitetura não é importante para mim, porque não entendo como a arquitetura pode ser entendida se você não encontrou os problemas que ela resolve.
É mais interessante ouvir em junho a resposta à pergunta "Por que você escolheu o Android ou iOS?".
Em termos de soft skills, eu gostaria de ver as habilidades básicas de comunicação de todos, já que não são apenas os dzhuns que têm dificuldade em falar. Quando um desenvolvedor júnior entra na equipe, a capacidade de sinalizar quando algo dá errado é importante. Muitos pecam em sua juventude, acreditando que se eles não pudessem fazer algo, então este seria o fim da história.
Daniil Popov : Como entender seu nível de forma independente: você amadureceu até junho, meio ou mais?
Alexander Cherny : O nível é medido em relação à equipe em que o desenvolvedor está localizado atualmente.
Daniil Popov : Acontece que em um time você pode ser mais velho e em outro meio?
Alexander Cherny : Sim, e aqui a objetividade sofre, porque eles começam a exigir competências de um especialista, cuja presença não é totalmente clara. Por exemplo, eles pedem que você pule três metros acima, mas você não sabe como. Em geral, o salto não é seu e ninguém pode explicar por que eles são necessários no aplicativo cliente-servidor. Não pule? Então - não um sénior.
Alexei Kudryavtsev : Os joons costumam conseguir um emprego com a confiança de que já são ótimos, mas ao mesmo tempo têm habilidades diferentes. Que outras dificuldades as entrevistas têm?
Alexander Cherny : O maior problema é a avaliação do zero, uma vez que nada se sabe sobre junho: não há ninguém para escrever e pedir recomendações, não há projetos concluídos.
Isso é bem tratado pelo repositório ao vivo no GitHub, mesmo que seja apenas um projeto sintético e uma atividade e meia seja escrita.
Se um teste e meio para esta atividade estiver escrito - bem feito, e se houver uma aparência de arquitetura - você precisará fazer isso. Algo assim, eu pego o Jones. Eu tenho mais um critério subjetivo e difícil de avaliar - isso é
curiosidade .
Para resumir, aqui estão as recomendações para junho:
- entender o idioma, conhecer todas as construções básicas do idioma e não apenas repetir o que viram nos vídeos;
- ninguém espera um profundo conhecimento do SDK, já que as atualizações saem com frequência e eu mesmo parei de observá-las, mas você precisa saber as coisas no nível do ciclo de vida;
- entenda sua motivação e conscientemente entre na profissão.
Alexei Kudryavtsev : Quando eu era junho, pareceu-me que, para uma compreensão básica do idioma, você precisa percorrer todas as docas da Apple, conhecer todas as classes e funções. O que está incluído no banco de dados, na sua opinião?
Alexander Cherny : Esta é a sintaxe básica da linguagem que destaca imediatamente o IDE, as principais coleções da série “como trabalhar com matrizes / listas”, “como trabalhar com dicionários / mapas”. Pela interface do usuário, o conhecimento básico é formado no momento da escrita de pelo menos um projeto de teste.
Crescendo no meio
Daniil Popov : Como pular do júnior para o meio? Como entender instantaneamente que um especialista passou para o próximo passo?
Alexander Cherny : Claro, da noite para o dia, eu não entendo. A própria questão da categorização é o problema. Imagine que você atende a um conjunto de critérios, mas um deles não é cumprido e você não pode formalmente passar para o próximo nível. Estou reservado a essa abordagem, especialmente em equipes pequenas.
Ao mesmo tempo, existem critérios claros que não podem ser contornados. Por exemplo, o nível de estabelecimento de metas e a responsabilidade que você assume por isso. Desde junho você não espera nada. Ele lerá a tarefa, pela escrita clara de que seu líder é responsável, e o máximo fará perguntas sobre pontos obscuros. Você não espera que ele reflita sobre o que acontecerá, se ele avaliar casos limitados, para pensar em um novo paradigma de código para a solução. Meio começa a cruzar esta linha.
Daniil Popov : Que habilidades você adicionou ao meio, além do que o júnior tem?
Alexander Cherny : Deve haver uma compreensão da arquitetura e prioridade sobre o
que você escreve e
como .
Uma das características de um desenvolvedor júnior é que, para ele, o fato de escrever código é valioso. No meio, o código é secundário, a tarefa que resolve vem à tona.
Na divisão de desenvolvedores em junho, médio e sênior, há uma visualização malsucedida do crescimento por meio de uma sequência estrita de etapas. No gerenciamento de produtos, existe o triângulo MVP - um produto minimamente viável. MVP é uma linha desenhada não paralela à base, mas da base ao topo do triângulo. Nesse esquema, você sempre sabe um pouco de tudo, o meio pode fazer mais do que um júnior, e o senor, teoricamente, deve fechar todo o triângulo por competência.
É mais correto considerar os critérios não por meio de "sei / não sei", mas por "quão profundamente eu sei". O júnior pode saber sobre a existência, o meio sabe o que está dentro, e o sénior entende por que foi inventado.
Daniil Popov : O meio deve entender Ciência da Computação? Estruturas de dados, algoritmos, coleções de hash?
Alexander Cherny : Sim, é difícil resolver um problema aplicado sem entender o trabalho das mesmas coleções; portanto, esse requisito para um meio pode definitivamente ser apresentado.
Alexei Kudryavtsev : Você mencionou o triângulo de competências e o que está incluído nele?
Alexander Cherny : Em uma versão simplificada de habilidades difíceis, há linguagem, plataforma e arquitetura. Se você olhar mais profundamente, use a fórmula de Daniel e divida os blocos em Ciência da Computação e Engenharia de Software.
Alexei Kudryavtsev : E as habilidades que um engenheiro nem sempre precisa, mas que pode ser útil: depuração, criptografia, desempenho?
Alexander Cherny : Todos os engenheiros devem estar interessados na capacidade de usar pedágio. O júnior pode não ser capaz de trabalhar com todas as ferramentas, mas, a partir do meio, espero o mesmo nível de curiosidade que em junho na entrada. Estou certo de que em algum momento ele estará cansado de clicar nos botões do IDE e começará a aprender o atalho do teclado. Em vez de fazer logon para procurar vazamentos de memória, ele iniciará a ferramenta de aplicação.
Daniil Popov : O meio deve estar interessado em áreas relacionadas e ampliar seus horizontes?
Alexander Cherny : Sou a favor do desenvolvimento de horizontes e erudição. Se uma pessoa mostra tanta curiosidade - este é um bom vetor para o idoso. Ele é apenas diferente em sua capacidade de responder à pergunta "Por que existe?" Se o meio está escrevendo a classe mais simples do aplicativo, a qual todos se referem ao cliente-servidor, mas não percebe por que o tráfego não é capturado com https e tudo funciona ao instalar o Charles, isso é um insulto. Mas para o júnior, eu mesmo explicaria.
Em geral, o meio foi mais azarado. Esta é uma zona de crescimento muito longa e imprevisível, não está claro se ela se estenderá por muito tempo.
Os mesmos dzhuns são mais simples: com o emprego constante em projetos em uma equipe adequada, seu crescimento para o meio levará de um ano para dois anos e meio, não mais.
Daniil Popov : E as habilidades sociais para o meio?
Alexander Cherny : O Middle não deve mais ter medo de falar sobre problemas e ser capaz de pegar um recurso e resolvê-lo por conta própria, talvez ainda não entenda sua interação com outros recursos. Por exemplo, uma tarefa voou com uma imagem do designer e descreveu brevemente o que precisa ser feito. Com base nesse meio introdutório, devo dizer quais podem ser os problemas, por exemplo, existe um elemento que não está no sistema e terá que ser feito por um longo tempo. Este é um tipo de mecanismo de autocensura em relação às tarefas que recebe. Mesmo neste ponto, a habilidade de estimar prazos é adicionada.
Daniil Popov : E as comunicações? Sem eles, a tarefa não pode ser elaborada e avaliada?
Alexander Cherny : Sim, você precisa poder conversar com as partes interessadas. Não complique a cadeia e pergunte diretamente ao designer, vá para os desenvolvedores de outra plataforma e descubra se você entende a tarefa da mesma maneira.
Daniil Popov : O que os intermediários na maioria das vezes não sabem?
Alexander Cherny : Muitas pessoas dominam o idioma e o SDK, e nos lugares mais fantásticos. Quantos medianos morreram por causa do mal-entendido de que o iterador é um objeto ou pela questão de saber se a sequência é representada - uma matriz ou uma lista.
Tento verificar não o nível de conhecimento e nem mesmo o raciocínio, mas a reação ao raciocínio. Por exemplo, eu digo a você que existem três situações diferentes e o compilador se comporta de maneira diferente. Um pode descartar essa situação e o outro pode dizer que ele nunca pensou nisso, mas com um laptop em suas mãos, ele poderia reproduzir a situação no IDE para que o depurador mostre qual é a diferença.
Parabéns, você é o senhor!
Daniil Popov : Que habilidades devem ser adicionadas às do meio para que você possa se chamar de sênior?
Alexander Cherny : O que o senhor está fazendo? Ele define a cultura técnica do projeto como um todo, pois entende quais são os benefícios que todas as atividades de desenvolvimento trarão para os negócios.Aqui você precisa de experiência, entendimento dos negócios e capacidade de assumir riscos. O idoso entende os problemas do nível "Estou com um congelamento vidoeiro, mas quero que saia bem". Como exatamente isso será feito, não importa.
Sênior - o garante de conhecimento técnico. Eles vão até ele com uma pergunta e um desejo de obter um conjunto específico de ações.
Do meio, espero pelo entendimento de que existe uma máquina virtual e ela existe por uma razão, do senhor - como pode ser usada com benefício.
Alexei Kudryavtsev : E quanto ao conhecimento em engenharia reversa?
Alexander Cherny : Qualquer um pode reverter. Não tenha medo de fazer isso - esta é a fronteira entre o meio e o alto. Você precisa entender onde os dados e recursos são armazenados - nada de fantástico.
Uma característica interessante do meio, que distingue o mais velho, é que ele sempre diz que está pronto para executar a tarefa, mas nem sempre entende o que está por trás disso e quais serão as consequências.
Para distinguir entre níveis, você pode adicionar o uso de bibliotecas. Junior arrasta qualquer biblioteca se resolver um problema. O meio arrasta, mas acha que precisamos ver se existe uma solução semelhante no projeto. Senior escreve sua bicicleta para colocar estrelas no GitHub.
Você pode arrastar silenciosamente uma biblioteca e assumir que ela resolveu o problema. Você pode olhar para ela e ver que precisa apenas de um pequeno pedaço e só pegar. Você pode arrastar a biblioteca inteira porque os prazos estavam se esgotando, mas crie um problema apropriado para corrigi-lo mais tarde. O ponto é com que nível de entendimento abordar a puxar.
Daniil Popov : Senior não deve apenas selecionar corretamente as bibliotecas, mas também entendê-las, elas também podem ter problemas. Ao contrário do meio, que cobrirá tudo com o try-catch, o idoso bifurcará, reparará e fará uma solicitação de pull para esse problema.
Alexander Cherny : Ao adicionar uma biblioteca, o senhor assume total responsabilidade pelas consequências. O Middle arrastará e transferirá a responsabilidade para a própria biblioteca ou seus desenvolvedores.
Para onde?
Daniil Popov : Existe vida após o senhorio? Vejo opções: líder, chefe de departamento, CTO ou gerenciamento de projetos.
Alexei Kudryavtsev : E o desenvolvimento técnico: conhecimento técnico, diretor ou mesmo mudar de direção?
Alexander Cherny : Todas as opções têm suas próprias consequências. Sim, você pode assumir cargos gerenciais, mas pode permanecer no ambiente técnico - isso definitivamente não é uma parada no desenvolvimento.
Daniil Popov : Tive a sensação de que o conjunto de habilidades difíceis depende muito da empresa em que você trabalha e do seu perfil.
Alexander Cherny : Isso afeta. Uma grande empresa de supermercado, como o Facebook, possui milhares de técnicos. Todos eles são muito limitados na escolha de soluções técnicas - há uma pilha aprovada, há equipes inteiras de infraestrutura e um comitê de arquitetura que toma decisões para todos. Nesse caso, o engenheiro se torna um desenvolvedor bloqueado da empresa, obrigado a usar os paradigmas da empresa. Com o tempo, torna-se mais valioso para a empresa, mas não o fato de que esse valor será percebido de fora.
Daniil Popov : E se eu quisesse me envolver em uma habilidade que não é típica de um produto da empresa?
Alexander Cherny : Primeiro pergunto à pessoa de onde surgiu a idéia. Às vezes, as pessoas vêm com desejos estranhos e não conseguem explicar sua natureza. Se o desenvolvedor puder justificar, será necessário analisar melhor como essa ideia se encaixa no produto. É provável que ainda seja útil para os negócios.
É importante abordar esse processo individualmente. Muitas vezes acontece que isso não é o melhor que uma pessoa pode fazer agora.
Daniil Popov : Você disse que considerava a divisão nebulosa em junho, meio e sênior. É necessário então?
Alexander Cherney : Quando a equipe é pequena e todo mundo sabe de tudo, você pode fazer sem atalhos. Em uma grande empresa, a graduação será obrigada a cumprir o código trabalhista para transferir salários.
Cartões de desenvolvimento de desenvolvedores
Alexei Kudryavtsev : Como um desenvolvedor pode determinar pontos de crescimento?
Alexander Cherny : Sou da opinião de que o funcionário deve se engajar em uma carreira, pois é impossível patrocinar todos. Se uma pessoa deseja procurar algo, a solicitação correta é o nome da plataforma e do roteiro do desenvolvedor. Você pode encontrar vários mapas mentais com informações detalhadas, em que ordem e o que desenvolver.
Daniil Popov : Ao preparar o lançamento, vimos o mapa de desenvolvimento do desenvolvedor do iOS. Há tantas coisas que parece que depois de estudar todo o espectro, um engenheiro ficará superqualificado para 90% das empresas no mercado russo.
Alexander Cherny : Ninguém verifica a profundidade do conhecimento. Por exemplo, eu olho para o mapa e vejo a estrutura de localização central, mas não há detalhes específicos sobre o que exatamente é necessário: saber sobre sua existência ou entender coisas de baixo nível, por exemplo, quais coprocessadores são capazes de produzir eficiência energética adicional em segundo plano.
O roteiro é apenas um mapa de pesquisa que você analisa e analisa a cidade que você já visitou e fotografou no fundo de uma placa na entrada. Ao mesmo tempo, o roteiro não é linear e você não precisa saber o anterior para ir para o próximo. Você pode mover para onde quiser, aqui e agora.
Alexei Kudryavtsev : Os roteiros nem sempre são úteis, pois geralmente não coincidem com o que é necessário no trabalho e nem sempre cobrem as coisas nas quais você "nada". Como criar um roteiro pessoal?
Alexander Cherny : Hackerrank recentemente fez um
estudo sobre o que os empregadores agora querem dos desenvolvedores. Independentemente do tamanho da equipe, a primeira é a solução de problemas - o desejo do empregador de ouvir do engenheiro uma resposta clara sobre como resolver um problema específico e a que custo.
Alexei Kudryavtsev : Como você se sente com relação aos cartões de desenvolvimento individual, onde as competências são descritas, com um líder de equipe, os resultados são avaliados e é determinado o que bombear a seguir?
Alexander Cherny : É ótimo se os dois lados tiverem tempo para isso. Em todas as conversas sobre desenvolvimento, há um incômodo: em algum momento, o funcionário entende que não há lugar para se desenvolver aqui e muda de emprego na esperança de desenvolvimento. A distorção cognitiva surge - com a mudança do ambiente, você para de pensar no desenvolvimento real e todas as forças vão para a adaptação em um novo local.
Alexei Kudryavtsev : Então vale a pena mudar de trabalho em prol do desenvolvimento?
Alexander Cherny : Se o empregador é estável e permite resolver problemas tecnológicos e a equipe de desenvolvimento não muda, então não. Não quero que os desenvolvedores mudem de emprego para resolver alguns problemas pessoais. Eu sempre faço a pergunta na entrevista que ações a pessoa tomou para resolver os problemas que levaram à sua demissão do emprego anterior.
A propósito, há problemas com o cargo de chefe de desenvolvimento e outros cargos gerenciais do desenvolvedor. Não há muitas pessoas acima, e este topo dos negócios considera você uma pessoa auto-suficiente que deve não apenas ajudar a resolver os problemas de seus funcionários, mas também lidar apenas com suas dificuldades. Não tenho certeza se esta é a abordagem correta.
Daniil Popov : O que mais você pergunta na entrevista além de perguntas técnicas?
Alexander Cherny : Recentemente, tenho usado casos de projetos anteriores de nossas equipes. É importante para mim entender como uma pessoa reage a várias situações. Por exemplo, dois desenvolvedores entendem de maneira diferente o papel e a responsabilidade do modelo de exibição. Você é o terceiro. , . , . -, , . ?
, , , 30 , soft skill .
: : soft hard?
: , . hard skill. - — . . . soft skill , 65% 35%.
, , soft skill . , Saint AppsConf 2019 . Introductory- , General- . , — 16 .