Jadi, Anda memutuskan untuk menjadi seorang programmer.
Anda mungkin tertarik untuk membuat sesuatu yang baru.
Mungkin Anda tertarik dengan gaji besar.
Mungkin Anda hanya ingin mengubah ruang lingkup kegiatan.
Bukan itu intinya.
Penting - Anda memutuskan untuk menjadi seorang programmer .
Apa yang harus dilakukan sekarang?

Dan ada beberapa pendekatan.
Pertama : pergi ke universitas untuk spesialisasi IT dan mendapatkan pendidikan khusus. Cara yang paling umum, relatif dapat diandalkan, sangat panjang, paling mendasar. Ini bekerja jika Anda masih lulus dari sekolah, atau Anda memiliki sarana untuk menyediakan bagi diri Anda satu setengah berikutnya (paling baik, jika Anda mengambil semuanya dengan cepat dan dapat mulai bekerja di tahun ke-2) hingga empat (jika menggabungkan pekerjaan dengan sekolah bukan urusan Anda) ) tahun.
Apa yang penting diketahui di sini?
- Anda harus memilih universitas yang tepat. Lihat program pelatihan, peringkat. Indikator yang baik adalah olimpiade universitas. Jika tim universitas setidaknya secara berkala menempati posisi sepuluh besar di olimpiade pemrograman yang relatif besar, maka pengkodean di universitas tidak akan menjadi kelainan (terlepas dari kenyataan bahwa Anda secara pribadi mungkin tidak tertarik pada olimpiade). Secara umum, aturan akal sehat: tidak mungkin cabang Bratsk dari Universitas Negeri Baikal akan menjadikan Anda tumpukan penuh yang kuat.
Contoh universitas yang bagus: Universitas Negeri Moskow / Universitas Negeri St. Petersburg (jelas), Baumanka (Moskow), ITMO (St. Petersburg), NSU (Novosibirsk). Terlepas dari semua keunggulan mereka, sangat mungkin untuk mendapatkan anggaran di dalamnya, jika tidak untuk menandai departemen teratas. - Bukan uni universal. Terlepas dari kenyataan bahwa Anda akan dilatih secara komprehensif dalam segala hal, ini tidak cukup. Berdasarkan birokrasi, program pelatihan hampir selalu ketinggalan tren modern. Paling-paling, untuk satu atau dua tahun. Paling buruk - 5-10 tahun. Anda harus membuat perbedaan sendiri. Nah, yang jelas: jika Anda mempelajari materi setara dengan siswa lainnya, maka masing-masing dari mereka akan menjadi pesaing Anda yang setara. Jika Anda maju ke depan, Anda akan terlihat jauh lebih baik di pasar.
- Cari pekerjaan sedini mungkin. Saya mulai bekerja di tahun kedua. Pada akhir universitas, saya sudah menjadi pengembang menengah, dan bukan Juni yang sederhana tanpa pengalaman. Saya pikir sudah jelas bahwa setelah lulus, mendapatkan 100rb lebih menyenangkan daripada 30rb. Bagaimana cara mencapai ini? Pertama, lihat poin A dan B. Kedua, pergi ke pertemuan, festival, konferensi, pameran pekerjaan. Pantau pasar dan cobalah mendapat john / trainee paruh waktu di perusahaan mana pun yang menurut Anda paling tidak sesuai. Jangan takut konferensi berbayar: siswa sering mendapat diskon yang sangat bagus di sana.
Jika semua poin ini diperhatikan, maka pada saat Anda menerima diploma Anda dapat menjadi spesialis yang sangat baik dengan pengalaman kerja dan kekayaan pengetahuan mendasar, yang sering dipelajari orang otodidak karena karakter yang tidak jelas. Ya, kerak dapat membantu jika Anda berencana untuk pergi ke luar negeri: mereka sering melihatnya di sana.
Jika Anda tidak mematuhi ... Ya, Anda bisa mendapatkan lapisan kulit dengan mengikuti arus, menulis dan mempersiapkan ujian untuk malam itu. Tetapi bagaimana menurut Anda, seberapa kompetitifnya Anda nantinya? Tentu saja, saya tidak mengatakan bahwa Anda harus menutup semuanya pada lima besar. Anda hanya perlu mendapatkan pengetahuan. Gunakan akal sehat. Pelajari apa yang menarik dan bermanfaat, tetapi jangan pedulikan nilai.

