Como crescer de um estudante para um engenheiro de software?

Olá! Meu nome é Denis Dovzhenko e, durante vários anos, tenho conduzido entrevistas técnicas com candidatos ao cargo de engenheiro de software C / C ++. Se a principal conversa com candidatos a cargos de Engenheiro Sênior de SW e superior for sobre experiência de trabalho, a seleção de futuros estagiários e juniores será baseada no conhecimento adquirido na universidade e na capacidade de resolver problemas acadêmicos do mesmo nível. É aqui que acontece que mesmo nas principais universidades técnicas eles ensinam "não é isso" e "não é assim". E seria bom começar a se preparar para a transição do estado estudantil para o estado engenheiro quase desde os primeiros dias de treinamento.

Neste artigo, falarei sobre como nós do Dell Technologies do Centro de Desenvolvimento de São Petersburgo ajudamos os alunos a se prepararem para um avanço bem-sucedido no caminho de um engenheiro de software.



Educação ou Onde e como estudar?


Na escola, estamos acostumados ao fato de que toda tarefa tem a única solução certa. No final do bacharelado, alguns alunos têm a sensação de que esse pode não ser o único, mas os critérios para escolher a solução mais adequada às condições do problema ainda não são compreendidos. De qualquer forma, na cabeça do bacharel geralmente há confiança absoluta de que um engenheiro de software nada mais é do que um macaco treinado (codemonkey). Afinal, são exatamente essas habilidades que são desenvolvidas pelo trabalho de laboratório: ler a tarefa na diagonal e preencher rapidamente. Mas que tipo de aluno começará a fazer laboratórios antes de uma semana antes da sessão? E de repente, na entrevista, os tios maus exigem pelo menos uma cultura algorítmica mínima dele, falam sobre alguns "processos de desenvolvimento", os forçam a resolver problemas intrincados ...que o primeiro passo para o solteiro é alto demais e o mestre ainda não parece ter status suficiente.

Na minha opinião, o problema é que, mesmo nas especialidades de TI, o ensino de programação é separado de tarefas reais. No currículo, a disciplina pode ser chamada de "Programação no idioma ...", mas, na realidade, na sala de aula, a sintaxe com exemplos absurdos é longa e tediosa, e a arte da programação quase não existe. Frequentemente, nos cursos universitários, o entendimento de que o código será executado por um computador não é de todo estabelecido, mas as pessoas o leem!

Muitas vezes acontece que a "programação" é estudada isoladamente do hardware do computador, a arquitetura do software é transferida para os cursos superiores e ninguém se incomoda com a capacidade de ler a tarefa técnica. É claro que há exceções, por exemplo, o curso "Programação Industrial em C ++", que meu colega A.V. Martynov realiza no Politécnico de São Petersburgo há vários anos.



Como resultado, durante as entrevistas, e mesmo no código escrito pelos participantes dos projetos dos alunos, notei frequentemente a reprodução de exemplos “de um livro” quando o autor simplesmente não pensa em possíveis limitações. Por exemplo, no caso de C / C ++, a maioria dos estudantes seniores não é capaz de explicar claramente a diferença entre memória estática, alocada dinamicamente e empilhar, e perguntas sobre a relação das palavras-chave do idioma com a duração e a vinculação do armazenamento simplesmente as aterrorizam. Nas entrevistas, tentei dar exemplos de análises como a abaixo (observe, o mais simples possível), mas agora não faço isso. A explicação de por que chamar a função f2 () causa uma falha no programa com SEGFAULT é para a maioria dos estudantes muito além da compreensão.

#include <iostream>

using namespace std;

extern void populate(int* data, unsigned long size);

const unsigned long ARRAY_SIZE = 2048 * 2048;

int d1 [ARRAY_SIZE];

long f1()
{
  populate(d1, ARRAY_SIZE);
  long ret = 0;
  for (unsigned long i = 0; i < ARRAY_SIZE; ++i) {
    ret += d1[i];
  }
  return ret;
}

long f2()
{
  int d2 [ARRAY_SIZE];
  populate(d2, ARRAY_SIZE);
  long ret = 0;
  for (unsigned long i = 0; i < ARRAY_SIZE; ++i) {
    ret += d2[i];
  }
  return ret;
}

int main()
{
  cout << f1() << endl;
  cout << f2() << endl;
  return 0;
}

