Artikel ini akan memaparkan beberapa tips buat teman-teman yang ingin belajar pemorgraman dengan efisien. Seluruh tips disini murni adalah pengalaman pribadi saya, baik yang saya alami sendiri dan juga hasil diskusi dan obrolan dengan teman sesama developer.
“I think everybody in this country should learn how to program a computer because it teaches you how to think.” — Steve Jobs dari Apple Inc.
Sebelum kita bahas tentang bagaimana cara belajar, alangkah lebih baik jika kita membahas tentang alasan atau motivasi untuk belajar pemrograman. Teman-teman harus menemukan motivasinya sendiri-sendiri terlebih dahulu agar proses belajar bisa lebih lancar dan efisien. Motivasi adalah elemen penting yang seringkali tidak ditemukan ketika ingin belajar pemrograman.
“Masih ada yang ngibul dengan bilang belajar ngoding itu gampang? Percayalah, tidak akan pernah mudah tapi bukan berarti mustahil. — Agung Setiawan dari idrails
Kenapa penting? Karena pemrograman itu adalah hal yang tidak mudah. Dan ketika kita mengalami kesulitan dan bertemu rintangan yang sangat tinggi untuk dilewati, motivasilah yang dapat membantu kita untuk tetap melaju.
Nah buat teman-teman yang sudah dapat motivasi untuk belajar pemrograman, apapun itu bagus. Artinya langkah pertama sudah terlewati. Namun buat teman-teman yang belum menemukan alasan dan motivasi dan kesulitan menemukannya, berikut beberapa hal yang bisa dijadikan motivasi.
Kalau belajar pemrograman itu sulit, terus kenapa kita harus belajar pemrograman? Kenapa tidak?! Justru karena susah itu dapat menjadikan alasan kita belajar pemrograman. Jika mudah, semua orang saat ini sudah ngoding dan jadi developer. Karena susah, itulah sebabnya masih banyak kesempatan dan tantangan buat kita untuk menguasai pemrograman.
Pemrograman melatih kita mencari masalah dan menemukan solusi atas masalah tersebut. Jika teman-teman ingin mengasah* skill problem solving* yang sangat dibutuhkan di dunia wirausaha atau entrepreneurship, maka belajar pemrograman merupakan langkah yang tepat. Karena pemrograman esensinya adalah proses menemukan solusi atas masalah yang ditemukan.
“Carilah masalah! Ini adalah hal menarik yang harus dilakukan semua orang. Itulah kerjaan gue, mencari masalah. TAPI, tidak berhenti sampai di masalah, kita juga harus mencari solusi atas masalah tersebut. “— Sofian Hadiwijaya dari Warung Pintar.
Jika teman-teman punya pekerjaan yang boring, berulang dan itu-itu saja, kita bisa meminta bantuan kepada komputer untuk mengerjakannya untuk kita, dengan bantuan pemrograman tentunya. Membersihkan data yang kurang berguna, generate laporan, blast email dan banyak lagi yang bisa kita lakukan dengan bantuan skill programming yang kita miliki sehingga dapat membuat pekerjaan kita menjadi lebih ringan.
Cepat atau lambat, suka atau tidak suka di satu titik kita harus berhubungan dengan orang lain. Baik itu teman setim, rekan kerja, atasan, bawahan hingga orang lain yang kita hire untuk melakukan pekerjaan untuk kita. Percaya atau tidak, belajar pemrograman dapat melatih kita bagaimana cara bekerjasama dengan orang lain, terutama bekerja dengan developer lain. Dengan belajar pemrograman kita jadi dapat setidaknya mengetahui bagaimana pola pikir developer sehingga salah persepsi dan miskomunikasi dapat diminimalisir. Misalnya teman-teman punya ide produk atau startup dan ingin meminta pihak ketiga untuk membuat aplikasi untuk kita, akan tetapi kita buta teknologi dan tidak tahu banyak tentang pemrograman harus berhati-hati karena bisa-bisa kita tertipu karena tidak mengetahui teknis, scope pekerjaan dan juga estimasi biaya yang diminta.
Developer adalah sosok yang unik. Kita, developer mampu membuat sesuatu yang tidak terbayangkan dari nol. Istilah kerennya, we can make something out of nothing. Tidak sedikit orang-orang belajar pemrograman hanya untuk menggapai mimpinya memiliki produk sendiri. Jadi berbahagialah kita yang sudah jadi developer, kita sudah memiliki kemampuan membuat sesuatu. Jadi tunggu apalagi?! Buatlah sesuatu dan tunjukkan kepada dunia :)
“…I went through 3–4 years thinking I was going to meet some magical engineer who would build all the stuff I was thinking about. But I never met that person, so I taught myself ASP and MS Access out of a book and got to work just hacking stuff together. I’m still a really shitty programmer but I know enough to hack a prototype together.” — Dennis Crowley, co-founder dari Foursquare dan Dodgeball.
Dan buat yang bercita-cita ingin punya produk atau startup sendiri, segeralah belajar pemrograman.
Dunia pemrograman dan software atau aplikasi sedang dalam masa-masa yang menyenangkan. Software menjadi elemen penting dan krusial di segala sisi kehidupan kita. Mulai dari hiburan dengan smart tv, pendidikan dengan online learning, hingga berbagai aplikasi mobile yang kita konsumsi sehari-hari semuanya bergantung kepada *sofware *atau aplikasi yang dibangun oleh developer. Sehingga secara tidak langsung developer jadi *‘kecipratan’, *memiliki nilai ekstra karena kemampuannya membuat sesuatu.
“Software is eating the world, in all sectors. In the future every company will become a software company.” — Mark Andreessen dari Andreessen-Horowitz VC
Selain itu, kemampuan programming dapat juga kita gunakan untuk mencari pekerjaan *freelance *dengan memanfaatkan platform seperti UpWork, Freelancer dan masih banyak lagi. Kesempatan terbuka luas karena seluruh dunia membutuhkan developer.
Ok sekarang kita masuk ke pokok pembicaraan. Saya akan memberikan langkah-langkah yang sebaiknya ditempuh untuk belajar pemrograman dan beberapa contoh implementasinya.
Ini langkah awal yang sangat penting. Teman-teman harus tahu gaya belajar yang bagaimana yang cocok untuk masing-masing individu. Tidak ada cara yang salah atau benar. Yang salah adalah meniru cara belajar orang lain yang ternyata tidak sesuai dengan gaya belajar kita. Semua orang punya cara belajar masing-masing. Ada yang belajar sangat efektif dengan membaca baik itu membaca buku, dokumentasi, artikel atau bahkan membaca source code orang.
Kemudian untuk teman-teman yang punya gaya belajar visual bisa belajar dari video online course seperti Udacity, Udemy atau bahkan video di youtube yang resource-nya berlimpah baik yang gratisan atau yang berbayar. Yang perlu diingat ketika sebuah video atau online course rasanya ngga nyambung, jangan dipaksakan. Gaya penyampaian di video pun bervariasi. Ada yang menggunakan pendekatan praktikal, teoritikal, menggunakan studi kasus dan lain sebagainya. Cari saja yang paling cocok dan nyambung dengan kita.
Bagaimana dengan teman-teman yang audio? Tentu saja bisa. Teman-teman bisa belajar dari audio books atau podcast. Saya adalah salah satu orang yang suka sekali mendengarkan podcast terutama ketika sedang dalam perjalanan dari dan ke kantor. Makanya saya juga memproduksi podcast https://ceritanyadeveloper.com.
Sekali lagi, tidak ada yang salah dengan cara belajar kita. Dan yang membuat lebih menarik adalah kita juga bisa kombinasikan gaya diatas sehingga learning experience yang kita dapatkan semakin ‘kaya’. Dan hal ini yang biasa saya lakukan ketika ingin belajar hal baru. Saya biasanya mulai dengan video lessons ditambah dengan mendengarkan podcast ketika perjalanan dari dan ke kantor. Saya mendengarkan podcast yang berkaitan dengan topik yang ingin saya pelajari. Tidak harus langsung mengerti, yang penting dikonsumsi saja semua dulu. Dan ketika ingin menggali lebih dalam, baru saya mencari dan membaca buku ataupun dokumentasi.
Saya adalah tipe orang yang sangat praktikal dan sangat senang belajar dengan cara yang praktikal pula seperti belajar dari studi kasus ataupun belajar hal baru sambil mengerjakan proyek. Dan apabila teman-teman juga punya gaya yang sama, belajarlah sesuatu sambil memperkuat skill fundamental kita.
Carilah library atau framework yang tidak hanya bagus untuk dipelajari, tetapi juga mampu mengasah skill fundamental kita. Misalnya saja React membantu saya memperkuat fundamental JavaScript saya. Saya jadi belajar hal-hal menarik seperti filter, map, reduce, binding, arrow function hingga scoping saat saya mendalami React. Dan saya jadi lebih tertarik kepada functional programming gara-gara React dan Redux.
Begitu juga dengan web framework Flask. Pertama kali belajar Python, saya menggunakan Django sebagai web framework pilihan. Tapi karena fundamental Python saya masih kurang, saya merasa bingung dan kurang mengerti cara kerja Django, it’s just works! Kemudian saya coba belajar framework lain, Pyramid dan akhirnya bertemu yang cocok di framework Flask. Fundamental saya sangat terasah dengan framework Flask karena Flask adalah framework yang isinya sangat minimal. Banyak hal-hal yang harus diurus dan dikerjakan sendiri. Sehingga membantu saya mengerti banyak hal tentang Python itu sendiri. Mungkin banyak orang yang kurang menyukai sebuah framework minimal seperti Flask atau Express karena banyak hal yang harus dikerjakan sendiri, akan tetapi karena tujuan saya sambil belajar Python hal-hal yang dikerjakan sendiri justru membuat saya jadi lebih mengerti Python dan cara kerja framework tersebut.
Jadi carilah framework atau library yang selain ok juga mampu mengasah skill dasar kita sebagai developer. Buat saya React dan Flask, buat teman-teman tentu saja bisa berbeda dengan pilihan saya.
Nah hal ini yang kadang-kadang luput dari perhatian. Ketika belajar hal baru, sebaiknya kita fokus kepada satu hal di satu waktu, one step at a time. Jangan langsung belajar semua sekaligus. Misalnya ingin belajar React, ya fokus belajar React saja, ngga usah belajar React Router, Redux dan teman-temannya. Mau belajar Redux, ya fokus belajar Redux-nya saja, bahkan sebisa mungkin belajar Redux tanpa React dulu. Ketika sudah mengerti baru deh digabungkan sehingga learning curve-nya jadi lebih ringan.
Begitu juga di sisi backend. Belajar web framework terlebih dahulu, tanpa database. Setelah dirasa kompeten barulah belajar database dan koneksikan ke web framework tersebut. Intinya jangan belajar banyak hal sekaligus. Satu per satu.
Langkah berikutnya ya tinggal ngoding aja sesering mungkin. Tidak masalah bahasa pemrogramannya atau menggunakan framework apa. Sempatkan untuk coding setiap hari.
Dengan melakukan latihan coding setiap hari, kita menjaga momentum, *flow *dan disiplin. Layaknya latihan yang diberikan oleh Mr. Miyagi dalam film Karate Kid.
Wax on wax off
Awalnya berat memang. Jika terasa berat, ingat-ingat lagi motivasi kita belajar. Dan teman-teman bisa lihat bagaimana semua orang, bahkan expert sekalipun pernah mengalaminya.
I failed to learn programming at least 5 times
— Denny Britz (@dennybritz) August 21, 2017
Everyone is a noob, and if they're not a noob, they're a specialist, so they're just a noob at everything else
— TJ Holowaychuk 🙃 (@tjholowaychuk) August 21, 2017
If you're going to sit there and tell me you never struggled as a programmer, and that you always just got it, I'm calling BS.
— Preethi Kasireddy (@iam_preethi) August 21, 2017
Intinya, maju terus, ngoding terus. Jika masih belum berhasil ulangi lagi dari awal. Ngoding aja, tidak perlu mencari best practice untuk tahapan ini. Buat sesuatu, apapun itu. Yang penting teruslah ngoding.
Berikan kesempatan diri kita untuk menjadi bodoh, *give yourself permission to suck*. Tidak masalah kita bodoh dan merasa bodoh, justru kita harus merasa bodoh agar menjadi tidak bodoh lagi di masa depan. Kita akan tetap bodoh hingga kita menjadi bisa dan tidak bodoh lagi :) Dan menjadi bodoh bukanlah masalah. Jangan tanggapi pendapat orang lain.
Jika kamu belajar sebuah bahasa, coba gunakan bahasa tersebut untuk melakukan apapun. Sulit pasti, terutama diawal tapi ini adalah cara tercepat untuk menguasai sesuatu. Sama saja seperti kita belajar bahasa Inggris misalnya. Akan jauh lebih cepat apabila setiap hari kita menggunakan bahasa Inggris, apalagi jika kita berkesempatan mengunjungi negara yang menggunakan bahasa Inggris.
Gunakan media belajar sebanyak mungkin, tonton video tutorial, mendengarkan podcast, baca artikel terkait dan lihat bagaimana expert melakukannya sehingga kita juga mendapatkan tambahan motivasi dan inspirasi.
“A goal is a dream with a deadline” — Napoleon Hill
Tips ini adalah favorit saya. Karena saya bekerja dan belajar sangat efektif dengan deadline. Ada yang bilang SKS atau sistem kebut semalam adalah hal yang buruk. Buat saya tidak :) Saya adalah procastination sejati ;) Jadi saya butuh deadline untuk pressure. Apabila saya tidak menetapkan deadline, saya tidak akan pernah selesai belajar atau menyelesaikan pekerjaan saya. Saya akan menunda hingga mendekati deadline. Itulah sebabnya buat saya deadline itu penting.
Misalnya ketika skripsi yang seharusnya kita kerjakan selama enam bulan atau satu semester. Bisakah kita kerjakan selama dua bulan atau bahkan dua minggu?! Pasti jawabannya tidak. Tapi ketika kita akan mengerjakannya, biasanya kita menganggap enteng, “Ah, masih enam bulan lagi, santai lah.”. Selang dua bulan “Masih ada empat bulan kok, nge-game dulu aja, nanti setelah itu baru mulai ngerjain skripsi.”. Sisa dua bulan, baru deh panik dan mulai mengerjakan.
Jadi deadline dapat membantu kita menambah motivasi dan juga fokus. Motivasi jika skripsi tidak kita selesaikan, kita harus menunda rencana wisuda, dan harus membayar uang semester dan lain sebagainya. Sehingga memaksa kita untuk menyelesaikannya apapun yang terjadi, harus selesai. Saya menyebut fenomena ini sebagai The Power of Kepepet.
Begitu juga dengan belajar. Buatlah sebuah deadline yang jika tidak kita selesaikan pada waktunya ada semacam hukuman atau punishment. Misalnya apabila saya tidak bisa menguasai React, project yang sedang saya kerjakan tidak akan selesai, dan mengakibatkan uang proyek tidak cair dan lain sebagainya. The Power of Kepepet.
Jadi untuk belajar pemrograman, tidak ada cara yang benar atau yang salah. Yang ada, cara belajar yang efektif dan tidak efektif. Beberapa hal yang harus diperhatikan ketika akan belajar pemrograman adalah motivasi, carilah cara belajar yang efisien dan efektif versi kamu, belajar hal fundamental, fokus dan terus belajar. Terakhir, jangan lupa set deadline agar kamu mendapatkan motivasi tambahan dan menjadi super s̵a̵i̵y̵a̵ developer.
Jika teman-teman punya cara atau gaya belajar pemrograman yang menarik dan belum di-mention di artikel ini, share dong di kolom komentar. Pasti akan berguna untuk teman-teman yang lain juga.