Python para la Web: lo que un junior necesita saber para trabajar y desarrollarse

Hemos hecho un resumen condensado con las ideas principales del Python Junior Podcast: en él discutimos por dónde empezar y a dónde dirigirse para un desarrollador principiante en Python. Últimamente hemos tenido mucho contenido para niveles intermedios y seniors, pero este episodio es definitivamente para principiantes.

Python para la Web: lo que un junior necesita saber para trabajar y desarrollarse

Temas principales:

  • ¿Qué conocimientos necesita un programador principiante para dedicarse a
    el desarrollo web?
  • ¿Qué esperan los empleadores de los desarrolladores?
  • ¿Qué hacer para encontrar trabajo sin experiencia?
  • ¿Cómo puede evolucionar un desarrollador de Python?

Python Junior Podcast — un podcast sobre programación para quienes desean comprender mejor Python. Los episodios son conducidos por los evangelistas de la comunidad MoscowPython y los instructores de los cursos Learn Python.

Los participantes de la conversación fueron:

  • Valentin Dombrovskiy,cofundador de MoscowPython
  • Zlata Obukhovskaya, team lead en NVIDIA
  • Grigory Petrov, evangelista de MoscowPython
  • Aleksey Shternyayev, desarrollador en FinEx, instructor de los cursos Learn
    Python

¿Por qué Python es bueno para el desarrollo web?

Valentin Dombrovskiy: ¿Por qué Python es particularmente adecuado para el desarrollo web? ¿Por qué no PHP o JavaScript, por ejemplo?

Grigory Petrov: No hay muchas opciones. A pesar de que en la Web moderna se puede, de hecho, crear aplicaciones de una sola página o aplicaciones web progresivas utilizando solo tecnologías de frontend, y JavaScript, sigue siendo demasiado complicado, se indexa mal y requiere desarrolladores altamente capacitados.

Si queremos crear un sitio web o un servicio, utilizamos un enfoque combinado: tenemos algún backend que realiza la lógica y crea páginas web, y algún frontend que dibuja estas páginas web en el navegador. Y cuando necesitamos ensamblar todo esto rápidamente, las opciones son limitadas.

Analicemos las posibles alternativas.

  • C#. Microsoft realmente ha hecho un gran trabajo, han creado .NET Core y la están promoviendo de diversas maneras. Sin embargo, primero, es una tecnología nueva multiplataforma y aún no está todo pulido. En segundo lugar, es realmente caro, hay pocos desarrolladores de C# — simplemente porque no es popular.
  • Java. Es complicado. Hacer un sitio web normal en Java no son 10 líneas de código, como en Python. Hay mucho código, hay marcos de trabajo y es necesario conocer la especificidad de la configuración de los servidores Java. En resumen, un montón de dolor y sufrimiento.
  • PHP. En las últimas versiones es maravilloso. Incluso diría que PHP 7.2 no es inferior a Python. Pero no se puede simplemente usar PHP 7.2. Si un desarrollador ordinario, que no es de los mejores, hace un sitio en PHP, no escribirá solo en 7.2: seguirá teniendo que leer algunos libros de texto, tutoriales, hay un montón de código legado, y eso no es muy bueno.
  • JavaScript y Node.js. Es magnífico y muy moderno tener un solo lenguaje tanto en el frontend como en el backend. Aunque no es muy estable. Node.js es algo bueno, pero es problemático implementarlo en producción de manera que no se caiga y funcione de forma estable. Además, si queremos escribir código de calidad en JavaScript, no necesitamos JavaScript, sino TypeScript. Sin embargo, TypeScript resulta ser sorprendentemente complejo, al verlo, a un desarrollador promedio se le hierve la cabeza.

Dejemos de lado Ruby, Haskell, Erlang y otras cosas de nicho, y nos queda... Python. Un lenguaje con una sintaxis consistente, una biblioteca estándar uniforme, la mejor documentación, populares frameworks ligeros y el súper popular conjunto Django.

Así que, a pesar de la amplísima elección, si tenemos desarrolladores comunes, no de los mejores, somos un negocio común, que quiere hacer sitios comunes, y no tenemos un departamento de desarrollo de 50 personas, entonces elegimos Python.

Qué conocimientos se necesitan para ingresar a la profesión

Zlata Obukhovskaya: Creo que hay que conocer bien un framework y saber qué otros hay y cuándo se utilizan. Dónde está Tornado, dónde Django, dónde Flask, dónde aiohttp, etcétera.
Es útil saber que existe algo como los protocolos. En particular, el conocimiento del protocolo http es fundamental para construir aplicaciones web.

Además, al menos hay que tener una idea aproximada de cómo se organiza el frontend en los proyectos web: qué son HTML, CSS, JS.

