Python para la web: lo que un junior necesita saber para trabajar y crecer

Hicimos un descifrado abreviado con los pensamientos principales de Python Junior Podcast: en él discutimos dónde comenzar y dónde ir a un desarrollador principiante de Python. Recientemente, tenemos una gran cantidad de contenido para personas de mediana y mediana edad, pero este problema es para Jones.




Temas principales:

  • ¿Qué conocimiento necesita hacer un programador novato?
    desarrollo web?
  • ¿Qué esperan los empleadores de los desarrolladores?
  • ¿Qué hacer para encontrar trabajo sin experiencia?
  • ¿Cómo puede desarrollarse un desarrollador de Python?

Python Junior Podcast es un podcast de programación para aquellos que quieren entender mejor Python. Los aires son liderados por los evangelistas de la comunidad MoscowPython y los maestros del curso Learn Python .

La conversación involucró:

  • Valentin Dombrovsky, cofundador de MoscowPython
  • Zlata Obukhovskaya, líder del equipo NVIDIA
  • Grigory Petrov, evangelista de Moscú Pitón
  • Alexey Shtyrnyaev, desarrollador de FinEx, profesor de cursos Learn
    Pitón

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


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

Grigory Petrov: Entonces realmente no hay elección. A pesar del hecho de que en la Web moderna es posible prácticamente sin un back-end, puramente en tecnologías front-end, en JavaScript, ensamblar una aplicación de página única o una aplicación web progresiva, todavía es demasiado complicado, está mal indexado y requiere desarrolladores geniales.

Si queremos crear un sitio web o servicio, utilizamos un enfoque combinado: tenemos algún tipo de backend que implementa la lógica y crea páginas web, y algunos frontend dibujan estas páginas web en un navegador. Y cuando necesitamos recopilar rápidamente todo esto en algo, entonces no hay muchas opciones.

Veamos las posibles opciones.

  • C # Microsoft es realmente genial, hicieron .NET Core y lo están promocionando en todos los sentidos. Pero, en primer lugar, esta es una nueva tecnología multiplataforma, y ​​no todo está funcionando bien allí. En segundo lugar, es realmente costoso, hay pocos desarrolladores de C #, simplemente porque es impopular.
  • Java Esto es complicado Hacer un sitio normal en Java no son 10 líneas de código, como en Python. Este es un montón de código, estos son marcos, y usted necesita conocer los detalles de la configuración de servidores Java. En general, dolor y sufrimiento continuos.
  • PHP En versiones recientes es maravilloso. Incluso diré esto: PHP 7.2 no es peor que Python. Pero no puede simplemente tomar y usar PHP 7.2. Si un desarrollador normal y no superior crea un sitio en PHP, no solo escribirá en 7.2: aún tiene que leer algunos libros de texto, tutoriales, en todas partes un montón de código heredado, y esto no es muy bueno.
  • JavaScript y Node.js. Esto es maravilloso y muy moderno cuando un idioma está tanto en la interfaz como en el servidor. Solo que no muy estable. Node.js es algo bueno, pero es problemático implementarlo en producción para que no se caiga y funcione de manera estable. Además, si queremos escribir código JavaScript de calidad, no necesitamos JavaScript, sino TypeScript. Pero TypeScript es inesperadamente complejo, a la vista, un desarrollador ordinario hierve.

Omitamos Ruby, Haskell, Erlang y otras cosas de nicho, y tenemos ... Python. Un lenguaje con una sintaxis consistente, una biblioteca estándar uniforme, la mejor documentación, marcos ligeros populares, la megacomputadora Django.
Resulta que, a pesar de la opción más amplia, si tenemos desarrolladores comunes, no los mejores, somos un negocio regular que quiere crear sitios comunes, no tenemos un departamento de desarrollo para 50 personas, entonces tomamos Python.

¿Qué conocimiento se necesita para ingresar a la profesión?


Zlata Obukhovskaya: Creo que necesita conocer bien un marco, y saber qué más sucede y cuándo se usan. Dónde está Tornado, dónde está Django, dónde está Flask, dónde está aiohttp, etc.
Es útil saber que existen protocolos. En particular, el conocimiento del protocolo http es fundamental para crear aplicaciones web.

Aún así, debe imaginar al menos aproximadamente cómo está organizada la interfaz en proyectos web: qué es HTML, CSS, JS.

Alexey Shtyrnyaev: Y sepa dónde está la documentación. Esto es lo más importante.

