Python para Web: o que um júnior precisa saber para trabalhar e se desenvolver.

Fizemos um resumo das principais ideias do Python Junior Podcast: nele discutimos por onde começar e para onde ir como um desenvolvedor iniciante em Python. Recentemente, temos produzido muito conteúdo para profissionais intermediários e seniores, mas este episódio é definitivamente para os juniores.

Python para Web: o que um júnior precisa saber para trabalhar e se desenvolver.

Principais tópicos:

  • Quais conhecimentos um programador iniciante precisa para trabalhar em
    desenvolvimento web?
  • O que os empregadores esperam dos desenvolvedores?
  • O que fazer para encontrar trabalho sem experiência?
  • Como pode evoluir um desenvolvedor Python?

O Python Junior Podcast é um podcast sobre programação para quem deseja entender melhor o Python. Os episódios são apresentados pelos evangelistas da comunidade MoscowPython e professores dos cursos Learn Python.

Os participantes da conversa foram:

  • Valentin Dombrovsky,cofundador do MoscowPython
  • Zlata Obukhovskaya, líder de equipe na NVIDIA
  • Grigory Petrov, evangelista do MoscowPython
  • Aleksey Shtyrnayev, desenvolvedor na FinEx, professor dos cursos Learn
    Python

Por que o Python é bom para desenvolvimento web?

Valentin Dombrovsky: Por que exatamente o Python é adequado para desenvolvimento web? Por que não PHP ou JavaScript, por exemplo?

Grigory Petrov: Na verdade, não há muitas opções. Apesar de que no Web moderno é possível, na verdade, criar algo sem backend — apenas com tecnologias frontend, em JavaScript — para construir uma aplicação de página única ou uma aplicação web progressiva, ainda assim é muito complicado, pouco indexável e requer desenvolvedores altamente qualificados.

Se quisermos criar um site ou serviço, usamos uma abordagem combinada: temos um backend que executa a lógica e cria páginas web e um frontend que desenha essas páginas web no navegador. E quando precisamos montar tudo isso rapidamente, não há muitas opções.

Vamos considerar as opções possíveis.

  • C#. A Microsoft realmente se destacou, eles criaram o .NET Core e o promovem amplamente. Mas, por um lado, é uma nova tecnologia multiplataforma e ainda não é completamente perfeita. Por outro lado, é realmente caro, há poucos desenvolvedores de C# — simplesmente porque não é popular.
  • Java. É complicado. Criar um site adequado em Java não é como escrever 10 linhas de código, como no Python. É muito código, são frameworks e você precisa conhecer as especificidades da configuração de servidores Java. Enfim, é só dor e sofrimento.
  • PHP. Nas versões mais recentes, é incrível. Eu diria até: PHP 7.2 não fica atrás do Python. Mas não se pode simplesmente pegar e usar o PHP 7.2. Se um desenvolvedor comum, que não é top, faz um site em PHP, ele não vai escrever apenas em 7.2: de qualquer forma, terá que ler alguns livros, tutoriais, há um monte de código legado, e isso não é muito bom.
  • JavaScript e Node.js. É maravilhoso e muito moderno ter uma única linguagem tanto no front-end quanto no back-end. Só que não é muito estável. Node.js é uma boa ferramenta, mas é problemático implementá-la em produção de forma que não falhe e funcione de maneira estável. Além disso, se quisermos escrever um código de qualidade em JavaScript, precisamos de TypeScript, não de JavaScript. E TypeScript é inesperadamente complexo; ao ver isso, a mente de um desenvolvedor comum entra em colapso.

Vamos deixar de lado Ruby, Haskell, Erlang e outras coisas de nicho, e sobra… Python. Uma linguagem com uma sintaxe consistente, uma biblioteca padrão uniforme, a melhor documentação, populares e leves frameworks, o mega popular Django.

Portanto, apesar da vasta escolha, se temos desenvolvedores comuns, que não são top, sendo uma empresa comum que quer fazer sites comuns, e não temos um departamento de desenvolvimento de 50 pessoas, então escolhemos Python.

Quais conhecimentos são necessários para ingressar na profissão

Zlata Obukhovskaya: Eu considero que é necessário saber bem um framework — e saber quais outros existem e quando são usados. Onde está o Tornado, onde está o Django, onde está o Flask, onde está o aiohttp e assim por diante.
É útil saber que existe uma coisa chamada protocolos. Em particular, o conhecimento do protocolo HTTP é central para a construção de aplicações web.

Além disso, é preciso ter pelo menos uma ideia de como o front-end funciona em projetos web: o que são HTML, CSS, JS.