Aleksey Shternyaev: Y saber dónde encontrar la documentación. Eso es lo más importante.

Grigory Petrov: Aquí estamos pisando terreno muy inestable. Si hemos tenido la mala suerte de empezar a estudiar seriamente el frontend moderno, será aproximadamente 10 veces más complicado que el backend en Python. Un desarrollador principiante necesita limitar su enfoque para comenzar a aprender HTML, pero sin caer en todos esos div, span, float, cómo se alinea y organiza todo.

Aleksey Shternyaev: Se necesita un curso básico de Bootstrap. Y fundamentos de HTML.

En el primer año no deberías profundizar en los marcos de JS (si te enfocas en el backend). En el curso básico de Bootstrap ya hay módulos listos: si quieres un slider, haz un slider; si quieres un menú flotante, haz un menú flotante.

Zlata Obukhovskaya: Creo que al estudiar frontend se puede profundizar, en particular, en cómo se entrega la estática a las aplicaciones web. Así, el desarrollador pasa gradualmente a entender cómo está estructurada la arquitectura de las aplicaciones web y cómo funcionan en producción.

Grigory Petrov: Sí, recomendaría de inmediato en caso de que hayas elegido Python como lenguaje de desarrollo backend y, por ejemplo, Django como framework: Django tiene documentación en Django Book, realmente es genial, contiene todo lo que mencionó Zlata, y es realmente buena para los principiantes.

Aleksey Shternyaev: También, para un inicio rápido, puede servir algún tutorial de Django Girls, si el objetivo es estudiar precisamente Django. Es un tutorial donde en un día puedes cubrir los aspectos más básicos, entender los fundamentos y lo que es capaz de hacer el framework.

Valentin Dombrovskiy: Preparándonos para la grabación del podcast, elaboramos una lista de lo que necesita un programador en Python para el desarrollo web, con lo cual resumimos lo dicho anteriormente.

¿Qué incluye la base para el desarrollo web en Python?

  • Frameworks web como Django, Flask, aiohttp, Tornado, etc. (y conocer la existencia de otros).
  • Protocolos y API: principalmente http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM y migraciones, bases de datos relacionales, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Fundamentos de HTML, CSS, Bootstrap, así como frameworks de JS y JQuery.
  • Principios de funcionamiento de aplicaciones en producción, pruebas, pruebas unitarias, pruebas automatizadas, sistemas de control de versiones, git.

¿Son necesarios los algoritmos para un junior?

Zlata Obukhovskaya: Al principio no es necesario conocer algoritmos, estos aparecerán gradualmente en la cabeza si trabajas en desarrollo el tiempo suficiente. Conozco a un montón de buenos ingenieros que no tuvieron un buen curso formal de algoritmos.

Grigory Petrov: Quiero echarle leña al fuego. ¿De dónde proviene nuestra inclinación hacia los algoritmos?

Actualmente no tenemos una educación fundamental en algoritmos, no sabemos cómo formar a los programadores, no hay base técnica.

Esto se intenta hacer, pero aquí tenemos la historia de Hogwarts: no podemos crear una escuela de magos si no tenemos un solo mago. Entonces, ¿qué debe hacer una universidad que recibe solicitudes de: "Empiecen a formar programadores", cuando no tienen programadores porque todos están trabajando en Mail.ru, Rambler y Yandex, donde están bien?

En la universidad observan y dicen:
— Está bien, programación. Vamos a encontrar un área de conocimiento relacionada e invitemos a especialistas de allí. Invitemos a periodistas que saben escribir textos, ingenieros eléctricos que sepan hacer esquemas eléctricos y matemáticos que dominen los algoritmos.

Al final resulta que esto es tan razonable como enseñar física de partículas a un constructor solo porque los ladrillos y el cemento están compuestos de partículas elementales.

Sin embargo, no se habla sobre el propio cemento y el ladrillo porque el físico, que intenta enseñar al constructor, no sabe construir casas. Al final, obtenemos un constructor que puede describir perfectamente cómo "funciona el cemento", pero nunca lo ha visto y no sabe cómo hacer nada con él.

Los algoritmos y las estructuras de datos son muy buenos, pero es un área de aplicación muy pequeña. Son extremadamente necesarios, por ejemplo, si estás escribiendo un motor de juegos, un compilador o un protocolo de red.

La mayoría de los programadores resuelven problemas de negocio donde no se necesitan algoritmos y estructuras de datos.

Allí, la matemática más complicada es sumar dos veces y luego dividir. Se requieren conocimientos completamente diferentes. Para resolver problemas de negocio, principalmente se necesitan conocimientos aplicados, no fundamentales.

