Python para a Web: o que un júnior necesita saber para traballar e desenvolverse

Fixemos unha pequena transcrición coas reflexións principais do podcast Python Junior: nel comentamos por onde comezar e por onde ir como desenvolvedor principiante de Python. Ultimamente temos moito contido para medios e maiores, pero este episodio é definitivamente para xuvenís.

Python para a Web: o que un júnior necesita saber para traballar e desenvolverse

Principais temas:

  • Que coñecementos necesita para practicar un programador novato
    desenvolvemento web?
  • Que esperan os empresarios dos desenvolvedores?
  • Que facer para atopar un traballo sen experiencia?
  • Como pode desenvolverse un programador de Python?

Python Junior Podcast é un podcast de programación para aqueles que queiran entender mellor Python. As emisións son realizadas por evanxelistas comunitarios MoscowPython e profesores de cursos Aprende Python.

Participantes na conversa:

  • Valentín Dombrovsky,cofundador de MoscowPython
  • Zlata Obukhovskaya, Xefe do equipo NVIDIA
  • Grigori Petrov, evanxelista MoscowPython
  • Alexey Shtyrnyaev, desenvolvedor en FinEx, profesor de cursos de aprendizaxe
    Pitão

Por que Python é bo para o desenvolvemento web

Valentín Dombrovsky: Por que Python é axeitado para o desenvolvemento web? Por que non PHP ou JavaScript, por exemplo?

Grigory Petrov: Polo tanto, non hai moita opción. A pesar do feito de que na web moderna podes realmente construír unha aplicación dunha soa páxina ou unha aplicación web progresiva sen un backend, utilizando exclusivamente tecnoloxías front-end, usando JavaScript, aínda é demasiado complicado, está mal indexado e require desenvolvedores xeniais.

Se queremos facer un sitio web ou servizo, utilizamos un enfoque combinado: algún backend implementa a lóxica e crea páxinas web, e outro frontend debuxa estas páxinas web no navegador. E cando necesitamos xuntar todo rapidamente en algo, realmente non temos outra opción.

Vexamos as opcións posibles.

  • C#. Microsoft é realmente xenial, fixeron .NET Core e están a promocionalo de todos os xeitos posibles. Pero, en primeiro lugar, esta é unha nova tecnoloxía multiplataforma, e aínda non todo está ben alí. En segundo lugar, é moi caro, hai poucos desenvolvedores de C#, simplemente porque é impopular.
  • Java. É complicado. Crear un sitio web normal en Java non leva 10 liñas de código, como en Python. Este é moito código, estes son frameworks e necesitas coñecer os detalles específicos da configuración de servidores Java. En xeral, dor e sufrimento continuos.
  • PHP. Nas últimas versións é marabilloso. Incluso digo isto: PHP 7.2 non é peor que Python. Pero non pode simplemente incorporarse e usar PHP 7.2. Se un programador común non superior fai un sitio web en PHP, non escribirá só en 7.2: aínda terá que ler algúns libros de texto, titoriais, hai moito código legado por todas partes, e isto non é moi bo.
  • JavaScript e Node.js. É marabilloso e moi moderno cando hai un idioma tanto no front-end como no back-end. Simplemente non moi estable. Node.js é algo bo, pero é problemático implementalo en produción para que non se bloquee e funcione de forma estable. Ademais, se queremos escribir código JavaScript de calidade, non necesitamos JavaScript, senón TypeScript. Pero TypeScript é inesperadamente complexo e os cerebros do programador medio ferven cando o ven.

Imos deixar fóra Ruby, Haskell, Erlang e outras cousas de nicho, e quedamos con... Python. Unha linguaxe cunha sintaxe consistente, unha biblioteca estándar uniforme, a mellor documentación, marcos lixeiros populares e o mega-popular Django.

Acontece que, a pesar da opción máis ampla, se temos desenvolvedores comúns, non de alto nivel, somos unha empresa común que quere facer sitios web comúns, non temos un departamento de desenvolvemento para 50 persoas, entón tomamos Python.

Que coñecementos son necesarios para entrar na profesión?

Zlata Obukhovskaya: Creo que cómpre coñecer ben un marco e saber cales existen outros e cando se usan. Onde está Tornado, onde está Django, onde está Flask, onde está aiohttp e así por diante.
Será útil saber que existen protocolos. En particular, o coñecemento do protocolo http é fundamental para crear aplicacións web.

Tamén cómpre comprender, polo menos, como funciona a interface nos proxectos web: que é HTML, CSS, JS.

Alexey Shtyrnyaev: E saber onde está a documentación. É o máis importante.

