Python untuk Web: perkara yang perlu diketahui oleh junior untuk bekerja dan membangun

Kami membuat transkrip pendek dengan pemikiran utama dari Python Junior Podcast: di dalamnya kami membincangkan di mana untuk bermula dan ke mana untuk pergi sebagai pembangun Python pemula. Kebelakangan ini kami mempunyai banyak kandungan untuk pertengahan dan senior, tetapi episod ini pastinya untuk junior.

Python untuk Web: perkara yang perlu diketahui oleh junior untuk bekerja dan membangun

Topik utama:

  • Apakah pengetahuan yang perlu dipraktikkan oleh pengaturcara baru
    pembangunan web?
  • Apakah yang diharapkan oleh majikan daripada pemaju?
  • Apa yang perlu dilakukan untuk mencari pekerjaan tanpa pengalaman?
  • Bagaimanakah pembangun Python boleh berkembang?

Python Junior Podcast ialah podcast pengaturcaraan untuk mereka yang ingin memahami Python dengan lebih baik. Siaran dikendalikan oleh penginjil masyarakat MoscowPython dan guru kursus Belajar Python.

Peserta dalam perbualan:

  • Valentin Dombrovsky,pengasas bersama MoscowPython
  • Zlata Obukhovskaya, Ketua pasukan NVIDIA
  • Grigory Petrov, penginjil MoscowPython
  • Alexey Shtyrnyaev, pembangun di FinEx, guru kursus Belajar
    Python

Mengapa Python bagus untuk pembangunan web

Valentin Dombrovsky: Mengapa Python sesuai untuk pembangunan web? Mengapa tidak PHP atau JavaScript, sebagai contoh?

Grigory Petrov: Jadi tidak banyak pilihan. Walaupun fakta bahawa dalam Web moden anda sebenarnya boleh membina aplikasi halaman tunggal atau aplikasi web progresif tanpa bahagian belakang - semata-mata menggunakan teknologi front-end, menggunakan JavaScript - ia masih terlalu rumit, diindeks dengan buruk dan memerlukan pembangun yang hebat.

Jika kami ingin membuat tapak web atau perkhidmatan, kami menggunakan pendekatan gabungan: sesetengah bahagian belakang melaksanakan logik dan mencipta halaman web, dan beberapa bahagian hadapan melukis halaman web ini dalam penyemak imbas. Dan apabila kita perlu menyusun semuanya dengan cepat pada sesuatu, kita sebenarnya tidak mempunyai pilihan.

Mari lihat pilihan yang mungkin.

  • C#. Microsoft benar-benar hebat, mereka membuat .NET Core dan mempromosikannya dalam setiap cara yang mungkin. Tetapi, pertama sekali, ini adalah teknologi merentas platform baharu, dan belum semuanya lancar di sana. Kedua, ia sangat mahal, terdapat beberapa pembangun C# - semata-mata kerana ia tidak popular.
  • Java. Ia rumit. Membuat laman web biasa di Java tidak memerlukan 10 baris kod, seperti dalam Python. Ini adalah banyak kod, ini adalah rangka kerja, dan anda perlu mengetahui spesifik untuk menyediakan pelayan Java. Secara umum, kesakitan dan penderitaan yang berterusan.
  • PHP. Dalam versi terkini, ia sangat mengagumkan. Saya juga akan mengatakan ini: PHP 7.2 tidak lebih buruk daripada Python. Tetapi anda tidak boleh mengambil dan menggunakan PHP 7.2 sahaja. Jika pembangun biasa, bukan atasan membuat laman web dalam PHP, dia tidak akan menulis hanya dalam 7.2: dia masih perlu membaca beberapa buku teks, tutorial, terdapat banyak kod warisan di mana-mana, dan ini tidak begitu baik.
  • JavaScript dan Node.js. Ia hebat dan sangat moden apabila terdapat satu bahasa di bahagian hadapan dan bahagian belakang. Cuma tidak begitu stabil. Node.js adalah perkara yang baik, tetapi ia adalah bermasalah untuk menggunakan ia dalam pengeluaran supaya ia tidak ranap dan berfungsi dengan stabil. Selain itu, jika kami ingin menulis kod JavaScript yang berkualiti, kami tidak memerlukan JavaScript, tetapi TypeScript. Tetapi TypeScript adalah rumit secara tidak dijangka, dan otak pembangun biasa mendidih apabila mereka melihatnya.