A un desarrollador principiante le conviene tener una idea del negocio y de cómo montar rápidamente las estructuras necesarias a partir de bloques listos, cómo depurarlas, cómo hacer para que no se desmoronen, saber por qué se desmoronan, qué ocurre cuando cambian los requisitos y el programa empieza a "asentarse en la base", como una casa después de la lluvia.
Estas son las cosas aplicadas y la comprensión de cómo escribir software. Necesita saber que, además del depurador, tiene un conjunto de herramientas que le mostrarán exactamente dónde se está ralentizando el programa.

Valentin Dombrovskiy: Se me ocurrió esta comparación: es una traducción del lenguaje de los negocios al lenguaje que se puede comunicar con un ordenador. Es decir, un programador es una especie de lingüista específico.

Grigory Petrov: A las empresas les hace falta un escritor, no un lingüista. Un escritor no necesita saber por qué hace mil años esa palabra se transformó en esta. Tiene que saber aplicar esas palabras.

Qué se necesita para encontrar el primer trabajo como desarrollador

Aleksey Shternyaev: Probablemente no hay una receta universal para preparar a un junior.

Si llegas a alguna empresa, no te contratarán por saber Django, JSON y un poco de algoritmos. Lo más probable es que te tomen en cuenta por las habilidades que esta empresa necesita aquí y ahora.

Hay muchas empresas y todas tienen diferentes requisitos. No existe un volumen de conocimientos universal que debas tener para preparar un currículum y buscar empleo.

Grigory Petrov: Cuando en VoxImplant buscábamos a algunos juniors, nuestro director técnico formuló el requisito básico así: la persona debe ser capaz de resolver problemas. Es evidente que un junior no siempre lo hará de manera eficiente, ni de la mejor forma, ni siempre correctamente, pero en ideal se le plantea una tarea, se esfuerza y la resuelve. Esta es la habilidad que los empleadores buscan principalmente.

Zlata Obukhovskaya: Las personas que buscan trabajo, proveniendo de otros campos, tienen cierta ventaja desde el punto de vista empresarial, porque ya han recorrido algún camino y saben resolver problemas rápidamente. Estas son habilidades blandas, yo las llamaría incluso cultura laboral. A menudo, los graduados universitarios aún no han desarrollado esta cultura laboral.

Pero me gustaría intentar dar alguna receta a los principiantes.

Los primeros pasos para un desarrollador principiante

Zlata Obukhovskaya: Lo primero es tener algún proyecto propio, porque es necesario incluir algo en el currículum, mostrar un portafolio mínimo. Es mejor cuando estos proyectos no son solo para uno mismo, sino que se han hecho en freelance, para alguien.

Después de los primeros proyectos, ya puedes hacer un currículum y enviarlo a todas las empresas donde haya posiciones para juniors. Las entrevistas te darán una idea de lo que necesitan las empresas. Tarde o temprano, alguien te contratará, aunque sea en una empresa pequeña. Posteriormente, esa experiencia laboral te permitirá acceder a una empresa más grande y más interesante.

Valentin Dombrovskiy: Por cierto, en nuestros cursos preparamos a los estudiantes para que tengan su propio proyecto en 10 semanas de formación. Además, entrenamos la habilidad de trabajo en equipo. Estas son precisamente las soft skills de las que hablaba Zlata.

Aleksey Shternyaev: Por experiencia, puedo decir que la búsqueda del primer trabajo puede llevar mucho tiempo. Si buscas durante uno o dos meses, eso es normal. Si envías tu currículum a todas las empresas y asistes a entrevistas, seguro que encuentras algo en el tercer mes.

Valentin Dombrovskiy: Puedes desarrollar tus propios proyectos o aceptar proyectos simples en freelance mientras envías tu currículum.

¿Cuáles son las perspectivas para un desarrollador de Python?

Zlata Obukhovskaya: Un desarrollador de Python puede ir a cualquier parte. Puede ir a pruebas, seguir desarrollándose hasta convertirse en arquitecto senior. O incluso en gestión. Los gerentes técnicos son diversos, y se puede avanzar hasta la alta dirección. También se puede crecer en ciencia de datos, DevOps, pruebas automatizadas o aprendizaje automático.

Valentin Dombrovskiy: En general, hay muchas opciones y oportunidades, incluidos nuestros cursos. No se necesita mucho conocimiento al principio, pero es recomendable abarcar un espectro más amplio después, porque cuanto más sepas, mejor será para ti.

***

Esto es solo una parte del lanzamiento. Python Junior. La versión completa del episodio se puede escuchar.

O incluso ver:

Reproducir video

RSS del podcast

Gracias por leer, escuchar o ver.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster