Eles dizem que aprender Python e se tornar um programador é fácil. Certo?

imagem

Trabalhar em TI é legal, mas o caminho para o setor pode não ser exatamente o que os pais ou professores da escola descrevem. Nas trocas de empregos, eles procuram desenvolvedores móveis, desenvolvedores, back-end e front-end, mas onde estão essas profissões nas listas de especialidades das universidades clássicas?

Estamos lançando uma série de artigos nos quais descreveremos em detalhes sobre cada profissão por meio da experiência das pessoas. A primeira edição discute os desenvolvedores de Python. Artem Sukharenko e Danila Lobanov contaram suas histórias. Eles entraram na profissão recentemente, mas conseguiram ganhar experiência em outras áreas. E o especialista era Alexei Petrenko, decano do departamento de Python da Geekbrains .

Conversamos sobre o que você precisa saber antes do treinamento, o que é bom e o que é ruim, o que é difícil de aprender e o que focar; quais profissões e dinheiro prometem conhecimento do idioma, como se preparar para as primeiras entrevistas e muito mais.

Por que aprender Python


Artem Sukharenko estudou no Departamento de Automação e Informática da SibGIU . Sua especialidade era engenharia, mas não relacionada à programação. Após a graduação, a Artyom conseguiu um emprego na fábrica da ZSMK - uma das maiores instalações metalúrgicas da Rússia.

"Fiquei surpreso com o quão terrível tudo é", diz ele, "uma unidade elétrica soviética em ruínas, sem modernização, especialistas realmente não são necessários". Por um longo tempo na fábrica, ele não parou, mas continuou a trabalhar com o eletricista. Ele cresceu como engenheiro líder em Sibirtelecom, depois se mudou da Sibéria para Moscou e conseguiu um emprego em um data center comercial, onde era responsável pela infraestrutura.



A programação às vezes está implícita. Artem tentou trabalhar com microcontroladores, para fazer algo mais complicado, mas sempre descansava nas falhas de empregadores e clientes - eles não precisavam disso. Havia coisas elementares suficientes que, como diz Artyom, só estão interessadas em fazer os primeiros 15 minutos, e habilidades especiais não são necessárias para isso.

"Talvez eu não tenha ido lá, mas não encontrei desenvolvimento para mim. Cinco anos de universidade - apenas para torcer os fios. Foi tão decepcionante. "

Certa vez, um colega deu a Artyom a idéia de estudar programação não para eletricistas, mas para se tornar um desenvolvedor. Ele começou a ler livros, tentar diferentes tarefas, mas não se atreveu a mudar de profissão. “Meu desejo está se formando há muito tempo. No início, eles não tinham permissão para mudar a profissão de hipoteca, questões financeiras, medo pessoal. ”

Aos 36 anos, Artyom foi para cursos de desenvolvedor de Python.



O desenvolvimento da Web tornou-se um problema para muitas pessoas interessadas em profissões técnicas. E Python é uma das linguagens de programação mais populares para ingressar na profissão. Atrai com sua simplicidade e versatilidade.

“Conhecendo o Python, você pode fazer muitas coisas - desde scripts simples à análise de dados e construção de redes neurais. Mas, especificamente, o desenvolvimento em Python é um back-end para servidores da Web; o desenvolvimento da parte oculta da Internet é algo que os usuários comuns não veem. Server, sua lógica, interação com bancos de dados ”, diz Alexei Petrenko, decano do departamento Python da Geekbrains.

“Acho que é uma boa escolha como primeira língua. Tem uma sintaxe simples. Ele perdoa os pequenos erros do desenvolvedor. O Python tem um limite baixo de entrada, é muito fácil aprender o básico da programação nele. Possui uma audiência muito grande e uma extensa biblioteca, além de muitas bibliotecas externas criadas por desenvolvedores de todo o mundo. Devido a isso, torna-se um idioma adequado para qualquer coisa ".

“Embora o Python esteja sendo promovido como uma linguagem para tudo, na verdade ele tem apenas duas áreas de aplicação: todos os tipos de ciência de dados, ML e outras matemáticas - e desenvolvimento web. Nisso, ele me decepcionou um pouco ”, diz Danila Lobanov, um ex-administrador de sistemas que recentemente se tornou desenvolvedor de Python.