Acredito que é hora de empregadores, estudantes e líderes universitários reconhecerem que há um conflito de interesses. Para simplificar bastante a imagem, ela pode ser reduzida às seguintes instruções:

  • O aluno deseja um mínimo de esforço para obter um diploma e vê isso como um passo inevitável no caminho para um emprego bem remunerado.
  • A instituição educacional deseja, por gancho ou por bandido, obter uma classificação alta, o que aumenta uma variedade de fundos, incluindo o fundo salarial do corpo docente. E nos métodos comuns para calcular o rating, por exemplo, tal , o indicador "emprego estudante" é tanto quanto 2% do total.
  • O empregador grita mentalmente: "sim, você finalmente começa a preparar graduados normais que não precisam treinar por vários anos, ou mesmo treinar, gastando neste tempo funcionários de níveis mais altos e mais altos".

E esses problemas são visíveis mesmo nas principais universidades técnicas, então o que podemos dizer sobre os menos "promovidos"?


Dia da Dell Technologies no escritório do nosso Centro de desenvolvimento de São Petersburgo

No fórum recente " Encontre TI"Um número inesperadamente grande de estudantes foi atraído para o estande da Dell Technologies, contando a seguinte história:" Não obtive pontos exorbitantes no Exame Estadual Unificado, fiquei assustado com os altos requisitos das universidades para candidatos em especialidades de TI e, portanto, fui para o Instituto Zaborostroitelny N. No final do segundo ano, percebi subitamente que a construção de cercas não é minha, leve-me aos programadores ". Assim, o enredo do romance "Profissão" de Isaac Asimov, publicado mais de meio século atrás, é quase literalmente reproduzido. Do ponto de vista de um aluno moderno ou de um estudante júnior, o mundo retratado do futuro é quase perfeito: não há necessidade de assistir a aulas ou palestras, fazer a lição de casa. Apenas em um determinado dia você chega ao centro de treinamento, em questão de minutos, as informações da transportadora são gravadas diretamente no cérebro (elas são chamadas de "fitas de treinamento" na história),e você pode relaxar - o processo de aprendizado está completo.

Um fragmento da história "Profissão"
– , , – . – . . , , , -. , . , , , , . ? , , - . .
– ? – . – , ? ?
– . - . . , , , , , . .
– ?
– , , , , , . , , . : « . , ». , : « , , ». , , , . , .

Como o investimento instantâneo de habilidades na cabeça do aluno ainda é fantástico, ele terá que fazer um esforço por conta própria. Mesmo que a programação seja ministrada “no nível” na universidade, o curso deve ser aprendido, não “escutado”. E o treinamento em um instituto de construção de cercas pode até ajudar, porque não cria uma falsa sensação de "eles leram para nós, eu sei tudo".

Por sua vez, as empresas interessadas em um afluxo de pessoal qualificado também devem assumir a responsabilidade de treinar os alunos. Na segunda parte do artigo, falarei sobre vários programas para apoiar crianças em idade escolar e estudantes na construção de uma carreira profissional em TI usando o exemplo do Dell Technologies Center de P&D em São Petersburgo.

Como as empresas podem "forjar" pessoal?


A sabedoria popular diz: "É necessário criar um filho enquanto ele está deitado do outro lado do banco". Com base nessa máxima, a Dell Technologies desenvolveu um sistema de vários estágios para interagir com futuros engenheiros: desde o treinamento de estudantes do ensino médio até a participação de engenheiros do Center em comissões para a proteção do trabalho de graduação e pós-graduação.

Desde 2018, somos amigos dos organizadores dos cursos de TI para estudantes da Digital Banana. No ano passado, nossos engenheiros ajudaram a conduzir um hackathon para crianças em idade escolar, ministraram palestras e master classes no Digital Jungle Festival. Outro programa educacional para estudantes do ensino médio, o Student STAR, é apoiado internacionalmente. O oitavo ano de participação do nosso Centro de Desenvolvimento neste programa já passou: anualmente em junho, cerca de 30 graduados da 10ª série de escolas de física ficam imersos por uma semana no mundo da Engenharia de Software. E se é muito cedo para falar sobre os resultados mensuráveis ​​da cooperação com a Digital Banana, então já vemos graduados do Student STAR dos últimos anos entre estudantes das principais universidades técnicas.

