Pada kali ini saya ingin berbagi tentang bagaimana saya belajar code. Sebenarnya bisa dibilang saya juga masih termasuk programmer pemula, tapi menurut saya hal itu tidak menjadi penghalang bagi saya untuk berbagi tentang bagaimana proses yang saya alami saat belajar programming.
Putus Asa
Sebelum kita berlanjut pada pembahasan judul, saya juga ingin berbagi tentang bagaimana kegalauan yang saya alami pada saat saya berada pada area kebuntuan. Kebuntuan disini maksudnya adalah timbulnya doktrin negative didalam diri saya. Pada saat itu saya terus mengeluh dan menghakimi bahwa mungkin diri saya memang tidak cocok menjadi seorang programmer, mungkin diri saya memang tidak memiliki bakat dibidang programming, saya merasa bodoh ketika melihat struktur kode yang tidak bisa saya terjemahkan. Belum lagi ketika melihat teman yang sudah master didalam programming, timbul perasaan minder dan lagi-lagi saya langsung menghakimi bahwa saya tidak cocok di dibidang ini.
Doktrin keputusasaan itu terus menguasai diri saya, sehingga membuat saya down dan tidak melakkukan apa-apa, ya karena terus berkutat pada doktrin negative itu membuat saya tidak melakukan apa-apa.
Move On
Saya berpikir saya sudah memulai perang ini (perang melawan kebodohan), saya sudah terlanjur memilih kuliah juruan teknik informatika, untuk memulai perang saja saya sudah banyak mengeluarkan pengorbanan, merantau meninggalkan kampung halaman, biaya kuliah dan sebagainya. Maka melihat pengorbanan yang telah saya keluarkan, hanya ada satu pilihan bagi saya, yaitu terus berperang. Bukan hanya sekedar terus berperang, bukan hanya sekedar melanjutkan kuliah, tapi memang saya ingin benar-benar membangun jiwa seorang IT didalam diri saya. Saya tidak ingin membohongi diri saya sendiri, saya harus sadar bahwa apa yang saya jalani adalah benar-benar pilihan saya. Saya tidak ingin menjadi sarjana IT, tetapi saya tidak mengerti apa-apa.
Alhamdulillah pemikiran itu menjadi loncatan agar saya move on dari zona keputusasaan. Semangat move on itu ternyata belum cukup menjawab permasalahan saya selama ini. Masih banyak timbul pertanyaan dibenak saya, dan masih banyak pertanyaan belum saya jawab. Maka untuk bisa ketahap selanjutnya, saya harus menyelesaikan tahap ini. Untuk itu saya berusaha menjawab pertanyaan yang belum saya jawab, yaitu bagaimana saya belajar programming, bagaimana agar saya bisa programming. Untuk menjawab pertanyaan tersebut saya melakukan beberapa cara, yaitu dengan cara membaca blog, melihat video youtube, dengan cara bertanya ke ahlinya dan sebagainya. Lalu apakah saya pertanyaan saya terjawab ? jawabannya terjawab tapi tidak semua. Karena dari resource tersebut hanya menjelaskan secara umum dan tidak spesipik sedangkan jawaban yang saya inginkan adalah jawaban yang detail. Walaupun begitu, bukan berarti saya tidak menghargai saran dan penjelesan orang lain. Saya tetap harus berterima kasih, karena bagaimanapun jawaban-jawaban itu tetap menambah energy positif bagi saya.
Dari proses pencarian jawaban tersebut akhirnya saya menemukan beberapa jawaban. Saya sadar ternyata selama ini saya hanya focus pada doktrin negatife, seharusnya yang saya lakukan adalah action bukan mengeluh. Saya merasa bodoh ketika tidak bisa menerjemahkan kode, baru satu jam saja saya sudah langsung mengeluh padahal para programmer expert diluar sana terkadang butuh berhari-hari, bahkan berminggu-minggu untuk menyelesaikan bugs tersebut. Saya menyadari bahwa selama ini saya hanya terfokus pada hasil, saya melihat para expert hanya dari sisi bahwa mereka ahli tetapi saya tidak melihat bagaimana proses mereka belajar hingga mereka bisa menjadi expert dibidang programming. Setelah saya melihat lagi, ternyata mereka membutuhkan waktu bertahun-tahun untuk menjadi ahli. Sesuai dengan penelitian yang pernah saya baca. Yang mengatakan untuk menjadi ahli dibutuhkan 10.000 jam latihan.
“Kita memang sering begitu, takjub seroang pesulab, tapi tidak pernah tau seberapa besar usaha sang pesulap”
Saya juga menemukan jawaban didalam sebuah quote yang mengatakan “tidak ada yang namanya bakat, bakat sesungguhnya adalah terus melakukan tidak pernah menyerah”. Saya juga menemukan jawaban dari sebuah blog yang mengatakan orang yang tidak memiliki bakat sebenarnya bisa mengalahkan orang yang berbakat dan kuncinya adalah terus melakukan dan menjadikannya kebiasaan. Maka dari itu teman-teman harus membuang persepsi negative yang merasuki diri kita. Jangan dikotomi istilah bakat, yang kita butuhkan hanyalah action dan lakukan terus menerus. Bukankah tuhan terlihat tidak adil jika Dia hanya memberikan potensi bakat pada sebagian orang saja ? saya percaya bahwa yang namanya bakat itu ada. Tapi Tuhan tetap adil, karena bagi orang tidak berbakat cukup membutuhkan kerja keras untuk mengalahkan orang yang berbakat.
Alhamdulillah, sekarang saya tidak perlu putus asa lagi.
Untuk tahap selanjutnya hal tidak kalah penting adalah kita harus tahu tentang “how to learn” karena dalam belajar bukan hanya tentang belajar itu sendiri, tetapi juga harus tahu tentang cara belajar, agar proses belajar kita lebih cepat, lebih efisien dan menyenangkan.
Oke, sudah cukup curhatnya :v mari kita langsung pada pembahasanan.
Pertama saya ingin sharing cara belajar secara umum.
1. Belajar secara online.
Ada banyak resource belajar programming secara online dimulai dari berbahasa Indonesia, sampai berbahasa inggris. Diindonesia ada www.codesaya.com yang memiliki pembelajaran struktur dengan metode learn by doing anda akan diberi tugas dan harus menyelesaikannya dengan langsung ngoding (live coding) di web tersebut, saya sendiri sangat suka belajar dengan motede seperti ini. Usahakan anda mendokumentasikan kodingan anda, agar anda bisa melihat dan mempelajarinya lagi lain waktu. Anda juga bisa belajar dari web lain :
- Codecademy.com
- Codekhan.com
- Codeschool.com
- Hourse code
- Freecodecamp.com
- Udacity.com
- Decoding.com
- Dll
2. Mengikuti Codecamp.
Cara belajar ini juga sangat efektif anda akan memiliki mentor yang akan membimbing anda. Yang saya suka dari metode ini adalah kita akan belajar secara berpasangan dengan teman atau pembimbing secara langsung. Penyampaian materi secara langsung oleh pembimbing dengan pembatasan peserta dalam satu kelompok akan membuat anda cepat menyerap ilmu yang disampaikan. Anda pasti pernah merasakan bagaimana rasanya mengikuti kelas yang mahasiswanya sampai 50 orang, belum lagi jika anda duduk dibelakang. Anda bisa mencobanya disini :
- Hactiv8.com
- Refacotry.com
- dll.
3. Belajar dari tutorial.
Belajar dari tutorial juga menyenangkan, anda bisa mengumpulkan tutorial sebanyak-banyaknya, bisa dari blog, video tutorial, atau buku. Tapi ingat, jangan hanya mengumpulkan, tapi anda harus benar-benar mempelajarinya, karena saya punya pengalaman saya mengumpulkan tutorial sebanyak-banyak tapi saya tidak menyentuhnya sama sekali. Anda bisa mendapatkan tutorial disini :
- Codepolitan.com
- Dunialkom.com
- Code.tutplus.com
- W3school.com
- Jagokoding.com
- Dll.
-
4. Update Informasi
Salah satu tantangan dalam dunia IT adalah teknologi yang sangat cepat berkembang. Anda akan menyaksikan setiap hari framework, tool dan bermunculan. Dan mengikuti perkembangan teknologi adalah konsequensi bagi para pelaku IT. Untuk mengikuti informasi terbaru seputar IT anda bisa mengikutinya di :
- Codepolitan
- Techinasia.com
- Dailysocial.com
- Techrun.com
- Dll.
5. Belajar dari Ahlinya.
Belajar dari ahlinya bukan berarti anda harus bertemu dengan orangnya, tapi yang saya maksud disini adalah anda mengikuti perkembangan teknologi dari mereka. Karena biasanya mereka pasti membuat tulisan, screencast, ebook, atau dokumentasi. Anda bisa mengikuti mereka di account, facebook, linked, medium.com, github.com yang mereka miliki. Diindonesia banyak para master programming seperti Mas Siddiq Permana, Ibnu Sina (Google Expert Indonesia), Rahmat Awwaludin (Pembuat Ebook Laravel), Mas Irvan (Creator F Framework), Mas Kresna Galuh (CEO Codepolitan), Mas Endy Muhardin (Java Expert Indonesia) dan masih banyak lagi. Biasanya mereka akan terus update tentang teknologi terbaru. Dampak positif yang kita dapatkan adalah, kita akan terus termovitasi dari pemikiran dan karya mereka dan itu langsung dari mereka. Saya berani menyebut nama mereka karena itu konsekuensi mereka sebagai pejuang digital di Indonesia he he :v
Pada bagian kedua ini saya ingin berbagi cara belajar yang lebih spesipik.
1. Buat Target
Sebelum anda memulai belajar, terlebih dahulu anda harus mendefenisikan kerangka belajar anda, anda harus membatasi ruang lingkup pembahasan anda dan goal apa yang ingin anda capai. Sebagai contoh kerangka belajar yang saya buat adalah :
- Mengerti konsep Variable dalam PHP
- Mengerti konsep Array dalam PHP
- Mengerti Konsep Fungsi dalam PHP
- Mengerti Konsep Prosedural dalam PHP
- Mengerti Konsep OOP dalam PHP
- Mengerti Konsep Pembuatan Document dalam PHP
- Mengerti Konsep Database Mysql (CRUD)
- Mengerti Konsep Database Relationship.
2. Kumpulkan Resource
Setelah anda membuat target yang ingin anda capai, tahap selanjutnya lakukan pengumpulan materi yang berhubungan dengan pembahasan, anda bisa menemukannya di blog, video, dan sebagainya. Pengalaman yang saya lakukan, karena keterbatasan akses internet, saya langsung menyimpan halaman suatu web tutorial di labtop saya dan saya akan mempelajarinya lagi dirumah. Dari sekian banyak tutorial itu, lakukan penyeleksian sesuai dengan kebutuhan target anda.
3. Lakukan Step By Step
Anda harus melakukannya dengan cara step by step, terstruktur, dan tidak meloncat. Agar anda dapat memahami materinya dengan sangat baik.
4. Buat Komitmen
Susunlah komitmen anda berjanjilah kepada diri sendiri untuk terus melakukan proses belajar. Misalkan anda membuat target belajar 100 hari. Maka anda harus terus konsisten melakukan hal tersebut. Buatlah timelienya di papan tulis kamar anda. Anda juga bisa membuat hastag #100HariTantanganCode. Ingat anda harus mengikuti target yang anda buat sebelumnya, harus ada perbedaan dan ada peningkatan setiap harinya.
5. Gunakan Ceklis
Buatlah list ceklis target anda, dan ceklis setiap kali anda berhasil menyelesaikannya. Metode ceklis sangat bermanfaat supaya anda tidak keluar dari target yang anda buat. Metode ceklis juga akan memandu supaya anda tidak melupakan satu step pun.
6. Cari Pertanyaan dari Fitur,Tampilan dari suatu web dan lakukan pencarian solusi.
Terkadang resource yang kita dapatkan masih bersifat umum, dan contoh tutorialnya masih belum diimplementasikan kedalam suatu permasalahan. Mungkin teman-teman sering menemukan tutorial yang Cuma membahasa pengulangan untuk menampilkan 0 s/d 10 atau kondisi yang hanya membandingkan bilangan genab atau ganjil. Untuk itu teman-teman harus mengexplorasi pertanyaan, gunakan list, dan cari sebanyaknya pertanyaan yang berkaitan dengan implementasi sebuah code dalam project. Misalnya :
- Bagaimana code PHP untuk membuat delete dengan cara ceklis banyak.
- Bagaimana code PHP untuk membuat multiple upload.
- Bagaimana code PHP untuk membuat pagination.
- Bagaimana code PHP untuk membuat multiple login.
- Bagaimana code PHP untuk membuat urutan artikel berdasarkan post terbaru
- Dan pertanyaan lainnya.
Anda bisa menemukan pertanyaan tersebut di sebuah web.
7. Membaca Dokumentasi
Sering-seringlah membaca dokumentasi code, dengan sering-sering membaca dokumentasi anda akan banyak menemukan pengimplementasian code, seperti kapan digunakan kondisi, kapan digunakan while, dan anda juga akan menemukan berbagai jenis implementasi fungsi. Berilah komentar pada code yang telah berhasil anda pahami agar anda mudah mengingatnya dan berilah komentar tanda tanya pada code yang tidak anda pahami, lalu masukkan ke daftar list pertanyaan kemudian cari jawabannya. Anda bisa membaca dokumentasi yang ada digithub atau source code lainnya.
(isset($_POST['cicil1'])) ? $cicil1 = '1' : $cicil1 = '0'; (isset($_POST['cicil2'])) ? $cicil2 = '1' : $cicil2 = '0'; (isset($_POST['cicil3'])) ? $cicil3 = '1' : $cicil3 = '0'; (isset($_POST['cicil4'])) ? $cicil4 = '1' : $cicil4 = '0'; (isset($_POST['cicil5'])) ? $cicil5 = '1' : $cicil5 = '0'; (isset($_POST['cicil6'])) ? $cicil6 = '1' : $cicil6 = '0';
mungkin bagi yang baru pertama kali melihat code php diatas terlihat membingungkan.
8. Buat Kamus Libarary Bahasa
Buatlah catatan kecil untuk mencatat fungsi-fungsi bawaan pada suatu bahasa, hapal dan pahamilah penggunaan fungsi tersebut. Sebagai contoh pada bahasa PHP ada fungsi bawaan — mysqli_fetch_row();
– mysqli_fetch_array();
– md5();
- Implode();
- Prepare();
- Isset();
- Empty();
- Replace()
- Dll.
9. Lakukan Perbandingan dan Eksplorasi Code
Agar lebih paham, lakukan metode perbandingan. Sebagai contoh kita sering menjumpai fungsi yang aneh-aneh, kumpukan fungsi tersebut dan bandingkan. Contoh lainnya pada pembahasan OOP kita akan dikenalkan istilah design pattern (jenis-jenis implemntasi OOP)………… Atau di mysql kita menemukan berbagai jenis cara koneksi database seperti cara klasik, cara procedural, cara OOP, dan cara PDO. Lakukanlah perbandingan, temukanlah perbedaannya dan pahami saat kapan fungsi tersebut harus digunakan. Sebagai contoh dibawah ini ada beberapa contoh penerapan fungsi, kita bisa membedah dan membadingkan code tersebut agar kita lebih paham :
fungsi 1
var kali = function pengali(a, b) { if (b === 1) { return a;} else { return a + pengali(a, b - 1)}}; kali(3, 4); // 12 kali(4, 2); // 8 kali(5, 10); // 50
fungsi 2
var duaKali = function (fungsi, nilai) { return fungsi(fungsi(nilai)); }; var kuadrat = function (x) { return x * x; }; duaKali(kuadrat, 2); // menghasilkan 16 kuadrat(kuadrat(2)); // sama dengan di atas var kombinasi = function() { var funcs = arguments; return function(nilai) { var i = 0, hasil = nilai; for (i = 0; i < funcs.length; i++) { hasil = funcs[i](hasil); } return hasil; }; };
fungsi 3
var tambah = function (x) { return function (y) { return x + y; };}; var t1 = tambah(4); // t1 adalah fungsi t1(5); // menghasilkan 9// singkatnya tambah(4)(5); // menghasilkan 9
contoh perbandingan koneksi database didalam php
<?php // cara mengakses MySQL menggunakan mysql extension: $link = mysql_connect("localhost", "root", "qwerty"); mysql_select_db("universitas"); $result = mysql_query("SELECT * FROM mahasiswa"); $row = mysql_fetch_assoc($result); // cara mengakses MySQL menggunakan mysqli extension: $mysqli = new mysqli("localhost", "root", "qwerty", "universitas"); $result = $mysqli->query("SELECT * FROM mahasiswa"); $row = $result->fetch_assoc(); // cara mengakses MySQL menggunakan PDO: $pdo = new PDO('mysql:host=localhost;dbname=universitas', 'root', 'qwerty'); $statement = $pdo->query("SELECT * FROM mahasiswa"); $row = $statement->fetch(PDO::FETCH_ASSOC); ?>
10. Lakukan Kombinasi
Ketika kita telah paham dengan sebuah bahasa pemrograman, tahap selanjutnya terkadang kita dibingungkan cara mengkobinasikan dari berbagai bahasa. Untuk kombinasi HTML, Javascript, PHP saja kadang cukup membingungkan. Apa lagi suatu saat kita dihadapkan dengan framework seperti laraver, kemudian react js. Bagaimana kita mengkombinasikannya ? maka lakukanlah percobaan kombinasi code.
require 'vendor/autoload.php'; $app = function ($request, $response) { $response->writeHead(200, array('Content-Type' => 'text/plain')); $response->end("Hello World\n"); }; $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $http = new React\Http\Server($socket, $loop); $http->on('request', $app); echo "Server running at http://127.0.0.1:1337\n"; $socket->listen(1337); $loop->run();
11. Buat Catatan dan Lakukan Simulasi Code.
Jika anda telah berhasil memahami suatu code, cobalah membuat simulasinya kedalam sebuah catatan. Sebagai contoh bagaimana anda menggambarkan proses pengulangan, kondisi, fungsi, bagaimana menggambarkan link-list, stack, struck dan konsep algoritma atau struktur data lainnya. Konsep ini sangat bagus untuk memperkuat pemahaman dan daya ingat terhadap code. Anda juga bisa mempelajari simulasi pemrograman dari https://visualgo.net/
12. Lakukan Pengulangan.
Jika anda telah berhasil pada suatu materi lakukanlah pengulangan sampai benar-benar anda paham, sampai suatu yang sulit menjadi hal biasa bagi anda. Ibaratkan mengasah pisau, pengulangan itu akan mempertajam kemampuan kita. Mungkin kita pernah merasa takjub ketika melihat C. Ronaldo melakukan samba, dari sudut pandang kita itu luar biasa dan sangat sulit untuk dilakukan, sedangkan dari sudut pandang C. Ronaldo sendiri itu biasa saja, karena memang itu sudah menjadi kebiasaannya. Ada sebuah quote, manusia membuat kebiasaan, dan manusia terbentuk dari kebiasaannya.
13. Fokus pada Satu Bidang
Yang terakhir, pilihlah minat yang anda sukai dan fokuslah pada satu bidang itu. Mempelajari semua bahasa hanya akan memahami secara umum(kulit luar) dari semua bahasa itu. Begitu juga di dunia perusahaan biasanya lebih memilih orang yang fokus pada bidang tertentu. Pemahaman itu ada levelnya dimulai dari tahu,bisa,bisa-mengajari, ahli dan expert.
Itulah proses belajar yang saya alami. Semoga bermanfaat.
Level artikel ini adalah beginner.
Dituliskan oleh
Musliadi (musliadi)
pada 5 Januari 2017 dan telah dibaca sebanyak 11955 kali.
Tag:
programmer,
code
Komentar:
ur__DNA
131
53
·
7 tahun, 11 bulan yang lalu
·
3 jempol
@musliadi , asik yg terakhir ada step cerah "pemahaman itu ada levelnya... dst. "
auf4R
300
5
·
7 tahun, 11 bulan yang lalu
·
2 jempol
Yak, betul juga.. ane tambahi sedikit ya @Musliadi.. sebenernya pengetahuan programming yang kita miliki itu bukan karena kita memang udah bisa programming dari lahir, tapi bisa dari orang lain, dari buku yang kita pegang (udah jelas yang tentang programming ^^), atau karena belajar di website lain. Ingat, pengetahuan itu berasal dari ketidaktahuan ^^.
musliadi
210
0
penulis
·
7 tahun, 11 bulan yang lalu
·
1 jempol
@auf4R, ia mas... ibaratkan gelas, kita harus mengisinya mas... :) skill harus terus di asah, terima kasih tambahannya mas
musliadi
210
0
penulis
·
7 tahun, 11 bulan yang lalu
·
1 jempol
@ur_DNA, ia mas... kita perlu pantang menyerah, kalau kita terus belajar kita pasti naik level :) fighting :)
musliadi
210
0
penulis
·
7 tahun, 11 bulan yang lalu
·
1 jempol
@Danboru, betul mas. tidak ada alasan untuk berhenti belajar.... qoutenya keren mas :)
Annam
108
2
·
7 tahun, 10 bulan yang lalu
·
1 jempol
Mantap, artikel yg sangat bagus dan sangat bermanfaat (y)
fendrik1311
184
0
·
7 tahun, 10 bulan yang lalu
·
1 jempol
thank mas, artikelnya mantap (y)
musliadi
210
0
penulis
·
7 tahun, 8 bulan yang lalu
·
1 jempol
thank you mas @fendrik1311. semoga dapat membantu :)
xjulyjulian
30
0
·
7 tahun, 8 bulan yang lalu
·
1 jempol
thanks mas , semoga pahalanya makin bertambah :)
musliadi
210
0
penulis
·
7 tahun, 7 bulan yang lalu
·
1 jempol
@xjulyjulian... amin...
buginese
9
0
·
7 tahun, 7 bulan yang lalu
·
1 jempol
kalau untuk web design code yang paling pertama yang harus di pelajari apa? kepengen jadi desainer web tapi belum memilki bakat apa-apa soalnya kuliah di bidang yang jauh dari jurusan IT#terimakasih
RizkiMuhammadIqbalDyaz
72
0
·
7 tahun, 6 bulan yang lalu
·
1 jempol
mantap mas,makasih mas dapat memotivasi juga
musliadi
210
0
penulis
·
7 tahun, 6 bulan yang lalu
·
2 jempol
@buginese 1. saran saya belajar HTML+CSS+PHP, pilih resource atau buku yang implementasi project. 2. nanti kalau udah bisa buat satu project, kemudian perdalam dengan javascript+jquery. 3. Langkah ke tiga, coba buat perbandingan, mana lebih enak ngoding model prosedur, atau OOP. 4. Setalah udah bisa OOP, dan udah bisa JS, 5. Coba belajar framework seperti codeigniter atau laravel (berbasis project) 6. Setelah itu coba belajar dari sisi front end misal React, VueJs, Angular (berbasis project) 7. Setelah udah merasakan semua sisi, selanjutkan putuskan mau fokus kemana. Mau front end, back end, atau full stack developer.
musliadi
210
0
penulis
·
7 tahun, 6 bulan yang lalu
·
2 jempol
@rizki sama-sama mas :) ngoding terus mas :)
terischen
300
28
·
7 tahun, 5 bulan yang lalu
·
1 jempol
luar biasa curhatnya dan membangun motivasi.. Good Job :)
mnatsir0410
3
0
·
7 tahun, 2 bulan yang lalu
·
1 jempol
mencerahkan
Artikel Lainnya
Irwansyah
6 Februari 2017Yuk belajar Kriptografi atau Enkripsi lebih mudah dengan software "CrypTool"
Hallo coder, selamat malam....
pada kesempatan kali ini saya ingin membahas tentang bagaimana belajar Kriptografi/Enkripsi lebih mudah dengan program "CrypTool". yukkkk simak artikelnya .... ^.^
Bagi para coders atau praktisi IT ...
5 menit bacaan
Danang Priabada
14 Oktober 2016Tips Belajar Programming
Kenyataannya Programing itu gampang-gampang susah, banyak yang bilang susah, krn saya juga berfikiran seperti itu. Tapi Belakangan ini saya menemukan beberapa tips ampuh untuk belajar programing yang bisa kalian terapkan ...
5 menit bacaan · beginner
Danboru56
0
·
7 tahun, 12 bulan yang lalu
·
6 jempol