Mari tinggalkan Ruby, Haskell, Erlang dan barangan khusus lain, dan kita tinggal dengan... Python. Bahasa dengan sintaks yang konsisten, perpustakaan standard yang seragam, dokumentasi terbaik, rangka kerja ringan yang popular dan gabungan Django yang mega-popular.

Ternyata, walaupun pilihan yang paling luas, jika kita mempunyai pembangun biasa, bukan pembangun terbaik, kita adalah perniagaan biasa yang ingin membuat laman web biasa, kita tidak mempunyai jabatan pembangunan untuk 50 orang, kemudian kita mengambil Python.

Apakah pengetahuan yang diperlukan untuk memasuki profesion?

Zlata Obukhovskaya: Saya percaya bahawa anda perlu mengetahui satu rangka kerja dengan baik - dan mengetahui perkara lain yang wujud dan bila ia digunakan. Di mana Tornado, di mana Django, di mana Flask, di mana aiohttp dan sebagainya.
Adalah berguna untuk mengetahui bahawa terdapat perkara seperti protokol. Khususnya, pengetahuan tentang protokol http adalah penting untuk membina aplikasi web.

Anda juga perlu sekurang-kurangnya memahami secara kasar cara bahagian hadapan berfungsi dalam projek web: apakah itu HTML, CSS, JS.

Alexey Shtyrnyaev: Dan ketahui di mana dokumentasi itu. Ia paling penting.

Grigory Petrov: Di sini kita sedang memijak tanah yang sangat goyah. Jika kita tidak bernasib baik dan entah bagaimana kita mula mengkaji secara serius bahagian hadapan moden, maka ia akan menjadi kira-kira 10 kali lebih rumit daripada bahagian belakang dalam Python. Pembangun pemula perlu mengehadkan fokusnya supaya dia boleh mula belajar HTML, tetapi tidak tersesat dalam semua div, rentang, terapung ini, bagaimana semuanya diselaraskan dan disusun.

Alexey Shtyrnyaev: Perlukan kursus asas Bootstrap. Dan asas HTML.

Pada tahun pertama, anda tidak sepatutnya menyelidiki rangka kerja JS (jika anda memfokuskan pada bahagian belakang). Kursus asas Bootstrap sudah mempunyai modul siap sedia: jika anda mahu peluncur, buat peluncur; jika anda mahu menu terapung, buat menu terapung.

Zlata Obukhovskaya: Saya berpendapat bahawa semasa mengkaji bahagian hadapan, anda boleh menyelami diri anda, khususnya, tentang cara statik biasanya diberikan kepada aplikasi web. Jadi pembangun bergerak dengan lancar untuk mula mempelajari cara seni bina aplikasi web berfungsi secara prinsip dan cara ia hidup dalam pengeluaran.

Grigory Petrov: Ya, saya akan mengesyorkannya dengan segera sekiranya anda memilih Python sebagai bahasa pembangunan bahagian belakang dan, sebagai contoh, Django sebagai rangka kerja: Django mempunyai dokumentasi dalam Buku Django, ia sangat bagus, ia mengandungi semua yang Zlata katakan, dia benar-benar bagus untuk pemula.

Alexey Shtyrnyaev: Sesetengah Gadis Django juga sesuai untuk permulaan yang cepat jika matlamat anda adalah untuk mempelajari Django. Ini adalah tutorial di mana dalam satu hari anda boleh pergi ke atas, memahami asas-asas dan apa yang kerangka itu mampu.

Valentin Dombrovsky: Sebagai persediaan untuk merakam podcast, kami menyusun senarai perkara yang diperlukan oleh pengaturcara Python untuk pembangunan web, yang meringkaskan apa yang kami katakan sebelum ini.

Apa yang termasuk dalam asas untuk pembangunan web dalam Python

  • Rangka kerja web Django, Flask, aiohttp, Tornado, dll. (dan mengetahui tentang kewujudan orang lain).
  • Protokol dan API: terutamanya http, JSON-RPC, Protocol Buffers, gRPC.
  • ORM dan migrasi, pangkalan data hubungan, SQLAlchemy, SQL, PostgreSQL, MySQL.
  • Asas HTML, CSS, Bootstrap, serta rangka kerja JS dan JQuery.
  • Prinsip operasi aplikasi dalam pengeluaran, ujian, ujian unit, autotest, sistem kawalan versi, git.

