Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Otodidak

Sebagai programmer, ada banyak tokoh yang bisa kita teladani, seperti Linus Torvalds, Bill Gates, Richard Stallman, Eric Raymond, Brian Kernighan, Dennis Ritchie, Erich Gamma, dan banyak lainnya. Tetapi di dunia modern seperti sekarang ini, dimana teknologi baru bermunculan lebih cepat dari kemampuan kita untuk bisa menggunakannya (apalagi bisa mempelajarinya), ada satu tokoh yang wajib kita teladani, bukan berasal dari dunia IT. Siapa dia?

Hatake Kakashi

Gambar diambil dari Fanpop

Dia adalah Hatake Kakashi dari komik Naruto.

Kenapa begitu? Karena skill dan special ability yang dia miliki adalah juga skill dan special ability yang wajib dimiliki semua programmer tanpa kecuali, agar bisa selamat dari bencana pengangguran. Buat yang tidak mengikuti komik Naruto, berikut profil singkat Hatake Kakashi yang berkaitan dengan urusan programming. Sisanya bisa dibaca sendiri di sini.

Hatake Kakashi adalah guru (sensei) dari Uzumaki Naruto dan Uchiha Sasuke, dua tokoh sentral dalam komik Naruto. Dia memiliki julukan Copy Ninja Kakashi, karena kemampuannya untuk mengamati, menganalisa, dan menirukan jurus yang digunakan lawannya hanya dengan sekali lihat saja. Karena kemampuan khusus ini, lawannya menjadi serba salah. Mengeluarkan jurus andalan, resikonya dicuri dan digunakan melawan dia sendiri. Tidak mengeluarkan jurus, ya sama saja menyediakan diri menjadi sansak berjalan.

Penggunaan skill ini bisa dibaca di Naruto episode 15 dimana Kakashi bertarung melawan Momochi Zabuza. Kakashi melihat, menganalisa, mempelajari, menirukan, dan kemudian menghajar Zabuza dengan jurusnya sendiri.

Seorang programmer harus mampu menguasai konsep dan teknik baru dengan cepat, seperti halnya Copy Ninja Kakashi. Ini disebabkan karena pengetahuan teknis dalam pemrograman bisa kadaluarsa dalam waktu yang cepat. Contohnya, di tahun 2003, programmer Java menggunakan framework yang disebut EJB 2 dan Struts 1 untuk membuat aplikasi. Hanya dalam kurun waktu 2 tahun (tahun 2005), kedua teknologi tersebut sudah usang dan diganti dengan jargon baru yang disebut SOAP. Saat ini di tahun 2013, siapapun yang berani menyebut-nyebut EJB 2, Struts 1, ataupun SOAP, terancam diledek sebagai Pak Tua ;) Di tahun 2013 ini, era-nya REST dan JavaScript. Entah apa lagi trend di masa depan.

Saya sendiri belajar banyak hal secara otodidak, diantaranya adalah pemrograman, fotografi, membaca Al Qur’an, bahkan kerajinan membuat gelang ;)

Camera Strap buatan sendiri

Saking sering mempelajari segala sesuatu secara otodidak, saya seringkali malas diajari orang lain. Belum tentu cara mengajar dan cara berpikirnya sesuai dengan kebutuhan saya. Orang lain biasanya tidak tahu modal awal kita, sehingga bisa jadi terlalu banyak memberikan materi pemula, atau sebaliknya mengasumsikan saya sudah tau banyak hal dan langsung saja ke topik advanced.

I am always ready to learn although I do not always like being taught - Winston Churchill

Dalam hal belajar otodidak, hal yang paling penting kita kuasai adalah:

  1. Membuat jalur belajar (roadmap), mana yang duluan, mana yang belakangan
  2. Menentukan metode latihan untuk menguasai konsep atau teknik tertentu
  3. Melakukan kegiatan belajar (membaca / menonton) yang diperlukan sesuai langkah #2 sampai paham
  4. Kalau langkah #3 tidak efektif, revisi metode latihan (kembali ke #2)
  5. Begitu sudah dikuasai cepat-cepat diabadikan dalam bentuk tulisan atau pelatihan supaya tidak cepat lupa

Satu hal penting lainnya, kita juga harus tahu sampai di mana batasnya kita bisa belajar otodidak. Belajar membaca Al Qur’an, tidak boleh 100% otodidak. Ada materi tertentu -misalnya makhrajul huruf- yang harus diverifikasi oleh orang yang kompeten. Ini disebabkan karena Al Qur’an diwariskan secara lisan, bukan tulisan. Sehingga teknik membacanya harus dicek secara lisan juga apakah sudah benar atau belum. Selain itu, ilmu membaca Al Qur’an merupakan suatu ilmu yang harus jelas sanadnya. Teknik yang kita gunakan harus bisa ditelusuri asal-usulnya sampai ke Rasulullah SAW. Walaupun demikian, belajar otodidak dapat digunakan supaya kita tidak terlalu merepotkan guru kita.