Aleksey Shtyrnyayev: E saber onde está a documentação. Isso é o mais importante.

Grigory Petrov: Aqui estamos pisando em solo muito instável. Se não tivermos sorte e começarmos a estudar seriamente o front-end moderno, ele será aproximadamente 10 vezes mais complicado do que o back-end em Python. Um desenvolvedor iniciante precisa limitar seu foco a começar a estudar HTML, mas sem se perder em todos esses divs, spans, floats, como tudo é alinhado e estruturado.

Aleksey Shtyrnyayev: É necessário um curso básico de Bootstrap. E os fundamentos de HTML.

No primeiro ano, não vale a pena se aprofundar em frameworks JS (se você estiver focando no backend). No curso básico de Bootstrap, já existem módulos prontos: quer um slider — faça um slider, quer um menu flutuante — faça um menu flutuante.

Zlata Obukhovskaya: Acho que ao estudar frontend, pode-se mergulhar, em particular, em como a estática é fornecida às aplicações web. Assim, o desenvolvedor faz uma transição suave para começar a entender como a arquitetura das aplicações web funciona e como elas operam em produção.

Grigory Petrov: Sim, eu recomendaria logo caso você tenha escolhido Python como linguagem de desenvolvimento backend e, por exemplo, Django como framework: o Django tem documentação no Django Book, que é realmente excelente, e cobre tudo o que a Zlata mencionou; é realmente boa para iniciantes.

Aleksey Shtyrnyayev: Ainda para um início rápido, algo como o Django Girls se encaixa, caso o objetivo seja estudar especificamente Django. Este é um tutorial onde em um dia você pode passar pelos principais pontos, entender os fundamentos e o que o framework pode fazer.

Valentin Dombrovsky: Preparando-se para a gravação do podcast, fizemos uma lista do que um programador Python precisa para o desenvolvimento web, que resume o que foi dito anteriormente.

O que compõe a base para o desenvolvimento web em Python

  • Frameworks web como Django, Flask, aiohttp, Tornado, etc. (e ter conhecimento sobre a existência de outros).
  • Protocolos e APIs: em primeiro lugar http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM e migrações, bancos de dados relacionais, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Fundamentos de HTML, CSS, Bootstrap, além de frameworks JS e JQuery.
  • Princípios de funcionamento de aplicações em produção, testes, testes unitários, testes automatizados, sistemas de controle de versão, git.

Um júnior precisa saber algoritmos?

Zlata Obukhovskaya: Inicialmente, não é necessário saber 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 sobre algoritmos.

Grigory Petrov: Quero adicionar mais lenha na fogueira. De onde vem a nossa atração por algoritmos?

Atualmente, não temos uma educação fundamental em algoritmos, não sabemos ensinar programadores, não há uma base técnica.

Isso é o que tentam fazer, mas aqui temos a história de Hogwarts: não podemos criar uma escola de magia se não temos nenhum mágico. Então, o que deve fazer uma universidade que recebe pedidos como: "Comecem a formar programadores", mas não tem programadores porque todos trabalham na Mail.ru, Rambler e Yandex, onde estão satisfeitos?

Na universidade olham e dizem:
— Ok, programação. Vamos encontrar uma área de conhecimento relacionada e convidar especialistas de lá. Vamos convidar jornalistas que sabem escrever textos, engenheiros elétricos que conseguem fazer esquemas elétricos e matemáticos que entendem de algoritmos.

No final, isso é tão sensato quanto ensinar um pedreiro sobre a física de partículas elementares apenas porque tijolos e cimento são feitos de partículas elementares.

Ao mesmo tempo, não falam sobre o próprio cimento e tijolo, porque o físico que tenta ensinar um pedreiro não sabe construir casas. No final, obtemos um pedreiro que consegue descrever perfeitamente como "o cimento funciona", mas que nunca o viu e não sabe fazer nada com ele.

Algoritmos e estruturas de dados são muito bons, mas são uma área prática muito pequena. São cruciais, por exemplo, se você está escrevendo um motor 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.

Lá, a matemática mais complexa é somar duas vezes e depois dividir. São necessários conhecimentos completamente diferentes. Para resolver problemas de negócios, principalmente conhecimentos aplicados são exigidos, e não fundamentais.

Um desenvolvedor iniciante é melhor ter uma noção de negócios e saber como montar rapidamente as estruturas necessárias a partir de blocos prontos, como depurá-las, fazendo com que não desmoronem, saber por que elas desmoronam, o que acontece quando as exigências mudam e o programa começa a "assentar nas fundações", como uma casa após a chuva.
Essas são as questões práticas e a compreensão de como escrever software. Ele precisa saber que, além do depurador, possui um conjunto de ferramentas que mostrará exatamente onde o programa está lento.

