Baca Berita Atau Komik Disini

loading...

Tuesday, March 1, 2011

Asah Kemampuan Software Development

Software Development adalah telur
Saya ingin melakukan klaim pribadi, bahwa mayoritas lulusan IT, setidaknya yang saya kenal, memiliki pehamaman minim di jurusannya, bahkan setelah lulus. Salah satu skill yang katanya sangat sulit dijamah adalah software development (programming). Kenapa?.
Setiap tahunnya, kampus saya meluluskan setidaknya hampir seribu mahasiswa/i fakultas Computing & IT (FOCIT). Di fakultasi ini ada beberapa jurusan seperti Multimedia, Networking, Business IT, Computer Science dan Software Engineering. Saya adalah salah satu dari mungkin hampir seribuan pelajar yang lulus di FOCIT tahun lalu, jurusan saya adalah Software Engineering.
Kesan saya setelah lulus adalah, apa yang disajikan degree (S1) IT memang sangat kurang jika kita ingin benar-benar mengasah kemampuan IT, utamanya di bagian Software Development, sehingga banyak perusahaan yang memvonis lulusan IT sebagai benar-benar pemula. Saya nggak terkejut melihat sebagian teman-teman belum mahir dalam mengembangkan sebuah system, problem solving, atau sekedar menulis program kecil. Karna ternyata dibeberapa negara lain juga mengalami masalah yang sama, bahkan di negara-negara yang sering orang bilang “barat”.
Software Development memang satu topik yang sangat luas, nyaris mustahil bisa di cover dalam 3-4 tahun kuliah dengan jam belajar hanya sebatas pagi sampai sore dan ditambah beberapa tugas rumah. Untuk menguasai banyak topik software development, kita tidak bisa hanya mengandalkan jam kuliah. Satu-satunya cara adalah dengan belajar secara mandiri, dan untungnya, banyak sekali media yang memudahkan belajar software development secara mandiri.
Meskipun saya sendiri belum bisa meng-klaim diri sebagai orang yang berpengalaman, tapi saya bersyukur punya teman-teman yang sudah cukup kaliber di beberapa field software development. Ada beberapa hal yang saya selalu ikuti dan ingat, dan terasa sangat bermanfaat untuk mengasah kemampuan kita di software development. Apa saja?.


Jangan takut dengan bahasa pemrograman

Ini adalah poin penting, tidak hanya bahasa pemrograman, tapi teknologi, API, teknik dan arsitektur baru. Saya ngerasa hal yang paling sulit untuk memulai belajar soft-development adalah belajar bahasa pemrograman. Kenyataannya adalah, belajar bahasa pemrograman hanya butuh beberapa minggu/bulan sampai kita cukup punya ide dan skill untuk mempergunakannya. Pemahaman tentang variabel, operator, statement, dll tidak butuh waktu bertahun-tahun.
Memang, bahasa pemrograman butuh waktu untuk dipahami alurnya. Tapi dengan melakukan latihan rutin setiap harinya, kita bisa menguasai sebuah bahasa pemrograman dengan cepat. Orang sering lupa bahwa ada bahasa yang lebih sulit dari bahasa pemrograman, yaitu bahasa manusia. Bahasa pemrograman jauh lebih terstruktur dan universal. Ada ratusan ekspresi manusia untuk menyampaikan “Kalau sudah malam, saatnya tidur”, sedangkan bahasa pemrograman tidak akan sekompleks itu. Cukup dengan:
if (malam) tidur = true
Yup, bahasa pemrograman jauh lebih terstruktur, dan universal. Artinya kebanyakan bahasa pemrograman menggunakan bahasa inggris, sehingga bisa dibaca oleh siapapun yang punya dasar inggris cukup.
Belajar bahasa pemrograman, pada dasarnya nggak lebih dari sekedar belajar gimana cara menyuruh sistem untuk melakukan sesuatu. Dan alur serta aturannya telah dibuat baku, bahannya pun tersedia luas di internet. Singkatnya, belajar bahasa pemrograman (dasar) bukan sesuatu yang rumit.

Konsentrasi pada kasus, bukan tools.

