Bagaimana Saya Belajar Pemrograman?

Musliadi 21 Januari 2017

Bagaimana Saya Belajar Pemrograman?

Sebelum kita memulai belajar pemrograman hal yang tidak kalah penting adalah kita harus tahu tentang “how to learn”. Karena dalam belajar bukan hanya tentang apa yang dipelajari, tetapi juga tentang cara belajar, agar proses belajar kita lebih cepat, efisien dan menyenangkan. Ibaratkan perang, kita harus tahu strategi dan taktik dalam mengalahkan musuh.

Untuk itu pada kesempatan kali ini saya ingin berbagi tentang bagaimana pengalaman saya dalam belajar pemrograman. Dan semoga tulisan ini nantinya dapat membantu teman-teman yang sedang dalam proses belajar pemrograman.

Untuk lebih memudahkan, saya akan membagi tulisan ini menjadi dua bagian, secara umum dan yang lebih spesifik.

Secara Umum

1. Belajar Pemrograman Secara Interaktif

Ada banyak resource belajar pemrograman secara online dan interaktif baik yang berbahasa inggris maupun berbahasa Indonesia. Untuk karya lokal sendiri ada codesaya.com dan bahkan codepolitan.com juga meluncurkan fitur ini. Metode ini memiliki pembelajaran struktur dengan konsep learning by doing. Kita akan diberi tugas dan harus diselesaikan dengan langsung ngoding di web tersebut. Saya sendiri sangat suka belajar dengan motede seperti ini. Usahakan Kamu mendokumentasikan kodingan Kamu, agar Kamu bisa melihat dan mempelajarinya lagi di lain waktu. Teman-teman juga bisa belajar dari web lain seperti:

2. Mengikuti Bootcamp/Offline Course

Cara belajar dengan mengikuti kelas offline juga sangat efektif. Kamu akan memiliki mentor yang akan langsung membimbing. Yang saya suka dari metode ini adalah kita akan belajar secara berpasangan dengan teman atau pembimbing secara langsung, disini kita diajarkan bagaimana kita menyelesaikan permasalahan secara bersama-sama.

Kamu pasti pernah merasakan bagaimana rasanya mengikuti kelas yang mahasiswanya sampai 50 orang, belum lagi jika Kamu duduk di belakang. Dengan mengikuti kelas offline dan dibimbing langsung oleh instruktur dengan jumlah peserta yang terbatas akan membuat Kamu cepat menyerap ilmu yang disampaikan. Jika tertarik teman-teman bisa belajar disini :

3. Belajar dari Tutorial

Belajar dari tutorial juga menyenangkan. Kamu bisa mengumpulkan tutorial sebanyak-banyaknya, bisa dari blog, video tutorial, atau buku. Tapi ingat, jangan hanya mengumpulkan, tapi Kamu harus benar-benar mempelajarinya. Karena saya punya pengalaman mengumpulkan tutorial sebanyak-banyak tapi saya tidak menyentuhnya sama sekali. Anda bisa mendapatkan tutorial disini :

4. Update Informasi

Salah satu tantangan dalam dunia IT adalah teknologinya yang sangat cepat berkembang. Kamu akan menyaksikan setiap harinya bahasa pemrograman, framework, dan programming tool bermunculan dan berkembang. Mengikuti perkembangan teknologi adalah konsequensi bagi para pelaku IT. Untuk mengikuti informasi terbaru seputar IT anda bisa mengikutinya di :

5. Belajar dari Ahlinya

Belajar dari ahlinya bukan berarti Kamu harus bertemu dengan orangnya, tapi yang saya maksud disini adalah kita mengikuti perkembangan teknologi dari mereka. Karena biasanya mereka pasti membuat tulisan, screencast, ebook, atau dokumentasi. Kamu bisa mengikuti mereka di account Facebook, Linkedin, Medium, dan Github yang mereka miliki. Di Indonesia banyak para master programming seperti diantaranya Mas Siddiq Permana, Ibnu Sina (Google Expert Indonesia), Rahmat Awaluddin (Laravel Expert), Mas Irvan (Creator F Framework), Mas Kresna Galuh (CEO Codepolitan), Mas Endy Muhardin (Java Expert Indonesia), Pak Peter Jack Kambey (PHP Indonesia) dan masih banyak lagi. Di luar negeri misalnya kita bisa mengikuti blog addyosmani penulis buku Javascript Design Pattern dan Google Developer, areelliot penulis buku “Programming JavaScript Applications” dan tentu masih banyak tokoh 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.