Adakah junior memerlukan algoritma?

Zlata Obukhovskaya: Pada mulanya, anda tidak perlu mengetahui algoritma; ia secara beransur-ansur akan muncul di kepala anda jika anda terlibat dalam pembangunan cukup lama. Saya tahu ramai jurutera yang baik yang tidak mempunyai kursus algoritma formal yang baik.

Grigory Petrov: Saya mahu menambah bahan api ke dalam api. Dari mana datangnya keinginan kita untuk algoritma?

Pada masa ini kami tidak mempunyai pendidikan asas dalam algoritma, kami tidak tahu bagaimana untuk melatih pengaturcara, kami tidak mempunyai asas teknikal.

Mereka cuba melakukan ini, tetapi di sini kita mempunyai kisah Hogwarts: kita tidak boleh mencipta sekolah untuk ahli sihir sedangkan kita tidak mempunyai seorang ahli sihir. Oleh itu, apa yang perlu dilakukan oleh universiti apabila mereka datang kepada mereka dan bertanya: "Mulakan latihan pengaturcara," tetapi mereka tidak mempunyai pengaturcara, kerana semua orang bekerja di Mail.ru, Rambler dan Yandex, adakah mereka gembira di sana?

Universiti melihat dan berkata:
- Baiklah, pengaturcaraan. Mari cari beberapa bidang pengetahuan yang berkaitan dan jemput pakar dari sana. Mari jemput wartawan yang boleh menulis salinan, jurutera elektrik yang boleh membuat litar elektrik, dan ahli matematik yang boleh menggunakan algoritma.

Pada akhirnya, ternyata ini adalah praktikal seperti mengajar fizik zarah pembina hanya kerana bata dan simen diperbuat daripada zarah asas.

Pada masa yang sama, mereka sendiri tidak bercakap tentang simen dan batu bata, kerana ahli fizik yang cuba melatih seorang pembina tidak tahu cara membina rumah. Akibatnya, kami mendapat pembina yang dapat menerangkan dengan sempurna bagaimana "simen berfungsi", tetapi tidak pernah melihatnya dan tidak tahu bagaimana untuk membuat apa-apa daripadanya.

Algoritma dan struktur data adalah sangat baik, tetapi ini adalah kawasan aplikasi yang sangat kecil. Mereka diperlukan segera, sebagai contoh, jika anda menulis enjin permainan, pengkompil atau protokol rangkaian.

Kebanyakan pengaturcara menyelesaikan masalah perniagaan di mana algoritma dan struktur data tidak diperlukan.

Matematik yang paling sukar di sana ialah menambah dua kali dan kemudian membahagi. Ia memerlukan pengetahuan yang sama sekali berbeza. Menyelesaikan masalah perniagaan memerlukan terutamanya digunakan dan bukannya pengetahuan asas.

Adalah lebih baik bagi pemaju pemula untuk memahami perniagaan dan cara memasang dengan betul dan cepat struktur yang diperlukan dari blok siap pakai, cara menyahpepijatnya, cara memastikan ia tidak hancur, tahu mengapa ia runtuh, apa yang berlaku apabila keperluan berubah dan program bermula "menetap di atas asas" seperti rumah selepas hujan.
Ini adalah perkara praktikal dan pemahaman tentang cara menulis perisian. Dia perlu tahu bahawa sebagai tambahan kepada penyahpepijat, dia mempunyai satu set alat yang akan menunjukkan dengan tepat di mana program itu perlahan.

Valentin Dombrovsky: Perbandingan ini terlintas di fikiran saya: ini ialah terjemahan daripada bahasa perniagaan ke dalam bahasa yang anda boleh berkomunikasi dengan komputer. Iaitu, pengaturcara adalah sejenis ahli bahasa tertentu.

Grigory Petrov: Perniagaan memerlukan seorang penulis, bukan ahli bahasa. Penulis tidak perlu tahu mengapa seribu tahun dahulu perkataan ini diubah menjadi ini. Dia perlu dapat menerapkan kata-kata ini.

Perkara yang anda perlukan untuk mencari pekerjaan pertama anda sebagai pembangun

Alexey Shtyrnyaev: Mungkin tiada resipi universal untuk memasak junior.