“Gostei do Python, pois ele pode fazer qualquer trabalho. Ele tem uma biblioteca para aplicativos móveis, para desktop, onde você pode escrever scripts de automação para servidores, pode usar aplicativos da web. Mas, de fato, apenas os desenvolvedores da web precisam trabalhar sem matemática profunda. Ninguém escreve aplicativos de desktop, muito menos aplicativos móveis. Existem outros idiomas para isso que foram criados especificamente para suas tarefas. ”

Danila familiarizou-se com o computador relativamente tarde, com cerca de 18 anos de idade. Ele recusou o ensino superior e quase imediatamente passou a trabalhar como administrador de sistemas. Ele começou com as tarefas mais elementares e depois estudou Linux e programação.

"Tentei aprender C, PHP, Java algumas outras linguagens, mas não parou - comecei e saí. Eu não conseguia escrever nem os scripts mais simples. Quando fui para os cursos C, consegui ler o código, mas não consegui escrevê-lo. Eles me deram uma tarefa, eu olhei para ela e não tinha ideia de como fazê-lo. O professor sentou-se próximo, escreveu linha por linha, explicou, e eu entendi que isso era exatamente o que eu tinha que fazer. Mas eles me deram uma tarefa semelhante, e eu estava novamente estupor. "

Após tentativas frustradas, Danila abandonou a programação por um longo tempo. Cerca de dez anos, ele trabalhou como administrador de sistemas. E quando ele sentiu que a administração não está mais trazendo alegria, ele decidiu dar ao desenvolvimento mais uma chance.



“É melhor para um novato entender a sintaxe primeiro”, acredita Alexei Petrenko, “só então você deve pensar para onde deseja ir mais longe. Quanto mais você estuda, mais se afasta da sintaxe para as bibliotecas, padrões de design, padrões individuais. ”

Danila escolheu Python porque a linguagem era considerada fácil. “A sintaxe realmente acabou sendo simples”, diz ele, “como escrever texto em inglês. No começo, eu próprio estudei em materiais de vídeo no YouTube, em artigos, resolvi problemas no pythontutor.ru. Mas então percebi que os recursos na Internet são apenas o básico e o básico. Eles são acessíveis a todos e em qualquer lugar e não ajudarão a aprender a programar completamente. Percebi que precisamos procurar cursos que ofereçam o mesmo, apenas de forma sistemática, e depois me levem mais longe ".

O que você precisa saber antes de iniciar o treinamento


Antes de mergulhar seriamente no estudo do idioma, Alexei Petrenko recomenda descobrir com antecedência - se você gosta de programar. “Eu aconselho você a tentar escrever vários programas, ter aulas gratuitas. Antes de iniciar o treinamento, é melhor entender o que é uma variável e como adicionar duas variáveis.

Para que os cursos não se tornem inúteis, apenas uma coisa ajudará - praticar. Se você apenas assistir e ouvir, nada resultará disso. Para um iniciante, é prática reescrever o código que o professor exibe na tela. Reescreva e pense em como ele funciona.

O mínimo exigido para as aulas é de quatro horas por semana. Dois dias por semana, durante duas horas. Mas eu recomendaria passar uma hora por dia escrevendo seu próprio código. O principal é não mergulhar na programação com a cabeça para que não haja tumulto na magia. Quando você aprende tudo por três dias, fica com mingau na cabeça.

Começar pode ser fácil, mas as dificuldades esperam por você à frente


Artyom continuou a trabalhar como eletricista à tarde e à noite começou a estudar, apesar do cansaço. “Como todas as pessoas ingênuas, eu esperava uma mágica dos cursos. Eu não vim completamente zero. Havia vários livros e até sites simples na bagagem, inclusive em PHP (pecaminoso, admito). Eu estava esperando o cérebro me treinar nos cursos, e me tornarei um mágico. As realidades acabaram sendo diferentes - há pessoas que apenas sabem um pouco mais. ”



Artyom gostou dos cursos, mas nem tudo correu bem. O programa da época era novo, um pouco descontrolado e caótico de acordo com suas impressões. Os alunos falaram sobre questões polêmicas, deram feedback e as falhas foram corrigidas em qualquer lugar. Um dos professores estava tão fraco que lhe pediram para ser removido. Mas o resto, como lembra Artem, era muito forte.