Grigory Petrov: Aquí pisamos suelos muy inestables. Si no tenemos suerte y de alguna manera comenzamos a estudiar seriamente la interfaz moderna, será aproximadamente 10 veces más difícil que el backend de Python. Un desarrollador novato necesita limitar su enfoque para que comience a aprender HTML, pero no caer en todos estos divs, span, float, cómo todo está alineado y alineado allí.

Alexey Shtyrnyaev: Necesitamos un curso básico de Bootstrap. Y los conceptos básicos de HTML.
En el primer año, no debe profundizar en los marcos JS (si se enfoca en el back-end). El curso básico de Bootstrap ya tiene módulos listos: si desea un control deslizante, cree un control deslizante, si desea un menú flotante, cree un menú flotante.
Zlata Obukhovskaya: Creo que estudiar el front-end puede sumergirse, en particular, en cómo la estática se da generalmente a las aplicaciones web. Entonces, el desarrollador comienza a aprender cómo, en principio, se organiza la arquitectura de las aplicaciones web y cómo viven de la producción.

Grigory Petrov: Sí, lo recomendaré de inmediato en caso de que elija Python como el lenguaje de fondo del desarrollo y, por ejemplo, Django como marco: Django tiene documentación en el Libro de Django, es realmente genial, es todo lo que dijo Zlata Ella es realmente buena para un principiante.

Alexey Shtyrnyaev: Otro Django Girls es adecuado para un comienzo rápido, si el objetivo es estudiar Django. Este es un tutorial en el que en un día puedes subir, comprender los conceptos básicos y de lo que es capaz el framework.

Valentin Dombrovsky: Preparándonos para grabar un podcast, hicimos una lista de lo que un programador de Python necesita para el desarrollo web, que resume lo que se dijo anteriormente.

Lo que se incluye en la base para el desarrollo web de Python


  • Marcos web Django, Flask, aiohttp, Tornado, etc. (y conocer la existencia del resto).
  • Protocolos y API: principalmente HTTP, JSON-RPC, Protocol Buffers, gRPC.
  • ORM y migraciones, bases de datos relacionales, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Los conceptos básicos de HTML, CSS, Bootstrap, así como los marcos JS y JQuery.
  • Los principios de las aplicaciones en producción, pruebas, pruebas unitarias, pruebas automáticas, sistemas de control de versiones, git.

¿El Junior necesita algoritmos?


Zlata Obukhovskaya: Al principio, no necesita conocer los algoritmos, ellos mismos aparecerán gradualmente en su cabeza si participa en el desarrollo durante mucho tiempo. Conozco a un montón de buenos ingenieros que no tenían un buen curso formal en algoritmos.

Grigory Petrov: Quiero agregar petróleo al fuego. Entonces, ¿de dónde viene nuestro ansia de algoritmos?

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

Están tratando de hacerlo, pero aquí tenemos la historia de Hogwarts: no podemos hacer una escuela de magos hasta que tengamos un solo mago. Por lo tanto, ¿a qué debe acudir y preguntar la universidad: "Comience a entrenar programadores", pero no tienen programadores, porque todos trabajan en Mail.ru, Rambler y Yandex, son buenos allí?

En la universidad miran y dicen:
- Ok, programación. Busquemos algún tipo de campo de conocimiento relacionado e invitemos a especialistas de allí. Invitemos a periodistas que pueden escribir textos, ingenieros eléctricos que saben cómo hacer circuitos eléctricos y matemáticos que saben escribir algoritmos.

Como resultado, resulta que es tan conveniente como enseñarle a un constructor la física de las partículas elementales solo porque el ladrillo y el cemento están compuestos de partículas elementales.

Al mismo tiempo, no hablan sobre el cemento y el ladrillo en sí, porque un físico que está tratando de capacitar a un constructor no sabe cómo construir una casa. Como resultado, obtenemos un constructor que es capaz de pintar perfectamente cómo funciona el "cemento", pero nunca lo ha visto y sabe cómo sacarle provecho.

Los algoritmos y las estructuras de datos son muy buenos, pero esta es un área de aplicación muy pequeña. Se necesitan con urgencia, por ejemplo, si escribe un motor de juego, compilador, protocolo de red.

La mayoría de los programadores resuelven problemas empresariales en los que no se necesitan algoritmos ni estructuras de datos.


La matemática más difícil es doblar dos veces y luego dividir. Necesitan conocimientos completamente diferentes. La resolución de problemas comerciales requiere un conocimiento principalmente aplicado, más que fundamental.