Jika anda datang ke beberapa syarikat, mereka akan mengupah anda bukan kerana anda tahu Django, JSON dan beberapa algoritma. Anda kemungkinan besar akan diupah untuk kemahiran yang diperlukan oleh syarikat ini di sini dan sekarang.

Terdapat banyak syarikat, dan semuanya mempunyai keperluan yang berbeza. Tidak ada jumlah pengetahuan sejagat yang perlu diperolehi untuk menyediakan resume dan pergi mencari pekerjaan.

Grigory Petrov: Apabila kami di VoxImplant mencari beberapa jurutera, pengarah teknikal kami merumuskan keperluan asas seperti berikut: seseorang mesti boleh menyelesaikan masalah. Adalah jelas bahawa seorang junior tidak akan sentiasa melakukan ini dengan berkesan, bukan dengan cara terbaik dan tidak selalu betul, tetapi idealnya anda memberi seseorang tugas, dia membebankan dan menyelesaikannya. Ini adalah kemahiran yang paling dicari oleh majikan.

Zlata Obukhovskaya: Orang yang mencari kerja dari bidang lain mempunyai beberapa kelebihan dari sudut perniagaan kerana mereka telah pergi beberapa cara dan dapat menyelesaikan masalah dengan cepat. Ini adalah kemahiran insaniah, saya juga akan memanggilnya budaya kerja. Selalunya, graduan universiti masih belum mengembangkan budaya kerja ini.

Tetapi saya masih ingin mencuba memberikan beberapa jenis resipi kepada pemula.

Langkah pertama untuk pembangun pemula

Zlata Obukhovskaya: Yang pertama ialah ini masih sejenis projek anda sendiri, kerana anda perlu menulis sesuatu dalam resume anda dan menunjukkan portfolio yang minimum. Lebih menarik apabila projek ini tidak dibuat untuk diri sendiri, tetapi sebagai projek bebas - untuk seseorang.

Selepas projek pertama, anda sudah boleh membuat resume dan menghantarnya ke semua syarikat yang ada jawatan Jun. Temu bual akan memberikan gambaran tentang keperluan syarikat. Lambat laun seseorang akan mengupah anda, sekurang-kurangnya dalam sebuah syarikat kecil. Selepas itu, pengalaman kerja ini akan memberi anda peluang untuk masuk ke syarikat yang lebih besar dan lebih menarik.

Valentin Dombrovsky: Dengan cara ini, dalam kursus kami, kami menyediakan pelajar untuk mempunyai projek mereka sendiri dalam tempoh 10 minggu latihan. Selain itu, kami melatih kemahiran pembangunan pasukan. Inilah kemahiran insaniah yang Zlata perkatakan.

Alexey Shtyrnyaev: Saya boleh memberitahu anda daripada pengalaman bahawa ia boleh mengambil masa yang sangat lama untuk mencari pekerjaan pertama anda. Apabila anda mencari sebulan dua, itu perkara biasa. Jika anda menghantar resume anda kepada semua syarikat, pergi ke temuduga, pada bulan ketiga anda pasti akan menemui sesuatu.

Valentin Dombrovsky: Anda boleh memotong projek anda sendiri atau mengambil projek bebas mudah dan pada masa yang sama menghantar resume anda.

Apakah prospek yang dimiliki oleh pembangun Python?

Zlata Obukhovskaya: Pembangun Python boleh pergi ke mana-mana sahaja. Anda boleh pergi ke ujian dan terus berkembang menjadi arkitek kanan. Atau pun ke dalam pengurusan. Terdapat pelbagai jenis pengurus teknikal dan anda boleh berkembang menjadi pengurusan tertinggi. Anda boleh membangunkan dalam sains data, DevOps, pergi ke ujian automatik atau pembelajaran mesin.

Valentin Dombrovsky: Secara umum, terdapat banyak pilihan dan peluang, termasuk kursus kami. Anda tidak memerlukan banyak pengetahuan di pintu masuk, tetapi anda dinasihatkan untuk kemudiannya meliputi julat yang lebih luas, kerana lebih banyak anda boleh, lebih baik untuk anda.

***

Ini hanyalah sebahagian daripada keluaran Python Junior. Versi penuh episod tersedia dengar.

Atau lihat juga:

Mainkan video

RSS Podcast

Terima kasih kerana membaca, mendengar atau menonton.

Sumber: www.habr.com

Tambah komen