Grigory Petrov: Aquí estamos pisando un terreo moi inestable. Se non temos sorte e dalgunha maneira empezamos a estudar seriamente o frontend moderno, entón será unhas 10 veces máis complicado que o backend en Python. Un desenvolvedor novato debe limitar o seu foco para poder comezar a aprender HTML, pero non perderse en todos estes divs, spans, floats, como todo está aliñado e aliñado.

Alexey Shtyrnyaev: Necesitas un curso básico de Bootstrap. E os conceptos básicos de HTML.

No primeiro ano, non deberías afondar nos frameworks JS (se te centras no backend). O curso básico de Bootstrap xa ten módulos preparados: se queres un control deslizante, fai un control deslizante; se queres un menú flotante, fai un menú flotante.

Zlata Obukhovskaya: Creo que mentres estudas o frontend, podes mergullarte, en particular, en como se lles dá xeralmente a estática ás aplicacións web. Así, o programador avanza sen problemas para comezar a aprender como funciona en principio a arquitectura das aplicacións web e como viven en produción.

Grigory Petrov: Si, recomendareino de inmediato no caso de que escolleses Python como linguaxe de desenvolvemento de backend e, por exemplo, Django como framework: Django ten documentación no Django Book, é moi xenial, contén todo o que dixo Zlata, ela realmente bo para un principiante.

Alexey Shtyrnyaev: Algunhas Django Girls tamén son adecuadas para comezar rápido se o teu obxectivo é aprender Django. Este é un titorial onde nun día podes pasar por riba, comprender os conceptos básicos e do que é capaz o framework.

Valentín Dombrovsky: Como preparación para gravar o podcast, elaboramos unha lista do que necesita un programador de Python para o desenvolvemento web, que resume o que dixemos anteriormente.

O que se inclúe nos conceptos básicos para o desenvolvemento web en Python

  • Frameworks web Django, Flask, aiohttp, Tornado, etc. (e coñecer a existencia doutros).
  • Protocolos e API: principalmente http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM e migracións, bases de datos relacionais, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Conceptos básicos de HTML, CSS, Bootstrap, así como marcos JS e JQuery.
  • Principios de funcionamento da aplicación en produción, probas, probas unitarias, autotests, sistemas de control de versións, git.

Os mozos necesitan algoritmos?

Zlata Obukhovskaya: Ao principio, non necesitas coñecer os algoritmos; aparecerán gradualmente na túa cabeza se te dedicas ao desenvolvemento o tempo suficiente. Coñezo un montón de bos enxeñeiros que non tiveron un bo curso de algoritmos formais.

Grigory Petrov: Quero engadir combustible ao lume. De onde vén o noso desexo de algoritmos?

Actualmente non temos unha formación fundamental en algoritmos, non sabemos formar programadores, non temos unha base técnica.

Están tentando facelo, pero aquí temos a historia de Hogwarts: non podemos crear unha escola para magos mentres non teñamos un só mago. Polo tanto, que debería facer unha universidade cando lles preguntan: "Comezar a formar programadores", pero non teñen programadores, porque todos traballan en Mail.ru, Rambler e Yandex, están felices alí?

A universidade mira e di:
- Vale, programación. Busquemos algunha área de coñecemento relacionada e invitemos especialistas de alí. Imos convidar a xornalistas que poidan escribir copias, enxeñeiros eléctricos que poidan facer circuítos eléctricos e matemáticos que poidan usar algoritmos.

Ao final, resulta que isto é tan práctico como ensinarlle a un constructor física de partículas só porque o ladrillo e o cemento están feitos de partículas elementais.

Ao mesmo tempo, non falan eles mesmos de cemento e ladrillos, porque o físico que intenta formar un constructor non sabe facer casas. Como resultado, obtemos un constructor que é capaz de describir perfectamente como "funciona o cemento", pero nunca o viu e non sabe como facer nada con el.

Os algoritmos e as estruturas de datos son moi bos, pero esta é unha área de aplicación moi pequena. Necesítanse con urxencia, por exemplo, se está a escribir un motor de xogos, un compilador ou un protocolo de rede.

A maioría dos programadores resolven problemas empresariais onde non se necesitan algoritmos e estruturas de datos.

A matemática máis difícil alí é sumar dúas veces e despois dividir. Require coñecementos completamente diferentes. A resolución de problemas empresariais require principalmente coñecementos aplicados e non fundamentais.

