Kami telah menyusun transkrip singkat berisi poin-poin penting dari Podcast Python Junior: kami membahas di mana harus memulai dan ke mana harus pergi bagi para calon pengembang Python. Akhir-akhir ini kami telah menerbitkan banyak konten untuk pengembang menengah dan senior, tetapi episode ini jelas ditujukan untuk para junior.

Topik utama:
- Pengetahuan apa yang dibutuhkan programmer pemula untuk memulai?
pengembangan web? - Apa yang diharapkan pengusaha dari pengembang?
- Apa yang harus dilakukan untuk mencari pekerjaan tanpa pengalaman?
- Bagaimana pengembang Python dapat berkembang?
Podcast Python Junior adalah podcast pemrograman bagi mereka yang ingin lebih memahami Python. Siarannya dipandu oleh para penggiat komunitas. dan guru kursus .
Berikut ini yang ikut serta dalam percakapan:
- Valentin Dombrovsky,salah satu pendiri MoscowPython
- Zlata Obukhovskaya, Pimpinan tim NVIDIA
- Grigory Petrov, Penginjil Python Moskow
- Alexey Shtyrnyaev, Pengembang di FinEx, instruktur kursus Learn
Ular sanca
Mengapa Python Baik untuk Pengembangan Web
Valentin Dombrovsky: Mengapa Python cocok untuk pengembangan web? Mengapa tidak PHP atau JavaScript, misalnya?
Grigory Petrov: Sebenarnya tidak ada pilihan lain. Meskipun di web modern, Anda dapat membangun aplikasi satu halaman atau aplikasi web progresif secara praktis tanpa backend—hanya menggunakan teknologi frontend dan JavaScript—masih terlalu rumit, kurang terindeks, dan membutuhkan pengembang yang terampil.
Ketika kami ingin membangun situs web atau layanan, kami menggunakan pendekatan gabungan: kami memiliki backend yang mengimplementasikan logika dan membuat halaman web, dan frontend yang merender halaman web ini di peramban. Dan ketika kami perlu menggabungkan semuanya dengan cepat, pilihannya terbatas.
Mari kita lihat pilihan yang ada.
- C#. Microsoft memang brilian; mereka menciptakan .NET Core dan mempromosikannya dengan segala cara. Namun, pertama-tama, ini adalah teknologi lintas platform yang baru, dan belum semuanya sempurna. Kedua, harganya sangat mahal, dan hanya ada sedikit pengembang C#—hanya karena kurang populer.
- Jawa. Rumit sekali. Membangun situs web yang layak di Java bukan hanya 10 baris kode, seperti di Python. Butuh banyak kode, kerangka kerja, dan Anda perlu memahami seluk-beluk pengaturan server Java. Intinya, ini benar-benar proses yang melelahkan dan penuh penderitaan.
- PHP Versi-versi terbarunya fantastis. Saya bahkan berani bilang PHP 7.2 tidak lebih buruk dari Python. Tapi Anda tidak bisa begitu saja langsung menggunakan PHP 7.2. Jika seorang pengembang biasa yang bukan ahli membangun situs web dengan PHP, mereka tidak akan menggunakan 7.2 secara eksklusif: mereka tetap harus membaca buku teks dan tutorial, dan ada banyak kode lama di mana-mana, dan itu bukan hal yang baik.
- JavaScript dan Node.js. Sungguh luar biasa dan sangat modern memiliki satu bahasa untuk frontend dan backend. Sayangnya, bahasa ini kurang stabil. Node.js memang hebat, tetapi menerapkannya dalam produksi tanpa mengalami crash dan berjalan dengan andal itu bermasalah. Lagipula, jika kita ingin menulis kode JavaScript berkualitas tinggi, kita membutuhkan TypeScript, bukan JavaScript. Namun, TypeScript ternyata rumit, dan melihatnya saja sudah membuat otak rata-rata developer mendidih.
Mari kita abaikan Ruby, Haskell, Erlang, dan hal-hal niche lainnya, dan kita tinggal dengan... Python. Bahasa pemrograman dengan sintaksis yang konsisten, pustaka standar terpadu, dokumentasi terbaik, kerangka kerja ringan yang populer, dan harvester Django yang sangat populer.
Ternyata, meskipun pilihannya sangat luas, jika kita punya pengembang biasa, bukan yang terbaik, kita adalah pebisnis biasa yang ingin membuat situs web biasa, kita tidak punya departemen pengembangan yang beranggotakan 50 orang, maka kita ambil Python.
Pengetahuan apa yang dibutuhkan untuk memasuki profesi ini?
Zlata Obukhovskaya: Saya yakin penting untuk memahami satu framework dengan baik—lalu mengetahui framework lain apa saja yang ada dan kapan framework tersebut digunakan. Mana Tornado, mana Django, mana Flask, mana aiohttp, dan seterusnya.
Penting untuk mengetahui adanya protokol. Khususnya, pengetahuan tentang protokol HTTP sangat penting dalam membangun aplikasi web.
Anda juga perlu memiliki setidaknya gambaran kasar tentang cara kerja bagian depan dalam proyek web: apa itu HTML, CSS, dan JS.
Alexey Shtyrnyaev: Dan mengetahui di mana dokumentasinya berada. Itu hal terpenting.
Grigory Petrov: Di sini kita berada di landasan yang sangat rapuh. Jika kita kurang beruntung untuk mempelajari frontend modern secara serius, itu akan sekitar 10 kali lebih sulit daripada backend Python. Pengembang pemula perlu mempersempit fokus mereka agar dapat mulai mempelajari HTML tanpa terjebak dalam semua div, span, float, dan bagaimana semuanya disejajarkan dan ditata.
Alexey Shtyrnyaev: Saya butuh kursus dasar tentang Bootstrap dan dasar-dasar HTML.
Di tahun pertama, Anda tidak perlu mempelajari framework JS (jika Anda fokus pada backend). Kursus Bootstrap dasar sudah mencakup modul siap pakai: jika Anda menginginkan slider, buatlah slider; jika Anda menginginkan menu mengambang, buatlah menu mengambang.
Zlata Obukhovskaya: Saya rasa saat mempelajari frontend, kita bisa mendalami, khususnya, bagaimana data statis umumnya dikirimkan ke aplikasi web. Dengan begitu, pengembang dapat dengan mudah mulai mempelajari cara kerja arsitektur aplikasi web dan cara kerjanya dalam produksi.
Grigory Petrov: Ya, saya akan langsung merekomendasikannya jika Anda telah memilih Python sebagai bahasa pengembangan backend Anda dan, misalnya, Django sebagai kerangka kerja Anda: Django memiliki dokumentasi di Buku Django, sangat keren, ia memiliki semua yang disebutkan Zlata, ini sangat bagus untuk pemula.
Alexey Shtyrnyaev: Tempat lain yang bagus untuk memulai dengan cepat adalah Django Girls, jika tujuan Anda adalah mempelajari Django secara khusus. Tutorial ini mencakup dasar-dasar dan memberi Anda pemahaman yang baik tentang kemampuan kerangka kerja ini dalam satu hari.
Valentin Dombrovsky: Sebagai persiapan untuk podcast, kami menyusun daftar apa saja yang dibutuhkan programmer Python untuk pengembangan web, yang merangkum apa yang telah kami sampaikan sejauh ini.
Apa saja yang termasuk dalam kerangka pengembangan web Python?
- Kerangka kerja web Django, Flask, aiohttp, Tornado, dll. (dan mengetahui keberadaan yang lain).
- Protokol dan API: terutama http, JSON-RPC, Protocol Buffers, gRPC.
- ORM dan migrasi, basis data relasional, SQLAlchemy, SQL, PostgreSQL, MySQL.
- Dasar-dasar HTML, CSS, Bootstrap, serta kerangka kerja JS dan JQuery.
- Prinsip operasi aplikasi dalam produksi, pengujian, pengujian unit, pengujian otomatis, sistem kontrol versi, git.
Apakah pengembang junior membutuhkan algoritma?
Zlata Obukhovskaya: Anda tidak perlu tahu algoritma pada awalnya; algoritma akan muncul secara bertahap di kepala Anda jika Anda sudah cukup lama mengembangkannya. Saya kenal banyak insinyur hebat yang belum pernah mengikuti kursus formal algoritma yang baik.
Grigory Petrov: Saya ingin menambah bahan bakar ke api. Dari mana datangnya ketertarikan kita pada algoritma?
Saat ini kita kekurangan pendidikan dasar dalam algoritma, kita tidak tahu cara melatih programmer, dan kita tidak memiliki basis teknis.
Mereka sedang berusaha melakukan itu, tapi seperti Hogwarts: kita tidak bisa mendirikan sekolah sihir sampai kita punya satu penyihir saja. Jadi, apa yang seharusnya dilakukan universitas ketika orang-orang datang dan bertanya, "Mulai latih programmer," tapi mereka tidak punya programmer karena semua orang bekerja di Mail.ru, Rambler, dan Yandex, dan mereka senang di sana?
Di universitas mereka melihat dan berkata:
Oke, pemrograman. Ayo kita cari bidang ilmu terkait dan undang spesialis dari sana. Ayo kita undang jurnalis yang jago menulis, insinyur listrik yang jago menggambar diagram sirkuit, dan matematikawan yang jago bekerja dengan algoritma.
Pada akhirnya, ternyata hal ini sama saja dengan mengajarkan fisika partikel kepada tukang bangunan hanya karena batu bata dan semen terbuat dari partikel elementer.
Pada saat yang sama, mereka tidak membahas semen dan batu bata itu sendiri, karena fisikawan yang mencoba melatih tukang bangunan tidak tahu cara membangun rumah. Hasilnya adalah seorang tukang bangunan yang dapat dengan sempurna menjelaskan cara kerja "semen", tetapi belum pernah melihatnya dan tidak tahu cara membuat apa pun dengannya.
Algoritma dan struktur data memang hebat, tetapi penerapannya sangat terbatas. Algoritma dan struktur data sangat penting, misalnya, jika Anda sedang menulis mesin permainan, kompiler, atau protokol jaringan.
Kebanyakan programmer memecahkan masalah bisnis yang tidak memerlukan algoritma dan struktur data.
Matematika yang paling sulit adalah menjumlahkan dua kali lalu membaginya. Hal ini membutuhkan keahlian yang sama sekali berbeda. Memecahkan masalah bisnis terutama membutuhkan pengetahuan terapan, alih-alih pengetahuan dasar.
Pengembang pemula sebaiknya memiliki pemahaman tentang bisnis dan cara merakit struktur yang diperlukan dari blok yang sudah jadi dengan benar dan cepat, cara men-debug-nya, cara mencegahnya agar tidak berantakan, dan mengetahui mengapa struktur tersebut berantakan, apa yang terjadi ketika persyaratan berubah dan program mulai "mengendap di fondasinya," seperti rumah setelah hujan.
Ini adalah hal-hal praktis dan pemahaman tentang cara menulis perangkat lunak. Ia perlu tahu bahwa, selain debugger, ia memiliki seperangkat alat yang akan menunjukkan secara tepat di mana program tersebut mengalami keterlambatan.
Valentin Dombrovsky: Sebuah perbandingan muncul di benak saya: ini adalah terjemahan dari bahasa bisnis ke bahasa yang digunakan untuk berkomunikasi dengan komputer. Dengan kata lain, seorang programmer adalah semacam ahli bahasa yang terspesialisasi.
Grigory Petrov: Bisnis membutuhkan penulis, bukan ahli bahasa. Penulis tidak perlu tahu mengapa kata ini berubah menjadi kata itu ribuan tahun yang lalu. Mereka perlu bisa menggunakan kata-kata itu.
Apa yang dibutuhkan untuk menemukan pekerjaan pertama Anda sebagai pengembang
Alexey Shtyrnyaev: Mungkin tidak ada resep universal untuk mempersiapkan seorang junior.
Jika Anda bergabung dengan sebuah perusahaan, mereka tidak akan mempekerjakan Anda karena Anda menguasai Django, JSON, dan beberapa algoritma. Kemungkinan besar mereka akan mempekerjakan Anda berdasarkan keahlian yang dibutuhkan perusahaan saat ini.
Ada banyak perusahaan, dan masing-masing memiliki persyaratan yang berbeda. Tidak ada standar pengetahuan yang dibutuhkan untuk menyiapkan resume dan melamar pekerjaan.
Grigory Petrov: Ketika kami mencari beberapa insinyur junior di VoxImplant, CTO kami merumuskan persyaratan dasar sebagai berikut: keterampilan memecahkan masalah. Tentu saja, seorang insinyur junior tidak akan selalu melakukannya secara efektif, sebaik mungkin, atau selalu benar, tetapi idealnya, Anda memberi mereka tugas, mereka bekerja keras, dan menyelesaikannya. Keterampilan inilah yang pertama dan terutama dicari oleh para pemberi kerja.
Zlata Obukhovskaya: Orang yang mencari pekerjaan di bidang lain memiliki keuntungan tertentu dari perspektif bisnis karena mereka telah berpengalaman dan mampu menyelesaikan masalah dengan cepat. Ini adalah soft skills, bahkan saya menyebutnya budaya kerja. Seringkali, lulusan universitas belum mengembangkan budaya kerja ini.
Tetapi saya masih ingin mencoba memberikan beberapa resep untuk pemula.
Langkah pertama untuk pengembang pemula
Zlata Obukhovskaya: Pertama, ini masih proyek pribadi, karena Anda perlu mencantumkan sesuatu di resume dan menunjukkan portofolio minimal. Akan lebih baik jika proyek-proyek ini tidak dikerjakan untuk diri sendiri, melainkan sebagai pekerja lepas—untuk orang lain.
Setelah beberapa proyek pertama Anda, Anda bisa mulai membuat resume dan mengirimkannya ke semua perusahaan yang membuka lowongan junior. Wawancara akan memberi Anda gambaran tentang apa yang dicari perusahaan. Cepat atau lambat, seseorang akan mempekerjakan Anda, meskipun hanya perusahaan kecil. Pengalaman kerja ini nantinya akan memberi Anda kesempatan untuk bergabung dengan perusahaan yang lebih besar dan lebih menarik.
Valentin Dombrovsky: Ngomong-ngomong, kursus kami mempersiapkan siswa untuk mengerjakan proyek mereka sendiri dalam 10 minggu pelatihan. Kami juga melatih keterampilan pengembangan tim. Inilah tepatnya keterampilan lunak yang disebutkan Zlata.
Alexey Shtyrnyaev: Berdasarkan pengalaman, saya bisa bilang bahwa mencari pekerjaan pertama bisa memakan waktu yang sangat lama. Wajar jika kita menghabiskan satu atau dua bulan untuk mencari pekerjaan. Jika kita melamar ke semua perusahaan dan mengikuti wawancara, kita pasti akan menemukan pekerjaan di bulan ketiga.
Valentin Dombrovsky: Anda dapat mengembangkan proyek Anda sendiri atau mengerjakan proyek lepas sederhana sambil mengirimkan resume.
Bagaimana prospeknya bagi pengembang Python?
Zlata Obukhovskaya: Pengembang Python bisa berkarier di mana saja. Mereka bisa terjun ke dunia pengujian, melanjutkan pengembangan hingga menjadi arsitek senior, atau bahkan menjadi manajer. Manajer teknis hadir dalam berbagai bentuk dan ukuran, dan ada kemungkinan untuk naik ke manajemen senior. Mereka bisa berkembang menjadi ilmuwan data, DevOps, pengujian otomatis, atau pembelajaran mesin.
Valentin Dombrovsky: Secara keseluruhan, ada banyak pilihan dan peluang, termasuk kursus kami. Anda tidak perlu banyak pengetahuan untuk memulai, tetapi disarankan untuk memperluas pengetahuan Anda nanti, karena semakin banyak yang bisa Anda lakukan, semakin baik hasilnya.
***
Ini hanya sebagian dari rilisnya Versi lengkap episode ini dapat ditemukan .
Atau bahkan lihat:

Terima kasih telah membaca, mendengarkan atau menonton.
Sumber: www.habr.com
