Fizemos uma pequena transcrição com os principais pensamentos do Python Junior Podcast: nele discutimos por onde começar e para onde ir como desenvolvedor Python iniciante. Ultimamente temos muito conteúdo para alunos de nível médio e sênior, mas este episódio é definitivamente para juniores.

Tópicos principais:
- Que conhecimento um programador novato precisa praticar
desenvolvimento web? - O que os empregadores esperam dos desenvolvedores?
- O que fazer para encontrar um emprego sem experiência?
- Como um desenvolvedor Python pode desenvolver?
Python Junior Podcast é um podcast de programação para quem deseja entender melhor o Python. As transmissões são conduzidas por evangelistas comunitários e professores do curso .
Participantes da conversa:
- Valentin Dombrovsky,cofundador da MoscowPython
- Zlata Obukhovskaya, Líder da equipe NVIDIA
- Grigori Petrov, evangelista MoscouPython
- Alexei Shtyrnyaev, desenvolvedor na FinEx, professor dos cursos Learn
Python
Por que Python é bom para desenvolvimento web
Valentin Dombrovsky: Por que o Python é adequado para desenvolvimento web? Por que não PHP ou JavaScript, por exemplo?
Grigori Petrov: Portanto, não há muita escolha. Apesar do fato de que na Web moderna você pode realmente construir um aplicativo de página única ou um aplicativo da Web progressivo sem back-end - usando apenas tecnologias front-end, usando JavaScript - ainda é muito complicado, mal indexado e requer desenvolvedores legais.
Se quisermos fazer um site ou serviço, usamos uma abordagem combinada: algum backend implementa a lógica e cria páginas da web, e algum frontend desenha essas páginas da web no navegador. E quando precisamos juntar tudo rapidamente em alguma coisa, não temos escolha.
Vejamos as opções possíveis.
- C #. A Microsoft é realmente ótima, eles criaram o .NET Core e o estão promovendo de todas as maneiras possíveis. Mas, em primeiro lugar, esta é uma nova tecnologia multiplataforma e nem tudo está tranquilo ainda. Em segundo lugar, é muito caro, há poucos desenvolvedores de C# - simplesmente porque é impopular.
- Java. É complicado. Fazer um site normal em Java não requer 10 linhas de código, como em Python. Isso é muito código, são estruturas e você precisa conhecer os detalhes da configuração de servidores Java. Em geral, dor e sofrimento contínuos.
- PHP Nas versões mais recentes é maravilhoso. Direi até o seguinte: PHP 7.2 não é pior que Python. Mas você não pode simplesmente pegar e usar o PHP 7.2. Se um desenvolvedor comum, não de ponta, fizer um site em PHP, ele não escreverá apenas em 7.2: ele ainda terá que ler alguns livros didáticos, tutoriais, há muito código legado em todos os lugares, e isso não é muito bom.
- JavaScript e Node.js. É maravilhoso e muito moderno quando existe uma linguagem tanto no front-end quanto no back-end. Apenas não muito estável. Node.js é uma coisa boa, mas é problemático implantá-lo na produção para que não trave e funcione de forma estável. Além disso, se quisermos escrever código JavaScript de qualidade, não precisamos de JavaScript, mas de TypeScript. Mas o TypeScript é inesperadamente complexo, e o cérebro do desenvolvedor médio ferve quando o vê.
Vamos deixar de fora Ruby, Haskell, Erlang e outras coisas de nicho, e ficamos com... Python. Uma linguagem com sintaxe consistente, uma biblioteca padrão uniforme, a melhor documentação, estruturas leves e populares e a combinação mega popular do Django.
Acontece que, apesar da escolha mais ampla, se tivermos desenvolvedores comuns, e não desenvolvedores de ponta, somos uma empresa comum que deseja criar sites comuns, não temos um departamento de desenvolvimento para 50 pessoas, então escolhemos Python.
Que conhecimentos são necessários para ingressar na profissão?
Zlata Obukhovskaya: Acredito que você precisa conhecer bem um framework - e saber quais outros existem e quando são utilizados. Onde está o Tornado, onde está o Django, onde está o Flask, onde está o aiohttp e assim por diante.
Será útil saber que existem protocolos. Em particular, o conhecimento do protocolo http é fundamental para a construção de aplicações web.
Você também precisa entender pelo menos aproximadamente como funciona o front-end em projetos da web: o que é HTML, CSS, JS.
Alexei Shtyrnyaev: E saiba onde está a documentação. É muito importante.
Grigori Petrov: Aqui estamos pisando em terreno muito instável. Se não tivermos sorte e de alguma forma começarmos a estudar seriamente o front-end moderno, ele será cerca de 10 vezes mais complicado do que o back-end em Python. Um desenvolvedor iniciante precisa limitar seu foco para poder começar a aprender HTML, mas não se perder em todos esses divs, spans, floats, como tudo está alinhado e alinhado.
Alexei Shtyrnyaev: Precisa de um curso básico de Bootstrap. E o básico de HTML.
No primeiro ano, você não deve se aprofundar em frameworks JS (se estiver focando no backend). O curso básico de Bootstrap já possui módulos prontos: se quiser um slider, faça um slider; se quiser um menu flutuante, faça um menu flutuante.
Zlata Obukhovskaya: Acho que ao estudar o frontend, você pode mergulhar, em particular, em como a estática geralmente é dada às aplicações web. Assim, o desenvolvedor avança suavemente para começar a aprender como a arquitetura dos aplicativos da Web funciona em princípio e como eles vivem na produção.
Grigori Petrov: Sim, vou recomendá-lo imediatamente caso você tenha escolhido Python como linguagem de desenvolvimento backend e, por exemplo, Django como framework: Django tem documentação no Django Book, é muito legal, contém tudo que Zlata falou, ela realmente bom para um iniciante.
Alexei Shtyrnyaev: Algumas Django Girls também são adequadas para um início rápido se seu objetivo é aprender Django. Este é um tutorial onde em um dia você pode ir além, entender o básico e do que o framework é capaz.
Valentin Dombrovsky: Na preparação para gravar o podcast, compilamos uma lista do que um programador Python precisa para o desenvolvimento web, que resume o que dissemos anteriormente.
O que está incluído no básico para desenvolvimento web em Python
- Frameworks Web Django, Flask, aiohttp, Tornado, etc. (e saber da existência de outros).
- Protocolos e APIs: principalmente http, JSON-RPC, Protocol Buffers, gRPC.
- ORM e migrações, bancos de dados relacionais, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Noções básicas de HTML, CSS, Bootstrap, bem como frameworks JS e JQuery.
- Princípios de operação de aplicativos em produção, testes, testes unitários, autotestes, sistemas de controle de versão, git.
Os juniores precisam de algoritmos?
Zlata Obukhovskaya: No início, você não precisa conhecer os algoritmos; eles aparecerão gradualmente na sua cabeça se você se dedicar ao desenvolvimento por tempo suficiente. Conheço muitos bons engenheiros que não tiveram um bom curso formal de algoritmos.
Grigori Petrov: Quero adicionar lenha ao fogo. De onde vem nosso desejo por algoritmos?
Atualmente não temos formação fundamental em algoritmos, não sabemos formar programadores, não temos base técnica.
Eles estão tentando fazer isso, mas aqui temos a história de Hogwarts: não podemos criar uma escola para bruxos enquanto não tivermos um único bruxo. Portanto, o que uma universidade deve fazer quando chega até eles e pergunta: “Comece a treinar programadores”, mas eles não têm programadores, porque todos trabalham no Mail.ru, Rambler e Yandex, eles estão felizes lá?
A universidade olha e diz:
- Ok, programação. Vamos encontrar alguma área de conhecimento relacionada e convidar especialistas de lá. Vamos convidar jornalistas que saibam escrever textos, engenheiros elétricos que saibam fazer circuitos elétricos e matemáticos que saibam usar algoritmos.
No final das contas, isso é tão prático quanto ensinar física de partículas a um construtor, só porque o tijolo e o cimento são feitos de partículas elementares.
Ao mesmo tempo, eles próprios não falam sobre cimento e tijolos, porque o físico que está tentando formar um construtor não sabe construir casas. Como resultado, obtemos um construtor que consegue descrever perfeitamente como “funciona o cimento”, mas nunca o viu e não sabe fazer nada com ele.
Algoritmos e estruturas de dados são muito bons, mas esta é uma área de aplicação muito pequena. Eles são urgentemente necessários, por exemplo, se você estiver escrevendo um mecanismo de jogo, um compilador ou um protocolo de rede.
A maioria dos programadores resolve problemas de negócios onde algoritmos e estruturas de dados não são necessários.
A matemática mais difícil que existe é somar duas vezes e depois dividir. Requer conhecimentos completamente diferentes. Resolver problemas de negócios requer principalmente conhecimento aplicado, e não fundamental.
É melhor para um desenvolvedor iniciante ter uma compreensão do negócio e como montar correta e rapidamente as estruturas necessárias a partir de blocos prontos, como depurá-los, como garantir que eles não desmoronem, saiba por que eles desmoronam, o que acontece quando os requisitos mudam e o programa começa a “assentar nos alicerces” como uma casa depois da chuva.
São coisas práticas e uma compreensão de como escrever software. Ele precisa saber que além do depurador, ele possui um conjunto de ferramentas que vão mostrar exatamente onde o programa está ficando lento.
Valentin Dombrovsky: Esta comparação me veio à mente: esta é uma tradução da linguagem dos negócios para uma linguagem na qual você pode se comunicar com um computador. Ou seja, um programador é uma espécie de linguista específico.
Grigori Petrov: Os negócios precisam de um escritor, não de um linguista. O escritor não precisa saber por que há mil anos essa palavra se transformou nisso. Ele precisa ser capaz de aplicar essas palavras.
O que você precisa para encontrar seu primeiro emprego como desenvolvedor
Alexei Shtyrnyaev: Provavelmente não existe uma receita universal de como cozinhar júnior.
Se você for para alguma empresa, eles vão te contratar não porque você conhece Django, JSON e alguns algoritmos. Provavelmente você será contratado pelas habilidades que esta empresa precisa aqui e agora.
Existem muitas empresas e todas elas têm requisitos diferentes. Não existe uma quantidade universal de conhecimento que precise ser obtido para preparar ainda mais um currículo e procurar um emprego.
Grigori Petrov: Quando nós da VoxImplant procurávamos vários engenheiros, nosso diretor técnico formulou o seguinte requisito básico: uma pessoa deve ser capaz de resolver problemas. É claro que um júnior nem sempre fará isso de forma eficaz, nem da melhor maneira e nem sempre corretamente, mas o ideal é que você dê uma tarefa a uma pessoa, ela se esforça e resolve. Essa é a habilidade que os empregadores procuram principalmente.
Zlata Obukhovskaya: Pessoas que procuram trabalho em outras áreas têm alguma vantagem do ponto de vista empresarial porque já percorreram algum caminho e conseguem resolver problemas rapidamente. São soft skills, eu até chamaria de cultura de trabalho. Muitas vezes, os graduados universitários ainda não desenvolveram esta cultura de trabalho.
Mas ainda gostaria de tentar dar algum tipo de receita para iniciantes.
Primeiros passos para um desenvolvedor iniciante
Zlata Obukhovskaya: A primeira é que ainda é algum tipo de projeto de sua autoria, pois você precisa escrever algo em seu currículo e mostrar um portfólio mínimo. É mais legal quando esses projetos não são feitos para você, mas como um projeto freelancer - para alguém.
Após os primeiros projetos você já pode fazer um currículo e enviar para todas as empresas onde há vagas no mês de junho. As entrevistas fornecerão informações sobre o que as empresas precisam. Mais cedo ou mais tarde alguém irá contratá-lo, pelo menos em uma pequena empresa. Posteriormente, esta experiência profissional lhe dará a oportunidade de ingressar em uma empresa maior e mais interessante.
Valentin Dombrovsky: Aliás, em nossos cursos preparamos os alunos para terem seu próprio projeto em até 10 semanas de treinamento. Além disso, treinamos habilidades de desenvolvimento de equipes. Essas são exatamente as soft skills de que Zlata falou.
Alexei Shtyrnyaev: Posso dizer por experiência própria que pode levar muito tempo para procurar o primeiro emprego. Quando você procura por um ou dois meses, isso é normal. Se você enviar seu currículo para todas as empresas, for a entrevistas, no terceiro mês com certeza encontrará algo.
Valentin Dombrovsky: Você pode cortar seus próprios projetos ou assumir projetos simples como freelancer e ao mesmo tempo enviar seu currículo.
Quais são as perspectivas de um desenvolvedor Python?
Zlata Obukhovskaya: Um desenvolvedor Python pode ir a qualquer lugar. Você pode fazer testes e continuar desenvolvendo para um arquiteto sênior. Ou mesmo em gestão. Existem diferentes tipos de gerentes técnicos e você pode evoluir para a alta administração. Você pode desenvolver em ciência de dados, DevOps, testes automatizados ou aprendizado de máquina.
Valentin Dombrovsky: Em geral, há muitas opções e oportunidades, inclusive nossos cursos. Não é preciso muito conhecimento na entrada, mas é aconselhável depois abranger um leque mais amplo, pois quanto mais você puder, melhor para você.
***
Isso é apenas parte do lançamento . A versão completa do episódio está disponível .
Ou até mesmo olhe:

Obrigado por ler, ouvir ou assistir.
Fonte: habr.com