Hal kedua yang sebenarnya sering luput dari concern kita adalah, problem domain. Ketika ada tugas membuat program kuis, atau game tetris. Yang sering terpikir pertama kali adalah, bagaimana bahasa X bisa dipakai untuk membuat program Y?, fungsi apa di bahasa X yang bisa dipakai untuk membuat fitur di program Y?. Saya ngerasa anggapan ini lebih banyak salahnya, pemikiran seperti ini sama saja seperti bilang:
ketika saya menguasai kapak, dan saya ingin membuka pintu, gimana caranya supaya kapak ini bisa dipakai untuk membuka pintu?
Kita terlalu terfokus pada tools yang kita miliki, sehingga kasus apapun selalu berusaha di selesaikan dengan tools yang kita punya, dan melupakan inti kasusnya, karena terfokus pada toolsnya. Ini membuat penyelesaian yang kita buat jadi salah, atau bahkan benar-benar buruk. Contoh, memilih plain text sebagai tempat web feed hanya karna nggak ngerti RSS.
Ada banyak alasan kenapa paham seperti ini ada, salah satunya adalah rasa takut mencoba hal baru, seperti poin pertama tadi. Dampaknya bermacam-macam, kita jadi stuck di satu tool dan hanya mengerti arsitektur tool tersebut, tidak akan ada proses pembelajaran software development yang benar, karena pada dasarnya kita mencoba mem-fit kan semua masalah ke tool yang kita miliki.
Cara yang benar adalah, dengan lebih fokus kepada apa yang ingin kita lakukan, ketimbang apa yang kita miliki. Setelah kita tahu apa yang kita mau capai, mulailah mempelajari secara detail apa saja yang kita perlukan, lalu kumpulkan kebutuhannya.
Saya ingin membuka pintu, pintu memiliki lubang kunci dan kenob, maka saya akan mencari kunci dan memutar kenobnya.
Contoh diatas adalah cara yang benar dalam observasi kasus, dengan mengetahui goals yang kita ingin capai, serta mempelajari apa saja yang diperlukan untuk mencapai goals tersebut, kita akan belajar banyak tentang meng-engineer sistem dengan benar, termasuk memilih arsitektur, platform, bahasa pemrograman, dan teknik yang benar.
Jika saya ingin membuat game yang bisa dijalankan dengan browser, saya akan pilih teknologi yang didukung oleh browser seperti HTML5, Flash, Unity, atau WebGL
Ketimbang memaksakan untuk membuat game browser dengan Visual Basic karna alasan hanya ngerti VB, kita memutuskan untuk mempelajari teknologi lain, mengetahui kekurangan dan kelebihannya, dan memilih yang paling cocok untuk goals yang ingin kita capai. Disinilah salah satu skill software development diasah.

Mulai darimana?

Belajar bahasa pemrograman, dan lebih lanjut lagi adalah software development, memang butuh waktu. Saya ingat awal-awal saya belajar programming language adalah waktu SMP. Saat itu internet masih sangat terbatas, saya harus diam-diam kabur dari tugas jaga adek di rumah dan naik angkot sekitar 1 jam ke warnet. Pertama kali saya belajar programming dari majalah Mikrodata, disitu saya menyalin habis sebuah script yang katanya bisa dipakai untuk membuat game puzzle dengan basis MIDlet. Setelah berjam-jam menyalin script dari majalah ke Notepad, hasilnya?. Nggak ada, game nggak jalan sama sekali. Saya bahkan nggak tahu bahwa komputer saya nggak ada Java-nya. Tapi dari situ saya belajar banyak, salah satunya adalah tentang HTML, Javascript, variable, statement dan operator.
Setelah frustasi karna script yang saya salin nggak jalan, saya coba memodifikasi berhari-hari. Dan memang tetap nggak jalan, tapi dari situ saya tahu banyak sekali tentang tag HTML dan Javascript. Saya mulai iseng membuat web page kecil, ada message boxnya, input box, conditional statement, dll.
Mulai dari situ saya merambah ke server side scripting, juga programming di desktop seperti VB. Saya membuat ratusan program kecil yang fungsinya hanya sekedar nampilin angka 1 sampai 100, angka ganjil genap, bilangan prima, nampilin gambar, dan lain-lain. Dan manfaatnya benar-benar saya rasakan.
Intinya adalah start somewhere. Ambil sisi IT yang paling kita suka, web development misalnya, lalu buat sebanyak mungkin hal-hal kecil yang memang nggak ada gunanya di sisi user, tapi ada gunanya untuk bahan belajar. Semakin dalam kita belajar, akan semakin fun, dan semakin banyak pemahaman yang kita dapatkan dari situ. Disinilah kita dapat banyak basic tentang bahasa pemrograman.
Setelah mulai dapat dasar tentang bahasa pemrograman, buatlah sesuatu yang lebih kompleks dan bisa digunakan. Buku tamu misalnya, atau game kuis yang hanya sekedar nampilin pertanyaan dan jawaban. Disini kita mulai dihadapkan dalam satu kasus spesifik (buku tamu / game kuis), dan diharuskan untuk melakukan mapping, memecah satu tugas besar menjadi beberapa tugas kecil, dan mengaturnya serapi mungkin. Contoh untuk buku tamu, kita ditantang untuk membuat beberapa subsistem untuk menangani tugas-tugas tertentu, seperti menulis pesan, menyimpan pesan, dan menampilkan pesan.

Oke mulai!