Langkah #1 dan #2 juga penting apabila kita menjadi mengajari orang lain baik sebagai instruktur, guru, atau dosen. Pengajar yang baik mampu mendefinisikan urutan belajar dan metode latihan yang cocok untuk setiap muridnya. Contohnya, lagi-lagi dari komik Naruto, kita lihat bagaimana Kakashi membuatkan metode latihan untuk kontrol chakra pada Naruto, Sasuke, dan Sakura di episode 18. Lihat juga bagaimana Sensei Jiraiya memberikan latihan khusus untuk Naruto di episode 150.

Mari kita bahas satu persatu.

Membuat Roadmap

Langkah pertama yang harus kita lakukan adalah memetakan topik yang akan kita pelajari. Mana yang termasuk pengetahuan dasar (fundamental), mana yang tingkat menengah, mana yang tingkat lanjut. Kita juga harus menentukan urutan penguasaan materi. Sebagai contoh, untuk bisa memahami penggunaan framework Hibernate, kita harus paham dulu konsep SQL dan database relasional. Untuk bisa memahami berbagai strategi transaction dalam Java EE, kita harus paham dulu apa itu database transaction.

Jalur untuk belajar Java sudah saya tuliskan di beberapa artikel:

Bila kita ikut kursus, sekolah, atau kuliah, dosen yang kompeten sudah membuatkan jalur belajar ini sehingga peserta tinggal mengikutinya. Tapi bila kita ingin belajar secara otodidak, kita harus memiliki kemampuan untuk membuat jalur ini sendiri.

Bagaimana cara membuat roadmap belajar?

Pertama, kita kumpulkan dulu semua materi yang berkaitan dengan topik yang ingin kita pelajari. Sebagai contoh, pada waktu saya belajar fotografi, semua artikel dan video yang berhasil saya kumpulkan saya masukkan ke Springpad.

Materi ini tidak perlu dibaca/ditonton semua. Pada tahap ini kita hanya mengumpulkan dan mengelompokkan. Biasanya saya hanya membaca/menonton sedikit bagian di awal, tengah, dan akhir saja. Dari hasil skimming ini, saya kelompokkan menjadi materi dasar, menengah, dan lanjut. Untuk materi fotografi, hasil pengelompokannya bisa dilihat di sini.

Beberapa pertimbangan dalam membuat roadmap:

  • urutan penguasaan materi. Misalnya sebelum Hibernate, harus paham JDBC dulu. Sebelum Spring MVC harus paham Servlet dan JSP dulu.
  • tingkat kompleksitas materi. Materi tingkat lanjut biasanya baru bisa dipahami dengan menggabungkan konsep-konsep tingkat dasar. Contohnya untuk bisa memahami @Transactional, kita harus paham dulu konsep umum database transaction, apa itu distributed transaction dan berbagai strategi penggunaannya, baru kemudian terakhir bagaimana cara pakainya dalam kode program.
  • urutan dan pengelompokan ini tidak bersifat final. Sepanjang perjalanan kita belajar, kita akan beberapa kali mengoreksi sudut pandang kita, mengubah prioritas mana yang penting mana yang tidak, dan juga mengubah pemahaman kita terhadap suatu konsep. Pada waktu itu terjadi, jangan sungkan untuk merevisi roadmap. Toh ini kita buat untuk diri sendiri, ya bebas saja kalau mau diubah kapanpun. Ini adalah hal yang normal.

Menentukan Metode Latihan

Selain konsep di atas, kita juga perlu menentukan latihan yang dibutuhkan. Contohnya seperti ini:

  1. Memahami akses database Java menggunakan JDBC

    • membuat koneksi database
    • memasukkan data ke dalam database (insert)
    • mengubah data dalam database (update)
    • mengambil data dari database (select)
    • menghapus data dalam database (delete)
  2. Memahami fitur aplikasi web Java

    • menangani request terhadap URL tertentu
    • menerima variabel melalui HTTP GET
    • menerima variabel melalui HTTP POST
    • implementasi login menggunakan HTTP Session dan Filter
    • membuat inisialisasi aplikasi web menggunakan Listener
    • upload/download file

Kalau kita tidak otodidak, melainkan kursus, sekolah, atau kuliah, pengajar sudah membuatkan daftar latihan ini buat kita. Kita tinggal ikuti. Masalahnya adalah, metode latihan yang dibuatkan pengajar biasanya disesuaikan untuk kebutuhan orang banyak dari berbagai latar belakang. Kadang cocok dengan kita, kadang tidak cocok. Bila kita otodidak, kita bisa menentukan metode latihan yang sesuai dengan kebutuhan kita.