Hal utama bukanlah apa yang mereka coba menjejalkan Anda. Hal utama adalah menarik dan relevan
-
Selanjutnya, cara kedua : kursus pemrograman . Internet dipenuhi dengan penawaran untuk menjadikan Anda junior hanya dalam 3 bulan kelas. Di sini dengan portofolio, dan bahkan membantu mencari pekerjaan. Hanya 10rb per bulan, ya.
Mungkin bagi seseorang itu akan berhasil, tetapi murni IMHO: ini adalah sampah lengkap. Jangan buang waktu dan uang. Dan inilah alasannya:
Seseorang yang jauh dari IT tidak akan dapat memasuki spesifikasi profesi dalam 3 bulan. Itu bukan apa-apa. Terlalu banyak informasi yang perlu dipelajari, terlalu banyak untuk dipahami, dan terlebih lagi, untuk mengisi tangan Anda.
Lalu apa yang akan mereka jual kepada Anda? Anda akan dijual "keterampilan mekanik". Tanpa banyak memahami detailnya, mereka akan menunjukkan kepada Anda apa yang perlu Anda tulis untuk mendapatkan hasil yang persis seperti ini. Dengan instruksi terperinci dan bantuan seorang guru, Anda masih akan menulis beberapa jenis aplikasi. Satu, maksimal dua. Ini adalah portofolionya. Dan membantu dalam menemukan lowongan pekerjaan bulan Juni dari perusahaan besar, yang tidak mungkin Anda lewati saat wawancara.
Kenapa begitu? Sederhana: sangat penting bagi seorang programmer untuk berpikir secara abstrak. Seorang programmer memecahkan masalah yang dapat dipecahkan dalam satu miliar cara yang mungkin. Dan tugas utama adalah memilih salah satu dari miliaran, yang paling benar, dan menyadarinya. Membuat satu atau dua proyek sesuai dengan instruksi akan memberi Anda pengetahuan tentang bahasa pemrograman, tetapi tidak akan mengajari Anda cara memecahkan masalah abstrak. Menggambar analogi: bayangkan Anda dijanjikan untuk dilatih orienteering, akan dituntun di sepanjang rute wisata sederhana, dan kemudian mereka akan mengatakan bahwa Anda siap menaklukkan taiga sendirian di musim dingin. Nah, apa, mereka mengajari Anda untuk menggunakan kompas dan menyalakan api tanpa korek api.
Ringkasnya: jangan percaya mereka yang berjanji untuk "menyetir" Anda dalam waktu singkat. Jika ini memungkinkan, semua orang pasti sudah lama menjadi programmer.