Meskipun cara nyoba-nyoba acak milik saya terasa berhasil, tapi di jaman yang akses internet sangat mudah seperti sekarang, ada cara-cara yang lebih baik. Selain membuat ratusan program kecil yang pada dasarnya hanya “sampah” , ada satu hal yang wajib dikerjakan untuk mengasah kemampuan software development. yaitu Open Source!.
Ikut atau membuat open source project, mengajarkan kita banyak sekali hal-hal baru. Kolaborasi, debugging, arsitektur baru, teknologi dan teknik baru, latest issue di dunia IT, dll. Cobalah ikut join di berbagai project open source. Contohnya, kita bisa download CMS WordPress, pelajari cara install dan konfigurasinya, lalu coba buat sebuah plugin yang bermanfaat, contohnya plugin shoutbox. Mengembangkan plugin membuat kita mengerti tentang arsitektur sebuah sistem. Setelah menulis plugin, jangan lupa di lepas sebagai project open source, lalu orang-orang akan datang dan memberi berbagai feedback bermanfaat.
Kita bisa pakai layanan code hosting untuk mengelola aktifitas coding open source, ada GitHub, SourceForge, CodePlex, Google Code, LaunchPad, dll. Cukup mendaftar dan mencari project-project yang sekiranya menarik dan bisa ikuti, lalu join dan ikut kembangkan.
Banyak sekali manfaat yang bisa kita dapatkan dengan aktif di open source project, jika dibanding dengan materi yang kita dapatkan pada jam kuliah.

Blogging!

Yup, menulis artikel atau blogging adalah cara selanjutnya untuk mengasah kemampuan. Kedengarannya simpel, tapi manfaatnya baru terasa setelah kita menulis banyak artikel.
Ketika kita baru saja belajar tentang teknik pemrograman baru, bahasa pemrograman baru, teknologi atau issue seputar IT, sempatkan menulisnya di blog walau hanya 2-3 paragraf. Dengan menulis, kita mengasah kemampuan untuk menjelaskan. Semakin banyak menulis, kita semakin tahu bagaimana cara memecah penjelasan agar mudah dimengerti. Manfaatnya? Kemampuan visualisasi kita terhadap masalah menjadi lebih baik. Ketika kita ingin melakukan sebuah task di programming, kita bisa mendapatkan gambaran bersih tentang apa saja yang harus dilakukan.
Seringkali, ada hal-hal yang terlewatkan dan baru kita sadari setelah kita menulis artikelnya. Contohnya, jika kita berhasil membuat fungsi untuk mencari item dengan cepat di array yang isinya sejuta member. Kita bisa memilih untuk diam dan menyimpan codenya di komputer, tanpa ada yang tahu. Atau kita bisa menulis artikelnya, pada saat artikel tersebut ditulis, kita kadang menyadari bahwa ada bagian-bagian yang kurang dari code kita yang bisa diperbaiki. Ini karena dengan menulis, kita menjelaskan ulang semua bagian dari karya yang sudah kita buat, sehingga menulis karya yang kita buat sendiri bisa dikatakan sebagai self-review.
Dengan menulis, kita juga jadi giat mencari bahan baru di internet, dengan fasilitas yang ada sekarang seperti RSS Reader, kita bisa mengetahui banyak sekali issue IT terbaru, terutama di bidang software development, lalu mencoba merangkumnya di tulisan kita.
Tentu saja manfaat yang pasti dari menulis adalah kita bisa berbagi pengetahuan dengan yang lain, dengan menulis artikel tentang pemikiran dan karya kita, orang lain bisa memberikan feedbacknya dan kita bisa banyak belajar.

Aktif di komunitas

Ini adalah hal yang tidak kalah penting. Terserah apakah kita suka web atau desktop programming, ataupun yang lain, aktif di komunitas adalah harus. Dengan aktif di komunitas, kita bisa berbagi feedback dengan orang lain. Menjawab pertanyaan orang lain ikut membantu mengasah kemampuan kita di software development, dan aktif bertanya dan posting di forum membuat kita lebih terbiasa dengan lingkungan software development. Kita juga bisa kenal dengan banyak orang-orang yang sudah berpengalaman melalui forum.

Finally, ini adalah opini singkat saya bahwa sebenarnya materi pendidikan S1 saja tidak cukup jika kita memang benar-benar haus di dunia software development. Belajar secara mandiri dan konsisten akan sangat bermanfaat, banyak sekali materi ekstra yang bisa kita dapatkan di luar dunia kuliah. Saya sendiri masih junior dan belum bisa memberi tips super ampuh selain belajar dan belajar. Opini diatas sekedar pengalaman pribadi dan semoga ada manfaatnya :D

1 comment:

AC

h12

SPD

Gamb

SPD


h12

AC

Baca Berita Atau Komik Disini

loading...