Danila, no entanto, tudo foi ainda mais difícil. Após vários cursos introdutórios, ele deixou de acompanhar o programa e deixou o fluxo várias vezes para repetir o programa no próximo.

“Todos reconheceram, incluindo Geekbrains, que os níveis 2 e 3 do programa Python eram alguns dos cursos mais difíceis da universidade. Muita informação em um período de tempo muito curto, uma tarefa muito grande. Muitos absorveram apenas parte do material. Eu pessoalmente fui transferido duas vezes para o próximo stream. Pedimos para facilitar o programa, perguntaram como, e sugeri dividir dois cursos em três. Parte disso foi levada em consideração e agora está sendo implementada. ”

Diferentemente das primeiras tentativas de aprender C, quando nada aconteceu, Danila seguiu em frente. Coisas que ele não entendeu se transformaram em coisas que ele não entendeu, como não pôde ser entendido. Mas essa linha não pode ser superada simplesmente repleta de livros didáticos. Como Danila diz, habilidades de programação e linguagem são duas coisas completamente diferentes.

“Ensinar programação também é muito difícil. Parece a todos que, como uma pessoa pode escrever programas, isso significa que ela pode ensinar. Isto não é verdade. Quando o pensamento é reconstruído e você sabe muitas coisas, não consegue se lembrar de como é não entender. "

Alex adverte que Python é fácil apenas no começo. E depois de uma base fácil, você terá que se esforçar para dominar aspectos mais sérios - bibliotecas e estruturas. “Se compararmos a linguagem de programação com um reservatório, por exemplo, a linguagem C é o oceano. Você mergulha de um penhasco a uma grande profundidade e nada ou afunda. A linguagem Python é uma praia com areia limpa, onde você pode ir longe, nadar com calma e, se entender que deseja seguir em frente, há um enorme buraco atrás da bela praia, comparável em profundidade a C e Java. ”



“A programação assíncrona em Python é um truque cerebral”, lembra Artem. “Passamos por isso superficialmente e, mesmo nas entrevistas, quando perguntados sobre isso, senti como se estivesse nadando.

Padrões de design também são impossíveis de serem capturados abruptamente. Já li os trechos três vezes, especialmente o livro e ainda não me sinto confiante até o fim. Por um mês, que dura um curso sobre eles, geralmente não é realista dominar. ”

Danila lembra o módulo select como o mais difícil: “Todos os três threads lembram minha dor com select. Existe esse módulo, e ele diretamente não me deu muito de uma só vez. Agora é simples para mim - agora não entendo como você não entende. "





"A configuração básica do Python contém cerca de 70 funções e dezenas de palavras reservadas, mas mesmo um programador legal não usa necessariamente todas elas. Ou seja, para aprender cem palavras e entender o que elas fazem, você pode passar de uma a três semanas se quiser e trabalhar ativamente ”, diz Alexey.

“Programadores iniciantes escrevem programas que também funcionam. Mas eles escrevem o código uma vez - lêem-no dez vezes. Quando, após algum tempo, outra pessoa tenta ler o programa, surgem dificuldades.

Para trabalhar em uma equipe no futuro e mostrar o código a outra pessoa, você precisa conhecer os padrões de estilo geralmente aceitos. Em Python, eles são chamados Peps. Eu aconselharia a leitura do Pep8 em paralelo com a sintaxe de aprendizado. Este é um acordo de programadores que escrevem no Python. Ele recomenda como escrever corretamente e como está errado.

Alguns anos atrás, ocorreu uma divisão no Python. Havia o Python 2.7 e, em seguida, saiu a versão 3. A segunda versão ainda é usada, mas apenas em empresas mais antigas para manter o código legado. Se você conseguir um emprego em uma empresa assim, terá que aprender Python 2, mas eu recomendaria aprender a terceira versão. Todos os projetos modernos e bibliotecas de terceiros foram criados para isso. ”

Como passar na primeira entrevista


Artem e Danila concluíram os cursos de maneiras muito diferentes. Depois de várias tentativas, Danila decidiu não terminar seus estudos, porque não encontrou entendimento mútuo com o professor dos últimos cursos, mas encontrou um emprego. Artyom, junto com seus colegas, já durante o treinamento, criou um projeto de treinamento em uma startup, que começou a gerar dinheiro real.