Secara Spesifik

1. Buat Target

Sebelum kita memulai belajar, terlebih dahulu kita harus mendefenisikan kerangka belajar. Kita harus membatasi ruang lingkup pembahasan dan goal apa yang ingin anda capai agar kita fokus. 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 relational database

2. Kumpulkan Resource

Setelah membuat target yang ingin kita capai, tahap selanjutnya lakukan pengumpulan materi yang berhubungan dengan pembahasan. Kamu bisa menemukannya di blog, video, dan sebagainya. Pengalaman yang saya lakukan, karena keterbatasan akses internet, saya langsung menyimpan halaman suatu web tutorial di laptop dan saya akan mempelajarinya lagi di rumah. Dari sekian banyak tutorial itu, lakukan penyeleksian sesuai dengan kebutuhan target Kamu.

3. Lakukan Step By Step

Belajarlah secara step by step, terstruktur, dan tidak meloncat. Agar kita dapat memahami materinya dengan sangat baik.

4. Buat Komitmen

Susunlah komitmen, berjanjilah kepada diri sendiri untuk terus melakukan proses belajar. Misalkan kita membuat target belajar pemrograman dalam 100 hari. Maka kita harus terus konsisten melakukan hal tersebut. Buatlah timelinenya di papan tulis kamar. Kamu juga bisa membuat hastag #100HariTantanganCode. Akan lebih baik jika kita mendokumentasikan hasil belajar kita di blog agar kita termotivasi dan melihat sejauh mana perubahan yang telah kita miliki. Ingat kita harus mengikuti target yang kita buat sebelumnya, harus ada peningkatan setiap harinya.

5. Gunakan Ceklis

Buatlah daftar ceklis target Kamu, dan ceklis setiap kali Kamu berhasil menyelesaikannya. Metode ceklis sangat bermanfaat supaya Kamu tidak keluar dari target yang sudah dibuat. Metode ceklis juga akan memandu supaya Kamu tidak melupakan satu step pun.

6. Mengamati Produk/Aplikasi

Terkadang resource belajar yang kita dapatkan masih bersifat umum, dan contoh tutorialnya masih belum diimplementasikan ke dalam suatu permasalahan. Mungkin teman-teman sering menemukan tutorial yang cuma membahas pengulangan untuk menampilkan 0 s/d 10 atau kondisi yang hanya membandingkan bilangan genap atau ganjil. Untuk itu kita harus mengumpulkan pertanyaan, gunakan list, dan cari sebanyaknya pertanyaan yang berkaitan dengan implementasi sebuah code dalam produk yang sudah jadi. Misalnya di dalam sebuah produk web:

  • Bagaimana implementasi PHP untuk membuat delete dengan cara ceklis banyak
  • Bagaimana implementasi PHP untuk membuat multiple upload
  • Bagaimana implementasi PHP untuk membuat pagination
  • Bagaimana implementasi PHP untuk membuat multiple login
  • Bagaimana code PHP untuk membuat urutan artikel berdasarkan post terbaru

7. Membaca Dokumentasi

Sering-seringlah membaca dokumentasi kode. Dengan membaca dokumentasi Kamu akan banyak menemukan cara implementasi kode, seperti kapan menggunakan kondisi, while, dan fungsi. Berilah komentar pada kode yang telah berhasil Kamu pahami agar mudah mengingatnya. Berilah komentar tanda tanya pada code yang tidak Kamu pahami, lalu masukkan ke daftar list pertanyaan kemudian cari jawabannya. Kamu bisa membaca dokumentasi yang ada di github atau source code lainnya.