Es mejor para un desarrollador novato tener una idea sobre el negocio y cómo ensamblar correcta y rápidamente las estructuras necesarias a partir de bloques prefabricados, cómo depurarlos, cómo asegurarse de que no se desmoronen, saber por qué se desmoronan, qué sucede cuando los requisitos cambian y el programa comienza "Establecerse en los cimientos", 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 mostrarán exactamente dónde se ralentiza el programa.

Valentin Dombrovsky: Se me ocurrió esta comparación: esta es una traducción del idioma de los negocios a un idioma en el que puede comunicarse con una computadora. Es decir, el programador es una especie de lingüista específico.

Grigory Petrov: Las empresas necesitan un escritor, no un lingüista. El escritor no necesita saber por qué esta palabra se transformó en esto hace mil años. Necesita poder aplicar estas palabras.

Lo que necesitas para encontrar un primer trabajo como desarrollador


Alexey Shtyrnyaev: Probablemente, no hay una receta universal para la que debas preparar a un junior.
Si vienes a alguna compañía, no serás tomado por el hecho de que conoces Django, JSON y algunos algoritmos. Lo más probable es que sea tomado por las habilidades que esta compañía necesita aquí y ahora.
Hay muchas compañías, y cada una tiene requisitos diferentes. No existe tal cantidad de conocimiento universal que deba obtenerse para preparar aún más un currículum e ir a buscar trabajo.

Grigory Petrov: Cuando buscábamos varios jones en VoxImplant, nuestro director técnico formuló el requisito básico de la siguiente manera: una persona debe ser capaz de resolver problemas. Está claro que June no lo hará siempre de manera eficiente, no de la mejor manera y no siempre de manera correcta, pero lo ideal es que establezca una tarea para una persona, la pone en tensión y la resuelve. Esta es la habilidad que los empleadores buscan principalmente.

Zlata Obukhovskaya: Las personas que buscan trabajo, que se mudan de otras áreas, tienen alguna ventaja desde el punto de vista empresarial, porque ya han avanzado y pueden resolver problemas rápidamente. Estas son habilidades blandas, lo llamaría incluso una cultura de trabajo. A menudo, los estudiantes de posgrado de esta cultura laboral aún no se han desarrollado.

Pero todavía me gustaría intentar dar alguna receta para principiantes.

Primeros pasos para un desarrollador novato


Zlata Obukhovskaya: El primero sigue siendo algún tipo de proyecto propio, porque debes escribir algo en el currículum y mostrar la cartera mínima. Hace más frío cuando estos proyectos no están hechos para ellos mismos, sino en forma independiente, para alguien.

Después de los primeros proyectos, ya es posible hacer un currículum vitae y enviarlo a todas las empresas donde haya puestos en junio. Las entrevistas darán una idea de lo que las empresas necesitan. Tarde o temprano, alguien lo llevará, al menos a una pequeña empresa. Posteriormente, esta experiencia laboral le dará la oportunidad de ingresar a la empresa cada vez más interesante.

Valentin Dombrovsky: Por cierto, estamos preparando a los estudiantes en los cursos para que tengan su propio proyecto durante 10 semanas de capacitación. Además, entrenamos la habilidad del desarrollo del equipo. Estas son solo las habilidades blandas de las que Zlata habló.

Alexey Shtyrnyaev: Por experiencia, diré que puedes buscar un primer trabajo durante mucho tiempo. Cuando busca uno o dos meses, esto es normal. Si envía un currículum a todas las empresas, vaya a entrevistas, en el tercer mes definitivamente encontrará algo.

Valentin Dombrovsky: puede cortar sus proyectos o tomar proyectos simples en forma independiente y simultáneamente enviar currículums.

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


Zlata Obukhovskaya: Un desarrollador de Python puede ir a cualquier parte. Puede ir a las pruebas, continuar desarrollándose como arquitecto senior. O incluso en la gestión. Los gerentes técnicos son diferentes, y usted puede convertirse en la alta gerencia. Puede desarrollarse en ciencia de datos, DevOps, ir a pruebas automáticas o aprendizaje automático.

Valentin Dombrovsky: En general, hay muchas opciones, oportunidades también, incluidos nuestros cursos. No necesita tanto conocimiento en la entrada, pero es aconsejable cubrir un rango más amplio, porque cuanto más pueda, mejor para usted.

***

Esto es solo una parte del lanzamiento de Python Junior . Puedes escuchar la versión completa del episodio.

O incluso ver:


Podcast RSS

Gracias por leer, escuchar o mirar.

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


All Articles