“O projeto foi chamado GoLiving. Isso é algo como o AirBnb, apenas a idéia é a seguinte: nos Estados Unidos, existem pessoas que costumam trabalhar em diferentes cidades por um curto período. E eles podem trocar de morada com seguro garantido entre si para garantir que você não retornará ao apartamento destruído. Agora não sei até que ponto esse recurso foi, o financiamento parece ter sido suspenso. Mas então nós tínhamos investidores. ”





Danila, durante o treinamento nos cursos, ficou seis meses sem trabalhar. Ele se demitiu especificamente para estudar, mas devido a transferências frequentes, os estudos demoraram mais e o dinheiro reservado para esse período estava chegando ao fim. Depois de deixar os cursos, Danila nem teve tempo de começar a aprender Django - a estrutura de desenvolvimento web mais popular.

“Na véspera de Ano Novo, escrevi para uma empresa que ficava perto da minha casa. Fui ao site deles, vi um emprego como desenvolvedor de back-end e escrevi uma carta para eles. Eu digo que gostaria de trabalhar com você, apesar de ter estudado, mas sei um pouco. Estou muito interessado e vou me desenvolver. E eles me ligaram para uma entrevista. ”

"Minha experiência na Geekbrains mostra que alguns estudantes encontram trabalho antes de terminar o curso de um ano", diz Alexey. “O empregador deseja ver uma habilidade elementar de trabalhar com a sintaxe no desenvolvedor do servidor, conhecimento de como os sites funcionam, como o back-end funciona, o mesmo Django ganhando popularidade. Eu também acrescentaria aqui o trabalho em equipe e o conhecimento de bancos de dados, porque qualquer back-end de qualquer site está inextricavelmente vinculado ao armazenamento de informações.


Cerca de 200 vagas de desenvolvedores de python são abertas no My Circle todos os meses. Você pode ver as últimas e assinar o boletim informativo sobre novas vagas.

Durante a entrevista, o principal é não ficar em silêncio. Se você recebe uma tarefa que não pode ser respondida imediatamente, basta raciocinar em voz alta, mostrar como pensa e o que é capaz de avançar em direção a uma solução.

E o principal é não se desesperar se a primeira entrevista não teve êxito. Indo para duas ou três entrevistas, você notará que as perguntas começam a se repetir. E então você escolherá onde obtê-lo, porque um dia você irá a todos os lugares, em qualquer lugar, desde três entrevistas.

Na entrevista, Danila ficou muito surpreso com o fato de ele não ter feito uma única pergunta técnica: "Eles não deram nenhuma tarefa - eles apenas falaram sobre como eu estudei, em que estou interessado. Como resultado, eles ofereceram um emprego, e eu concordei. ”

Alexei acredita que vale a pena ter mais cuidado com essas empresas. “Além das perguntas gerais, deve haver tarefas para escrever código. Mesmo se estiver usando papel a lápis, isso é normal. Mas se você foi a uma entrevista com um programador e não recebeu uma única pergunta sobre programação, ou foi entrevistado por uma pessoa incompetente ou fará algo não programático. Os programadores devem ser verificados quanto à programação. ”

“Acho que não pedir material técnico é a abordagem certa”, diz Danila. “Grigory Petrov, que é muito famoso na comunidade Python, também diz que as habilidades de programação (fortes habilidades) sempre podem ser reforçadas. O principal é concordar com as perspectivas da vida para se sentir confortável trabalhando juntos. Eu concordo com ele.

Obviamente, habilidades de programação são importantes. Mas agora eu trabalho com coisas que não são ensinadas em cursos. Eles já me mostraram no trabalho, e então eu mesmo decido, leio a documentação, artigos, veja exemplos. Estou mais preocupado com empresas que fornecem itens de teste "normais". Você olha e pensa - isso é realmente um teste ou sou um freelancer grátis agora? ”



“A entrevista que eu passei derreteu meu cérebro assim”, lembra Artem. "Quando saí, o estado era como se eu estivesse no piloto automático - meus pensamentos continuaram a zumbir tanto."

Foi assim: havia dois óculos e dois técnicos. Um pythonist e full-stack que estava envolvido na web - onde eu tentei também. O segundo - a julgar pelas questões - é um cérebro perfeito. Ele tinha um matan tão forte que apenas hoo!