8. Buat Cheatsheet

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  seperti mysqli_fetch_row(), mysqli_fetch_array(), md5(), implode(), Isset() dan sebagainya. Kamu juga bisa mencatat fungsi-fungsi yang sudah pernah digunakan dan menempelnya di dinding agar ketika diperlukan lagi kita dapat langsung melihat tanpa harus membuka dokumentasi.

9. Lakukan Perbandingan dan Eksplorasi Kode

Agar lebih paham, lakukan metode perbandingan. Sebagai contoh kita sering menjumpai fungsi yang aneh-aneh, kumpulkan fungsi tersebut dan bandingkan. Misalkan apa itu fungsi biasa, apa itu lambda, apa itu closure serta pada saat kapan fungsi tersebut digunakan. Contoh lainnya pada pembahasan OOP kita akan dikenalkan istilah design pattern atau pada database kita akan menemukan berbagai jenis cara koneksi database seperti cara klasik, cara prosedural, cara OOP, dan cara PDO. Lakukanlah perbandingan, temukanlah perbedaannya dan pahami saat kapan kode yang mana harus digunakan.

Sebagai contoh di bawah ini ada beberapa contoh penerapan fungsi. Kita bisa membedah dan membadingkan code tersebut agar kita lebih paham, misalnya:

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. Kombinasi Kode

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 Laravel, kemudian React.js. Bagaimana kita mengkombinasikannya? Maka lakukanlah percobaan kombinasi kode.

Contoh penggunaan ReactJs pada PHP:

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 Kode

Jika anda telah berhasil memahami suatu kode, cobalah membuat simulasinya ke dalam sebuah catatan. Sebagai contoh bagaimana menggambarkan proses pengulangan, kondisi, fungsi, bagaimana menggambarkan linked-list, stack, struct dan konsep algoritma atau struktur data lainnya. Cara ini sangat bagus untuk memperkuat pemahaman dan daya ingat terhadap kode. Kamu juga bisa mempelajari simulasi pemrograman dari visualgo.net.

12. Lakukan Pengulangan

Jika Kamu telah berhasil pada suatu materi lakukanlah pengulangan sampai benar-benar anda paham, sampai suatu yang sulit menjadi hal biasa bagi Kamu. 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 kebiasaan baginya. Ada sebuah quote, "manusia membuat kebiasaan, dan kemudian manusia terbentuk dari kebiasaannya”

13. Fokus pada Satu Bidang

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, dan expert.

14. Belajar Algoritma dan Struktur Data

Meskipun kita telah memutuskan untuk fokus pada satu bidang web programming misalnya, jangan sekali-kali kita meninggalkan alogritma dan struktur data, walapun pun terkadang konsep struktur data tidak selalu ada penerapannya pada web programming. Bangunlah kebiasaan belajar algoritma dan struktur data pada setiap minggunya. Lakukanlah secara bersamaan, langsung turun ke bidang fokus dan terus belajar konsep pemrograman. Karena dari apa yang saya amati banyak teman-teman di kampus seakan-akan harus paham total dulu konsep pemrograman dan struktur data baru kemudian terjun ke web atau mobile. Mereka dihambat metode belajar yang masih bersifat umum, padahal sudah saatnya mereka memulai untuk fokus pada bidang tertentu.

15. Luangkanlah Sedikit Waktu untuk Belajar Bahasa Pemrograman Lain

Meskipun kita sudah memilih untuk mendalami suatu bahasa pemrograman, kenapa kita harus paham bahasa lain? Karena terkadang kita tidak menemukan resource atau tutorial yang membahas suatu topik dalam bahasa yang kita pilih, namun kita bisa menemukan implementasinya dalam bahasa lain, misal pascal, phyton dan sebagainya. Selain itu adakalanya beberapa kasus yang kita temui tidak mampu diselesaikan oleh suatu tool atau bahasa pemrograman, tapi dapat dilakukan oleh yang lain. Ada ungkapan mengatakan "bila kita hanya memiliki palu, kita hanya dapat menyelesaikan persoalan dengan memukul".