Kami melakukan dekripsi yang disingkat dengan pemikiran utama dari Python Junior Podcast: di dalamnya kami membahas di mana harus memulai dan ke mana harus pergi ke pengembang Python pemula. Baru-baru ini, kami memiliki banyak konten untuk middle dan manula, tetapi masalah ini jelas untuk jones.
Topik utama:- Pengetahuan apa yang perlu dilakukan oleh seorang programmer pemula?
pengembangan web? - Apa yang diharapkan pengusaha dari pengembang?
- Apa yang harus dilakukan untuk mendapatkan pekerjaan tanpa pengalaman?
- Bagaimana pengembang Python bisa berkembang?
Python Junior Podcast adalah podcast pemrograman untuk mereka yang ingin lebih memahami Python. Gelombang udara dipimpin oleh penginjil dari komunitas MoscowPython dan guru kursus Learn Python .Percakapan yang terlibat:
- Valentin Dombrovsky, salah satu pendiri MoscowPython
- Zlata Obukhovskaya, pemimpin tim NVIDIA
- Grigory Petrov, penginjil dari MoscowPython
- Alexey Shtyrnyaev, pengembang di FinEx, guru kursus Belajar
Python
Mengapa Python bagus untuk pengembangan web
Valentin Dombrowski: Mengapa Python cocok untuk pengembangan web? Mengapa bukan PHP atau JavaScript, misalnya?
Grigory Petrov: Jadi benar-benar tidak ada pilihan. Terlepas dari kenyataan bahwa di Web modern dimungkinkan secara praktis tanpa backend - murni pada teknologi front-end, dalam JavaScript - untuk merakit aplikasi halaman tunggal atau aplikasi web progresif, masih terlalu rumit, tidak diindeks dengan buruk dan membutuhkan pengembang yang keren.
Jika kami ingin membuat situs web atau layanan, kami menggunakan pendekatan gabungan: kami memiliki semacam backend yang mengimplementasikan logika dan membuat halaman web dan beberapa frontend menggambar halaman web ini di browser. Dan ketika kita perlu cepat mengumpulkan semua ini pada sesuatu, maka tidak ada banyak pilihan.
Mari kita lihat opsi yang mungkin.
- C # Microsoft benar-benar hebat, mereka membuat .NET Core dan mempromosikannya dengan segala cara. Tapi, pertama, ini adalah teknologi lintas platform baru, dan semuanya tidak berjalan lancar di sana. Kedua, sangat mahal, ada beberapa pengembang C # - hanya karena tidak populer.
- Jawa Ini rumit. Membuat situs normal di Jawa bukan 10 baris kode, seperti pada Python. Ini banyak kode, ini kerangka kerja, dan Anda perlu mengetahui spesifikasi pengaturan server Java. Secara umum, rasa sakit dan penderitaan terus menerus.
- PHP Dalam versi terbaru ini sangat bagus. Saya bahkan akan mengatakan ini: PHP 7.2 tidak lebih buruk dari Python. Tetapi Anda tidak bisa hanya mengambil dan menggunakan PHP 7.2. Jika pengembang biasa, non-top membuat situs dalam PHP, dia tidak akan menulis hanya dalam 7.2: Anda masih harus membaca beberapa buku teks, tutorial, di mana-mana sekelompok kode warisan, dan ini tidak terlalu baik.
- JavaScript dan Node.js. Ini luar biasa dan sangat modern ketika satu bahasa berada di frontend dan backend. Hanya saja tidak terlalu stabil. Node.js adalah hal yang baik, tetapi bermasalah untuk menggunakannya dalam produksi sehingga tidak jatuh dan berfungsi secara stabil. Plus, jika kita ingin menulis kode JavaScript yang berkualitas, kita tidak perlu JavaScript, tetapi TypeScript. Tetapi TypeScript secara tak terduga kompleks, saat melihatnya, pengembang biasa muncul.
Mari kita hilangkan Ruby, Haskell, Erlang dan hal-hal niche lainnya, dan kita punya ... Python. Bahasa dengan sintaks yang konsisten, perpustakaan standar yang seragam, dokumentasi terbaik, kerangka kerja ringan yang populer, gabungan Django yang sangat populer.
Ternyata, meskipun pilihan terluas, jika kami memiliki pengembang biasa, bukan pengembang top, kami adalah bisnis reguler yang ingin membuat situs biasa, kami tidak memiliki departemen pengembangan untuk 50 orang, maka kami mengambil Python.
Pengetahuan apa yang dibutuhkan untuk memasuki profesi
Zlata Obukhovskaya: Saya pikir Anda perlu tahu satu kerangka kerja dengan baik - dan untuk mengetahui apa lagi yang terjadi dan kapan mereka digunakan. Di mana Tornado, di mana Django, di mana Flask, di mana aiohttp dan sebagainya.
Sangat berguna untuk mengetahui bahwa ada yang namanya protokol. Secara khusus, pengetahuan tentang protokol http adalah pusat untuk membangun aplikasi web.
Masih Anda perlu setidaknya membayangkan bagaimana frontend diatur dalam proyek web: apa itu HTML, CSS, JS.
Alexey Shtyrnyaev: Dan tahu di mana dokumentasi itu berada. Ini adalah hal yang paling penting.
Grigory Petrov: Di sini kita menginjak tanah yang sangat tidak stabil. Jika kita tidak beruntung dan entah bagaimana kita mulai serius mempelajari frontend modern, maka itu akan menjadi sekitar 10 kali lebih sulit daripada backend Python. Pengembang pemula perlu membatasi fokusnya sehingga ia mulai belajar HTML, tetapi tidak jatuh ke semua div, rentang, float, bagaimana semuanya disejajarkan dan berbaris di sana.
Alexey Shtyrnyaev: Kami membutuhkan kursus Bootstrap dasar. Dan dasar-dasar HTML.
Pada tahun pertama, Anda tidak harus mempelajari kerangka kerja JS (jika Anda fokus pada backend). Kursus Bootstrap dasar sudah memiliki modul yang sudah jadi: jika Anda menginginkan slider, buat slider, jika Anda menginginkan menu mengambang, buatlah menu mengambang.
Zlata Obukhovskaya: Saya pikir bahwa mempelajari front-end dapat dicelupkan, khususnya, bagaimana statis umumnya diberikan untuk aplikasi web. Jadi pengembang dengan lancar mulai belajar bagaimana, pada prinsipnya, arsitektur aplikasi web diatur dan bagaimana mereka hidup dalam produksi.
Grigory Petrov: Ya, saya akan merekomendasikan segera jika Anda memilih Python sebagai bahasa backend pengembangan dan, misalnya, Django sebagai kerangka kerjanya: Django memiliki dokumentasi dalam Buku Django, benar-benar keren, itu semua yang dikatakan Zlata Dia sangat bagus untuk pemula.
Alexey Shtyrnyaev: Django Girls lain cocok untuk awal yang cepat, jika tujuannya adalah untuk mempelajari Django. Ini adalah tutorial di mana dalam satu hari Anda bisa naik ke lantai atas, memahami dasar-dasarnya, dan apa yang bisa dilakukan kerangka itu.
Valentin Dombrovsky: Bersiap untuk merekam podcast, kami membuat daftar apa yang dibutuhkan oleh programmer Python untuk pengembangan web, yang merangkum apa yang dikatakan sebelumnya.
Apa yang termasuk dalam dasar untuk pengembangan web Python
- Kerangka kerja web Django, Flask, aiohttp, Tornado, dll. (Dan untuk mengetahui keberadaan sisanya).
- Protokol dan API: terutama HTTP, JSON-RPC, Protokol Buffer, gRPC.
- ORM dan migrasi, basis data relasional, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Dasar-dasar HTML, CSS, Bootstrap, serta kerangka kerja JS dan JQuery.
- Prinsip-prinsip aplikasi pada produksi, pengujian, pengujian unit, autotest, sistem kontrol versi, git.
Apakah Junior membutuhkan algoritma
Zlata Obukhovskaya: Pada awalnya, Anda tidak perlu mengetahui algoritma, mereka sendiri akan secara bertahap muncul di kepala Anda jika Anda terlibat dalam pengembangan untuk waktu yang lama. Saya kenal banyak insinyur yang baik yang tidak memiliki kursus formal yang baik dalam algoritma.
Grigory Petrov: Saya ingin menambahkan minyak ke api. Jadi dari mana keinginan kami untuk algoritma berasal?
Sekarang kita tidak memiliki pendidikan dasar dalam algoritma, kita tidak tahu bagaimana melatih programmer, tidak ada basis teknis.
Mereka berusaha melakukannya, tetapi di sini kita memiliki kisah Hogwarts: kita tidak dapat membuat sekolah penyihir sampai kita memiliki satu penyihir. Oleh karena itu, apa yang harus universitas datangi dan tanyakan: "Mulai untuk melatih programmer", tetapi mereka tidak memiliki programmer, karena semua orang bekerja di Mail.ru, Rambler dan Yandex, apakah mereka bagus di sana?
Di universitas mereka melihat dan berkata:
- Pemrograman ok. Mari temukan beberapa bidang ilmu terkait dan undang spesialis dari sana. Mari mengundang jurnalis yang bisa menulis teks, insinyur listrik yang tahu cara membuat sirkuit listrik, dan ahli matematika yang tahu cara menulis algoritma.
Akibatnya, ternyata sama baiknya dengan mengajar pembangun fisika partikel elementer hanya karena bata dan semen tersusun dari partikel elementer.
Pada saat yang sama, mereka tidak berbicara tentang semen dan batu bata itu sendiri, karena seorang fisikawan yang berusaha melatih pembangun tidak tahu bagaimana membangun rumah. Akibatnya, kami mendapatkan pembangun yang mampu melukis dengan sempurna bagaimana "semen bekerja", tetapi belum pernah melihatnya dan tahu bagaimana membuat sesuatu dari itu.
Algoritma dan struktur data sangat baik, tetapi ini adalah area aplikasi yang sangat kecil. Mereka sangat dibutuhkan, misalnya, jika Anda menulis mesin gim, kompiler, protokol jaringan.
Sebagian besar programmer memecahkan masalah bisnis di mana algoritma dan struktur data tidak diperlukan.
Matematika paling sulit di sana adalah melipat dua kali dan kemudian membaginya. Mereka membutuhkan pengetahuan yang sangat berbeda. Memecahkan masalah bisnis membutuhkan pengetahuan yang terutama diterapkan, bukan mendasar.
Lebih baik bagi pengembang pemula untuk memiliki ide tentang bisnis dan bagaimana dengan benar dan cepat merakit struktur yang diperlukan dari blok yang sudah jadi, bagaimana men-debug mereka, bagaimana memastikan bahwa mereka tidak berantakan, tahu mengapa mereka berantakan, apa yang terjadi ketika persyaratan berubah dan program dimulai "Beristirahatlah di atas fondasi," seperti rumah setelah hujan.
Ini adalah hal-hal yang diterapkan dan pemahaman tentang cara menulis perangkat lunak. Dia perlu tahu bahwa selain debugger, dia memiliki seperangkat alat yang akan menunjukkan dengan tepat di mana program melambat.
Valentin Dombrovsky: Perbandingan ini terjadi pada saya: ini adalah terjemahan dari bahasa bisnis ke bahasa di mana Anda dapat berkomunikasi dengan komputer. Artinya, programmer adalah sejenis ahli bahasa tertentu.
Grigory Petrov: Bisnis membutuhkan penulis, bukan ahli bahasa. Penulis tidak perlu tahu mengapa kata ini diubah menjadi ini seribu tahun yang lalu. Dia harus bisa menerapkan kata-kata ini.
Apa yang Anda butuhkan untuk mencari pekerjaan pertama sebagai pengembang
Alexey Shtyrnyaev: Mungkin, tidak ada resep universal yang Anda perlukan untuk menyiapkan junior.
Jika Anda datang ke beberapa perusahaan, Anda tidak akan tertarik pada kenyataan bahwa Anda tahu Django, JSON dan beberapa algoritma. Anda kemungkinan besar akan diambil untuk keterampilan yang dibutuhkan perusahaan ini di sini dan sekarang.
Ada banyak perusahaan, dan setiap orang memiliki persyaratan yang berbeda. Tidak ada jumlah pengetahuan universal yang perlu diperoleh untuk mempersiapkan resume lebih lanjut dan mencari pekerjaan.
Grigory Petrov: Ketika kami mencari beberapa jones di VoxImplant, direktur teknis kami merumuskan persyaratan dasar sebagai berikut: seseorang harus dapat menyelesaikan masalah. Jelas bahwa June tidak akan melakukan ini selalu efisien, tidak dengan cara terbaik dan tidak selalu benar, tetapi idealnya Anda mengatur tugas untuk seseorang, ia menegangkan dan menyelesaikannya. Ini adalah keterampilan yang terutama dicari majikan.
Zlata Obukhovskaya: Orang-orang yang mencari pekerjaan, pindah dari daerah lain, memiliki beberapa keuntungan dari sudut pandang bisnis, karena mereka telah menempuh beberapa cara dan tahu bagaimana menyelesaikan masalah dengan cepat. Ini adalah soft skill, saya menyebutnya budaya kerja. Seringkali, mahasiswa pascasarjana dari budaya kerja ini belum dikembangkan.
Tetapi saya masih ingin mencoba memberikan resep untuk pemula.
Langkah pertama untuk pengembang pemula
Zlata Obukhovskaya: Yang pertama masih semacam proyek Anda sendiri, karena Anda perlu menulis sesuatu di resume dan menunjukkan portofolio minimum. Lebih keren ketika proyek-proyek ini tidak dibuat untuk diri mereka sendiri, tetapi untuk freelance - untuk seseorang.
Setelah proyek pertama, sudah dimungkinkan untuk membuat resume dan mengirimkannya ke semua perusahaan di mana ada posisi Juni. Wawancara akan memberikan pemahaman tentang apa yang dibutuhkan perusahaan. Cepat atau lambat, seseorang akan membawa Anda, setidaknya ke perusahaan kecil. Selanjutnya, pengalaman kerja ini akan memberi Anda kesempatan untuk masuk ke perusahaan semakin menarik.
Valentin Dombrovsky: Ngomong-ngomong, kami sedang mempersiapkan siswa di kursus sehingga mereka memiliki proyek sendiri selama 10 minggu pelatihan. Ditambah lagi, kami melatih keterampilan pengembangan tim. Ini hanya soft skill yang dibicarakan Zlata.
Alexey Shtyrnyaev: Dari pengalaman, saya akan mengatakan bahwa Anda dapat mencari pekerjaan pertama untuk waktu yang sangat lama. Ketika Anda mencari satu atau dua bulan - ini normal. Jika Anda mengirimkan resume ke semua perusahaan, pergi untuk wawancara, di bulan ketiga Anda pasti akan menemukan sesuatu.
Valentin Dombrovsky: Anda dapat memotong proyek Anda atau mengambil proyek sederhana di lepas dan secara bersamaan mengirimkan resume.
Apa prospek untuk pengembang Python
Zlata Obukhovskaya: Pengembang Python dapat pergi ke mana saja. Anda dapat pergi ke pengujian, terus berkembang menjadi arsitek senior. Atau bahkan dalam manajemen. Manajer teknis berbeda, dan Anda dapat tumbuh menjadi manajemen puncak. Anda dapat mengembangkan dalam ilmu data, DevOps, pergi ke autotests atau pembelajaran mesin.
Valentin Dombrovsky: Secara umum, ada banyak opsi, peluang juga, termasuk kursus kami. Anda tidak perlu begitu banyak pengetahuan di pintu masuk, tetapi kemudian disarankan untuk mencakup rentang yang lebih luas, karena semakin banyak Anda bisa, semakin baik untuk Anda.
***
Ini hanya bagian dari rilis
Python Junior . Anda dapat
mendengarkan versi lengkap dari episode tersebut.
Atau bahkan melihat:
Podcast RSSTerima kasih telah membaca, mendengarkan, atau menonton.