Primeiro vieram as perguntas diárias, todas essas "como você se vê, como se sente". Então ele pegou uma pilha cheia, me perseguiu através do Python, de acordo com Django. Ele desenhou exemplos diretamente no papel e perguntou-lhes. Não é complicado, mas com sub-marcas.

E então o tio-cérebro tomou conta de mim. Ele mergulhou mais fundo no matan, perguntou sobre algoritmos e, como a empresa trabalha com segurança e criptografia, ele também me levou através dele. Mas nisto não sou nada forte, portanto respondi como uma criança de cinco anos de idade. Em geral, choveu na criptografia, mantida em algoritmos, mas não em muito.

Honestamente, eu nem esperava que eu fosse chamado de volta. No entanto - recebeu uma oferta. Dentro de alguns dias, haverá um primeiro dia útil. ”

Com que dinheiro vale a pena contar


As pessoas vão para a TI não apenas ao chamado da alma. Esta é uma indústria com alguns dos salários que mais crescem na Rússia. E, às vezes, parece que os salários dos programadores, em comparação com as profissões médias, diferem dos salários em Moscou e nas regiões. No entanto, nem Artem nem Danila entraram nessa profissão por riqueza. Além disso, eles ainda não o encontraram.

“Mesmo em Moscou nas posições iniciais, os programadores recebem entre 40 e 50 mil, talvez até menos. Nas regiões de 20 mil para o júnior também não é incomum. Este não é um trabalho tão bem remunerado, como todos afirmam. Sim, quando você atinge o nível sênior, os salários podem exceder de 200 a 300 mil. Mas onde não existem salários? Recentemente, uma empresa de táxi mostrou a renda dos motoristas de táxi que ganharam mais. Existem 230, 240 mil.

imagem
O gráfico salarial dos desenvolvedores de python por qualificação mostra que a mediana de junho é de quase 60.000 rublos , enquanto a do meio já recebe, em média, pouco mais de 100.000 rublos . Mas a diferença entre as medianas dos idosos e da liderança é bem pequena - 151.000 rublos e 167.000 rublos, respectivamente.

Ao plotar o gráfico, foram utilizados os dados da calculadora de salário “Meu Círculo”.

Talvez na programação seja mais fácil atingir um nível acima da média do que em muitas outras áreas. Mas para mim não era a coisa principal. Eu estava interessado em criar programas. ”

“Os salários dependem da região”, diz Aleksey, “alguém se contentará com 40 mil como iniciante, alguém pode imediatamente 100 mil. Observando como provar a si mesmo. Se você mostrar que pode escrever não apenas o código, mas também entender a arquitetura, pode esboçar todo o esquema do projeto, todos os módulos, serviços e conexões entre eles. ”

Artem, em geral, entrou em desenvolvimento por um salário mais baixo do que tinha como engenheiro. “No eletricista, eu tinha o cargo de engenheiro-chefe e o salário era muito bom. Saí porque quero desenvolvimento. E na programação, você pode desenvolver indefinidamente ".



Apesar de programar uma das gradações mais claras e compreensíveis em termos de habilidade (júnior, médio, signor) - ela ainda permanece relativa e está constantemente alimentando o debate pela indefinição de seus critérios. Disputas no espírito de "você está na empresa X Signor e não fará parte da empresa Y e junior" ou "até que trabalhe há dez anos, não o Signor".

“Você pode bombear para o nível intermediário durante o ano de estudo. Por exemplo, o Geekbrains tem cursos obrigatórios e opcionais. Todos eles devem ser concluídos completamente para ser sincero - eu fui para o nível intermediário. Ou seja, acontece um ano do programa principal e outros seis meses de cursos paralelos ", acredita Aleksey," e o Signor é uma pessoa que possui uma rica experiência. É alguém que entende estruturas diferentes, é capaz de dimensionar tarefas, entender quais recursos eles exigem. Um homem que não inventa bicicletas. Quem, por minha própria experiência, entendeu todos os aspectos e nuances do trabalho.

Se uma pessoa após três anos de trabalho se chama signora - por que não? Tudo depende da empresa, aspirações e habilidades. Se uma pessoa é talentosa e tem propósito, então eu acreditarei.


Uma entrevista completa com o decano do departamento Python da GeekBrains - como e por que os iniciantes aprendem a língua

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


All Articles