A busca por futuros engenheiros promissores continua entre os calouros. Em colaboração com a Fundação Leonard Euler, em seis universidades afiliadas à rede de afiliados da Dell Technologies (Polytech, SPbSU, ITMO, LETI, SUAI, PSUPS), a primeira sessão é concedida aos melhores alunos com uma "Bolsa de Iniciantes de Sucesso" personalizada. E no segundo ano, os bolsistas terão a oportunidade de participar de um programa de orientação. A propósito, um artigo foi publicado neste blog em Habré há vários anos . Só posso acrescentar que, nas fotografias dos últimos anos, os mesmos rostos podem ser vistos novamente - muitos de nossos mentorados se formaram com sucesso na universidade, tornaram-se funcionários da Dell Technologies e agora retornaram ao programa de mentoria, já no papel de mentores, professores e curadores.


, , .

A próxima etapa é o “programa de projetos conjuntos para estudantes”, que oferece aos estudantes a oportunidade de participar do projeto de P&D diretamente na universidade. E não é de todo necessário que todos os participantes desse projeto sejam estudantes da mesma universidade; estudantes de outras universidades - mesmo condicionais de "construção de cercas" podem se juntar a eles. As tarefas para projetos conjuntos já foram tiradas de nossa lista de pendências real, daquelas que eu gostaria de fazer para o projeto, mas há uma alta probabilidade de adiar "para mais tarde" sob a pressão de tarefas mais prioritárias. Em um projeto conjunto, o papel de líder de equipe é desempenhado por um funcionário da universidade e nossos engenheiros atuam como clientes. Bônus adicionais por participar de um projeto conjunto de estudantes são que os alunos com bom desempenho serão considerados principalmente candidatos à posição de estagiário,e os resultados de projetos conjuntos podem ser usados ​​como material para trabalhos ou dissertações.

A história de projetos conjuntos com universidades tem muitos casos certamente bem-sucedidos. Por exemplo, o desenvolvimento de um dos utilitários para armazenamento do Unity começou como um projeto conjunto com o SUAI. Também houve um caso curioso em que os termos de referência para um projeto conjunto se mostraram muito complicados para os alunos do terceiro ano do ITMO (eu tento afastar parte da responsabilidade, como um dos curadores deste projeto), mas os participantes que duraram até a final puderam demonstrar sua capacidade de lidar com as dificuldades e praticamente com força total se tornaram nossos estagiários. Agora eles já são engenheiros de pleno direito.

Engenheiros da Dell Technologies que ingressaram em nossa equipe após um projeto conjunto de estudantes: Anastasia Zinner, Nikita Tyukachev, Vladislav Alekseev

As universidades começam a estimular os alunos a participar de projetos reais de todas as maneiras possíveis para os alunos do terceiro ano do ensino médio (lembramos que o estímulo é um bastão pontiagudo usado para conduzir touros aproveitados na Roma antiga). Foi então na cabeça do aluno comum que a palavra mágica "estágio" aparece, o que deve instantânea e automaticamente fazer com que as pupas se transformem na borboleta de um aluno em um engenheiro. Outra transição que não requer nenhum esforço adicional (além de se candidatar a um estágio) é tão fantástica quanto a descrita por Isaac Asimov. Na vida real, não há transformações instantâneas; o estágio é um processo longo. Na Dell Technologies, os estagiários realmente desempenham o papel de juniores e, dentro de seis meses a um ano, crescem no papel de estagiários antes de se tornarem funcionários em tempo integral da empresa.

Obviamente, os participantes do programa de orientação e dos projetos conjuntos dos alunos recebem certas vantagens ao recrutar para um cargo de estagiário. No mínimo, eles são os primeiros a receber informações sobre posições em aberto de seus mentores ou curadores do projeto. E nas entrevistas, vemos que os participantes dos programas de estudantes geralmente se tornam candidatos mais fortes. Por outro lado, não vamos fechar as portas aos candidatos que não passaram no projeto do aluno.

Fora do escopo deste artigo, existem muitas outras maneiras de interagir com os alunos. Por exemplo, palestras em fóruns de estudantes ou "dias da tecnologia" regularmente realizados em nosso escritório, onde qualquer pessoa pode participar. Dada a situação atual no mercado de trabalho, as empresas precisam gastar tempo e dinheiro em treinamento de pessoal dentro ou fora da empresa. Gostaria de acreditar que nossas ações não apenas nos permitem preparar especialistas qualificados para nós mesmos, mas também contribuem para o crescimento de engenheiros e o desenvolvimento da indústria como um todo.

O autor do material é Denis Dovzhenko, engenheiro principal sênior de software.

All Articles