Bila kita ingin menjadi pengajar, kita juga harus bisa melihat karakteristik murid dan membuatkan metode latihan yang cocok dengan murid tersebut. Dalam komik Naruto, ini dicontohkan Sensei Jiraiya di episode 92, pada waktu dia membuatkan latihan khusus sesuai bakat Naruto.

Yang perlu diperhatikan dalam menentukan metode latihan adalah tujuan dari suatu latihan. Setiap kegiatan yang kita lakukan harus memiliki tujuan akhir, yaitu pemahaman konsep tertentu atau penguasaan teknik tertentu.

Latihan yang kita rancang haruslah mencukupi, tapi tidak berlebihan. Jangan sampai dalam latihan untuk menguasai materi Z, kita terpaksa melakukan semua kegiatan dari A sampai Y. Contohnya, bila kita ingin menguasai Hibernate, tidak perlu membuat tampilan desktop/web secara lengkap. Cukup method public static void main saja dengan data yang dihardcode, dibuat kode programnya sampai bisa masuk ke tabel database.

Hal lain yang juga penting, kita tidak perlu menyusun program latihan sampai materi tingkat lanjut. Kenapa begitu? Karena pada waktu kita baru mulai di tingkat dasar, tentu kita belum paham materi tingkat lanjut, sehingga belum tau metode latihan yang sesuai dengan materi tersebut. Kalaupun dipaksakan, hasilnya tidak akan bagus dan kemungkinan besar pasti akan direvisi lagi di tengah jalan. Jadi daripada dua kali kerja, lebih baik tidak usah dikerjakan dulu sebelum waktunya.

Sama seperti urutan materi, jangan ragu untuk merevisi program latihan di tengah jalan.

Belajar dan Berlatih

Setelah urutan belajar dan daftar latihan kita susun, kita harus luangkan waktu untuk melakukannya dengan benar sampai ke tujuan. Artinya, setelah membaca artikel tertentu dan melakukan program latihan tertentu, pastikan bahwa kita menguasai konsep dan teknik yang kita tuju. Bila masih belum paham konsepnya, atau belum mahir tekniknya, ulangi atau revisi program latihannya.

Beberapa latihan yang saya lakukan dapat dilihat di repository Github saya, misalnya:

Dari latihan yang sekian banyak, kita bisa melihat bahwa tidak ada yang instan di dunia ini. Untuk menguasai berbagai hal secara otodidak, kita harus mencoba dengan tangan sendiri sampai paham. Pantau terus koleksi repository saya untuk mengamati bagaimana proses belajar saya. Semua repository yang diawali dengan nama belajar- adalah repository latihan yang saya buat untuk memahami sesuatu.

If you can’t explain it simply, you don’t understand it well enough. - Albert Einstein

Salah satu kelemahan saya dalam urusan belajar adalah easy come easy go. Setelah puluhan tahun belajar macam-macam hal secara otodidak, maka saya bisa belajar hal baru dalam waktu relatif singkat. Walaupun demikian, kapasitas otak manusia ternyata ada batasnya. Setiap kali saya mempelajari sesuatu yang baru, ada saja pengetahuan lama yang hilang. Contohnya, pada waktu saya belajar Linux dan networking, pengetahuan akuntansi saya memudar. Demikian juga setelah lama berfokus di pemrograman Java, konsep dan perintah aplikasi iptables (aplikasi firewall di Linux) yang dulu saya hafal, saya lupa semua.

Untuk mengatasi masalah tersebut, ada beberapa cara yang saya lakukan:

  1. Sering menggunakan konsep dan teknik yang dimaksud. Sebagai contoh, supaya saya tidak lupa cara menggunakan rsync, saya selalu menggunakannya untuk copy file dari laptop ke komputer lain atau ke harddisk external.
  2. Mencatatnya di blog. Perintah iptables adalah sesuatu yang jarang saya pakai, karena sebagai orang normal, saya tidak mengkonfigurasi firewall setiap hari. Bahkan belum tentu saya lakukan sebulan sekali. Agar tidak lupa, pemakaian yang sering saya gunakan seperti internet connection sharing dan port forwarding saya tuliskan di blog. Demikian juga halnya untuk cara konfigurasi SSL.
  3. Mengajarkannya pada orang lain. Ini adalah salah satu alasan mengapa saya mengajar di Universitas Pancasila dan berbagai pelatihan. Dengan mengajar, saya memperdalam pengetahuan saya tentang materi yang diajarkan, dan juga mencegah supaya tidak lupa.

Demikianlah penjelasan tentang otodidak. Skill ini adalah salah satu solusi untuk mengatasi beratnya perjuangan di dunia IT seperti dibahas di artikel ini. Ada solusi lain yaitu menguasai konsep, bukan teknis implementasi yang bisa dibaca di artikel berikutnya.