É mellor que un desenvolvedor novato teña unha comprensión dos negocios e como montar correctamente e rapidamente as estruturas necesarias a partir de bloques preparados, como depuralos, como asegurarse de que non se desmoronen, saber por que se desmoronan, que pasa cando os requisitos cambian e o programa comeza a "asentarse nos cimentos" como unha casa despois da choiva.
Estas son cousas prácticas e unha comprensión de como escribir software. Debe saber que, ademais do depurador, ten un conxunto de ferramentas que mostrarán exactamente onde se está a desacelerar o programa.

Valentín Dombrovsky: Esta comparación veume á cabeza: trátase dunha tradución do idioma dos negocios a un idioma no que te poidas comunicar cun ordenador. É dicir, un programador é unha especie de lingüista específico.

Grigory Petrov: As empresas necesitan un escritor, non un lingüista. O escritor non precisa saber por que hai mil anos esta palabra se transformou nisto. Debe ser capaz de aplicar estas palabras.

O que necesitas para atopar o teu primeiro traballo como programador

Alexey Shtyrnyaev: Probablemente non haxa unha receita universal de como cociñar junior.

Se chegas a algunha empresa, non te contratarán porque coñezas Django, JSON e algúns algoritmos. Probablemente será contratado para as habilidades que esta empresa necesita aquí e agora.

Hai moitas empresas, e todas teñen requisitos diferentes. Non existe unha cantidade tan universal de coñecementos que hai que obter para preparar un currículo e buscar un traballo.

Grigory Petrov: Cando en VoxImplant buscabamos varios enxeñeiros, o noso director técnico formulou o requisito básico do seguinte xeito: unha persoa debe ser capaz de resolver problemas. Está claro que un júnior non sempre o fará de forma eficaz, nin da mellor maneira nin sempre correctamente, pero o ideal é que lle deas unha tarefa a unha persoa, que córdase e resólvaa. Esta é a habilidade que buscan principalmente os empresarios.

Zlata Obukhovskaya: As persoas que buscan traballo noutros ámbitos teñen algunha vantaxe dende o punto de vista empresarial porque xa teñen percorrido algún camiño e son capaces de resolver problemas rapidamente. Son habilidades blandas, incluso lle chamaría cultura laboral. Moitas veces, os titulados universitarios aínda non desenvolveron esta cultura laboral.

Pero aínda así gustaríame tentar dar algún tipo de receita aos principiantes.

Primeiros pasos para un programador novato

Zlata Obukhovskaya: O primeiro é que este aínda é algún tipo de proxecto propio, porque necesitas escribir algo no teu currículo e mostrar unha carteira mínima. É máis xenial cando estes proxectos non están feitos para ti, senón como un proxecto autónomo, para alguén.

Despois dos primeiros proxectos, xa se pode facer un currículo e envialo a todas as empresas onde haxa prazas de xuño. As entrevistas proporcionarán información sobre o que necesitan as empresas. Tarde ou cedo alguén te contratará, polo menos nunha pequena empresa. Posteriormente, esta experiencia laboral darache a oportunidade de entrar nunha empresa máis grande e interesante.

Valentín Dombrovsky: Por certo, nos nosos cursos preparamos aos estudantes para ter o seu propio proxecto dentro das 10 semanas de formación. Ademais adestramos habilidades de desenvolvemento de equipos. Estas son exactamente as habilidades suaves das que falou Zlata.

Alexey Shtyrnyaev: Podo dicirche por experiencia que pode levar moito tempo buscar o teu primeiro emprego. Cando estás buscando un mes ou dous, iso é normal. Se envias o teu currículo a todas as empresas, vai ás entrevistas, no terceiro mes seguro que atoparás algo.

Valentín Dombrovsky: Podes cortar os teus propios proxectos ou asumir proxectos autónomos sinxelos e, ao mesmo tempo, enviar o teu currículo.

Que perspectivas ten un programador de Python?

Zlata Obukhovskaya: Un programador de Python pode ir a calquera lugar. Podes entrar en probas e seguir desenvolvendo a un arquitecto senior. Ou mesmo na xestión. Existen diferentes tipos de xestores técnicos, e podes chegar á alta dirección. Podes desenvolverte en ciencia de datos, DevOps, realizar probas automatizadas ou aprendizaxe automática.

Valentín Dombrovsky: En xeral, hai moitas opcións e oportunidades, incluídos os nosos cursos. Non necesitas moitos coñecementos na entrada, pero é recomendable cubrir despois un abano máis amplo, porque canto máis poidas, mellor para ti.

***

Isto é só parte do lanzamento Python Junior. A versión completa do episodio está dispoñible escoita.

Ou incluso mira:

Reproducir vídeo

Podcast RSS

Grazas por ler, escoitar ou ver.

Fonte: www.habr.com

Engadir un comentario