Kiri: apa yang akan Anda pelajari. Benar: apa yang akan dituntut dari Anda di tempat kerja
-
Jalur ketiga adalah jalur yang dipilih oleh mayoritas. Belajar mandiri .
Cara yang paling sulit, tapi mungkin yang paling mulia. Mari kita bahas lebih detail.
Jadi Anda memutuskan untuk menjadi seorang programmer. Di mana untuk memulai?
Pertama-tama, Anda perlu menjawab pertanyaan Anda: mengapa Anda menginginkan ini? Jika jawabannya "baik, ini, tentu saja, tidak terlalu menarik, tetapi mereka membayar banyak," maka kita bisa berhenti di sini. Kamu tidak disini Sekalipun tekad Anda cukup untuk menyekop banyak informasi, menulis ribuan baris kode, mengalami ratusan kegagalan, dan masih mendapatkan pekerjaan, sebagai akibatnya, tanpa cinta pada profesi, ini hanya akan menyebabkan kelelahan emosional. Pemrograman membutuhkan sejumlah besar upaya intelektual, dan jika upaya ini tidak dipicu oleh pengembalian emosional dalam bentuk kepuasan untuk tugas tersebut, maka otak cepat atau lambat akan panik dan menghilangkan kemampuan Anda untuk memutuskan apa pun. Bukan skenario yang paling menyenangkan.
Jika Anda yakin tertarik, maka Anda dapat memutuskan secara spesifik - tepatnya apa yang ingin Anda lakukan. Jika Anda tidak tahu bagaimana programmer dapat berbeda satu sama lain, Google akan membantu Anda.
Segera saya akan menulis saran pertama agar tidak lupa: belajar bahasa Inggris. Bahasa Inggris dibutuhkan. Tanpa bahasa Inggris, tidak ada tempat. Tidak mungkin. Tanpa bahasa Inggris, Anda tidak dapat menjadi programmer normal. Itu dia.
Selanjutnya, diinginkan untuk menyusun peta jalan: rencana yang akan Anda kembangkan. Pelajari spesifiknya, lihat lowongan di spesialisasi Anda, cari tahu secara dangkal teknologi apa yang digunakan di sana.
Contoh roadmap untuk programmer backend (bukan untuk siapa pun, tentu saja, ini hanya salah satu opsi yang mungkin):
- Dasar-dasar html / css.
- Python Dasar-dasarnya.
- Pemrograman jaringan. Interaksi python dan web.
- Kerangka kerja pembangunan. Django, labu. (komentar: hanya untuk memahami apa "Django" dan "termos" Anda perlu melihat lowongan dan membaca apa yang diperlukan di sana)
- Studi mendalam tentang python.
- Dasar-dasar js.
Saya ulangi, ini adalah rencana yang sangat kasar, masing-masing sangat besar, dan banyak topik tidak termasuk (misalnya, pengujian kode). Tapi ini setidaknya semacam sistematisasi pengetahuan, yang akan memungkinkan Anda untuk tidak bingung dengan apa yang Anda ketahui dan apa yang tidak. Dalam proses belajar itu akan menjadi lebih jelas apa yang hilang, dan peta jalan ini akan ditambah.
Berikutnya: cari bahan yang akan Anda pelajari. Opsi utamanya adalah:
- Kursus online. Bukan kursus-kursus yang "Juni dalam 3 hari", tetapi itu mengajarkan satu hal khusus. Seringkali kursus ini gratis. Contoh situs dengan kursus normal: stepik , coursera .
- Tutorial online. Ada yang gratis, shareware, berbayar. Di mana harus membayar, dan di mana tidak, Anda akan mencari tahu sendiri. Contoh: htmlacademy , learn.javascript.ru , buku django .
- Buku. Ada banyak, banyak. Jika Anda tidak dapat memilih, tiga tips: cobalah untuk mengambil buku baru, sebagai informasi menjadi usang dengan sangat cepat; Penerbit O'Reilly memiliki tingkat kualitas yang cukup tinggi dan presentasi yang normal; jika mungkin, baca dalam bahasa Inggris.
- Mitapy / konferensi / kuliah. Tidak begitu berguna dalam hal saturasi informasi, tetapi sangat berguna dalam hal kemampuan berkomunikasi dengan rekan kerja di toko, mengajukan pertanyaan saat ini, berteman. Mungkin bahkan mencari pekerjaan.
- Google. Banyak yang meremehkan, tetapi kemampuan untuk hanya menemukan jawaban atas beberapa pertanyaan sangat penting. Merasa bebas untuk google hal-hal aneh. Bahkan para senior yang berpengalaman pun melakukan hal ini. Kemampuan untuk dengan cepat menemukan informasi tentang sesuatu secara praktis setara dengan fakta bahwa Anda mengetahuinya.
Oke, kami sudah memutuskan sumber informasinya. Bagaimana cara bekerja dengan mereka?
- Baca / dengarkan dengan cermat. Jangan membaca lelah. Menyelidiki maknanya, jangan melewatkan momen yang tampak jelas. Seringkali, transisi dari yang jelas ke yang tidak dapat dipahami terjadi cukup cepat. Jangan ragu untuk kembali dan membaca kembali.
- Uraikan informasinya. Pertama, akan lebih mudah bagi Anda untuk memilah-milah catatan Anda ketika ada banyak informasi. Kedua, cara ini informasi diserap lebih baik.
- Lakukan semua tugas yang ditawarkan sumber. Tidak, tidak seperti itu. Lakukan SEMUA tugas yang ditawarkan sumber. Bahkan yang tampak sederhana. Terutama yang terlihat terlalu rumit. Jika Anda macet, minta bantuan tentang stackoverflow , setidaknya melalui google translate. Tugas ditulis karena suatu alasan, mereka diperlukan untuk asimilasi materi yang benar.
- Pikirkan tugas Anda sendiri dan lakukan juga. Praktik, idealnya, harus lebih dari sekadar teori. Semakin padat Anda memperbaiki materi, semakin besar kemungkinan dalam sebulan Anda tidak akan melupakannya.
- Opsional: saat Anda membaca, buat kuis Anda. Tulis pertanyaan rumit ke sumber yang berbeda, dan setelah seminggu atau sebulan, baca dan coba jawab. Tidak berfungsi: belajar lagi.
Dan kami mengulangi 5 poin ini untuk setiap teknologi yang sedang dipelajari. Hanya dengan cara ini (dengan studi teori yang menyeluruh dan liputan praktik yang padat) Anda akan memiliki basis pengetahuan berkualitas tinggi yang dengannya Anda dapat menjadi seorang profesional.
Dan tampaknya semuanya sederhana: kita belajar teknologi satu per satu, memahami Zen, dan mulai bekerja. Begitulah adanya, tetapi tidak demikian.
Kebanyakan orang yang mempelajari pemrograman melakukan sesuatu seperti ini:

gambar itu jujur ββdicuri dari sini
Dan di sini Anda perlu memikirkan setiap langkah lebih terinci:
Mulai : Anda tidak memiliki pengetahuan. Tempat keberangkatan. Sejauh ini, tidak ada yang jelas, tetapi mungkin sangat menarik. Jalannya mulai menanjak, tetapi ringan. Segera Anda akan naik
Peak of Nonsense : "Hore, Anda telah menyelesaikan beberapa kursus pertama! Semuanya ternyata!" Pada tahap ini, euforia kesuksesan pertama membayangi mata. Kesuksesan tampaknya dekat, meskipun Anda masih berada di awal perjalanan. Dan berjuang untuk kesuksesan ini, Anda mungkin tidak memperhatikan bagaimana jatuhnya cepat ke dalam lubang dimulai. Dan nama lubang ini:
Valley of Despair : Jadi Anda mengikuti kursus utama, membaca beberapa buku dan memutuskan untuk mulai menulis sesuatu untuk Anda sendiri. Dan tiba-tiba itu tidak berhasil . Segala sesuatu tampaknya diketahui, tetapi bagaimana menggabungkan ini untuk membuatnya berfungsi tidak jelas. "Aku tidak tahu apa-apa , " "Aku tidak akan berhasil . " Pada titik ini, banyak yang menyerah. Sebenarnya, benar-benar ada pengetahuan, dan mereka belum menguap ke mana pun. Persyaratan yang jelas, dukungan menghilang begitu saja. Pemrograman nyata telah dimulai. Ketika Anda harus bermanuver di ruang di mana ada tujuan, tetapi tidak ada tahap peralihan, banyak yang jatuh pingsan. Tetapi pada kenyataannya ini hanya satu tahap pelatihan lagi - bahkan jika untuk sepuluh kali pertama semuanya akan berubah entah bagaimana, dengan usaha keras, jelek. Hal utama adalah menyelesaikan masalah berulang-ulang, setidaknya entah bagaimana . Untuk kesebelas kalinya, segalanya akan lebih mudah. Di kelima puluh, solusi akan muncul yang akan tampak indah untuk Anda. Dalam keseratus itu tidak akan menakutkan. Lalu datang
Kemiringan Pencerahan : Pada tahap ini, ujung-ujung pengetahuan dan ketidaktahuan Anda muncul dengan jelas. Ketidaktahuan tidak lagi menakutkan, pemahaman muncul bagaimana mengatasinya. Bergerak di ruang tanpa solusi akan menjadi lebih mudah. Ini adalah garis akhir. Sudah menyadari kekurangan Anda sebagai spesialis, Anda akan menyelesaikan dan mengkonsolidasikan yang diperlukan dan dengan jiwa yang tenang masuk
Stability Plateau : Selamat. Ini adalah akhir. Anda seorang spesialis. Anda dapat bekerja, Anda tidak akan tersesat ketika bertemu dengan teknologi yang tidak dikenal. Anda dapat mengatasi hampir semua masalah jika Anda melakukan usaha yang cukup. Dan terlepas dari kenyataan bahwa ini adalah garis finish, ini hanyalah awal dari jalan yang lebih besar.
Jalur seorang programmer.
Semoga beruntung dengan itu!
Sastra untuk bacaan opsional :
Tentang menjadi seorang programmer dan efek Dunning-Krueger: tyk .
Hardcore-cara untuk menjadi programmer dalam 9 bulan (bukan untuk semua orang): tyk .
Daftar proyek yang dapat dilaksanakan secara mandiri selama pelatihan: tyk .
Hanya sedikit motivasi ekstra: tyk .