Valentin Dombrovsky: Essa comparação me veio à mente: é uma tradução do idioma dos negócios para um idioma que pode ser compreendido pelos computadores. Ou seja, o programador é um linguista específico.

Grigory Petrov: O negócio precisa de um escritor, não de um linguista. O escritor não precisa saber por que, mil anos atrás, essa palavra se transformou naquilo. Ele precisa ser capaz de aplicar essas palavras.

O que é necessário para encontrar o primeiro emprego como desenvolvedor

Aleksey Shtyrnyayev: Provavelmente, não existe uma receita universal para preparar um júnior.

Se você entrar em alguma empresa, provavelmente não será contratado por saber Django, JSON e um pouco de algoritmos. Você será contratado pelas habilidades que a empresa precisa aqui e agora.

Existem muitas empresas, e todas têm requisitos diferentes. Não há um conjunto universal de conhecimentos que é necessário adquirir para preparar um currículo e procurar emprego.

Grigory Petrov: Quando estávamos na VoxImplant à procura de alguns juniores, nosso diretor técnico formulou o requisito básico assim: a pessoa deve ser capaz de resolver problemas. É claro que um júnior nem sempre fará isso de forma eficiente, da melhor maneira ou sempre corretamente, mas, idealmente, você atribui uma tarefa à pessoa, ela se esforça e a resolve. Essa é a habilidade que os empregadores buscam em primeiro lugar.

Zlata Obukhovskaya: As pessoas que estão mudando de outras áreas para o mercado de trabalho têm uma certa vantagem do ponto de vista empresarial, pois já percorreram um caminho e sabem resolver problemas rapidamente. Essas são soft skills, eu chamaria isso até de cultura de trabalho. Muitas vezes, os graduados ainda não desenvolveram essa cultura de trabalho.

Mas eu gostaria de tentar dar alguma receita para os iniciantes.

Os primeiros passos para um desenvolvedor iniciante

Zlata Obukhovskaya: Primeiro, é ter algum projeto próprio, porque no currículo é preciso ter algo escrito, mostrar um portfólio mínimo. É ainda melhor quando esses projetos não são feitos apenas para si, mas para clientes como freelancer.

Após os primeiros projetos, você já pode preparar o currículo e enviá-lo a todas as empresas que têm posições para juniores. As entrevistas fornecerão uma compreensão do que as empresas precisam. Mais cedo ou mais tarde, alguém irá lhe contratar, mesmo que seja uma empresa pequena. Posteriormente, essa experiência de trabalho lhe dará a oportunidade de entrar em uma empresa maior e mais interessante.

Valentin Dombrovsky: Aliás, estamos preparando os alunos em nossos cursos para que eles tenham seu próprio projeto em 10 semanas de aprendizado. Além disso, treinamos a habilidade de desenvolvimento em equipe. Esses são exatamente os soft skills de que Zlata falou.

Aleksey Shtyrnyayev: Com a experiência, digo que a primeira experiência pode ser difícil de encontrar. Quando você procura por um a dois meses — isso é normal. Se você envia currículos para todas as empresas, participa de entrevistas, no terceiro mês você certamente encontrará algo.

Valentin Dombrovsky: Você pode desenvolver seus próprios projetos ou pegar projetos simples como freelancer e, paralelamente, enviar currículos.

Quais são as perspectivas para um desenvolvedor Python?

Zlata Obukhovskaya: Um desenvolvedor Python pode seguir diversas direções. Ele pode entrar na área de testes, continuar a se desenvolver até se tornar um arquiteto sênior, ou até mesmo ir para a gestão. Existem diferentes tipos de gerentes técnicos, e é possível chegar ao alto escalão. Você pode se desenvolver em ciência de dados, DevOps, automação de testes ou machine learning.

Valentin Dombrovsky: Em resumo, há inúmeras opções e possibilidades, incluindo nossos cursos. Não é necessário ter muito conhecimento prévio, mas é desejável abranger um espectro mais amplo depois, porque quanto mais você souber, melhor será para você.

***

Esta é apenas uma parte da edição. Python Junior. A versão completa do episódio pode ser ouvida.

Ou até mesmo assistida:

Por que no hosting comum a administração do PrestaShop é lenta, e no seu não é?

RSS do podcast

Obrigado por ler, ouvir ou assistir.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster