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😀

Pos ini dipublikasikan di post dan tag , , , , , , , , , , , . Tandai permalink.

27 Balasan ke Asah Kemampuan Software Development

  1. L_O_J berkata:

    Hooo ic ic *manggut-manggut setengah headbanging*

  2. soybean berkata:

    keren kakak.. *sembah*

  3. kiki berkata:

    setuju, BTW gw memperhatikan isu tangensial, adalah codephobia. programmer yang takut sama kode.

  4. SeaGate berkata:

    Yang susah itu cari perusahaan IT di Indonesia yang software process-nya dah mateng😦

  5. Kukuh N Putra berkata:

    Info yang sangat bagus & sngat mmbantu bagi yg ingin jadi programmer.

    Oya mas, btw mas Dedi ambil jur Software Engineering d’mana y ? ? ?
    soalnya saya sangat trtarik dg IT.

  6. bakazero berkata:

    wow… mantep tulisannya…

    “ketika saya menguasai kapak, dan saya ingin membuka pintu, gimana caranya supaya kapak ini bisa dipakai untuk membuka pintu?”

    dalem hati “whaaaa… kena deh…”

  7. Kukuh N Putra berkata:

    Waw mantap mas.

    biayanya mahal banget ya mas.
    Saya masih bingung nyari universitas mas.

    • kecebongsoft berkata:

      Sebenernya di sesuaikan ama minat dan yg lainnya aja😀, tapi poin artikel ini justru menekankan bahwa kuliah dimanapun, yg terpenting tetap menggali ilmu secara mandiri😀

  8. Kukuh N Putra berkata:

    Wah, jadi termotivasi nih.
    thanks banget dah.

    Oya, skarang mas dedi kerja d’mana ?

  9. whyrsm berkata:

    inspiratif🙂
    makasih om, saya masih SMA yang lagi mau mulai softdev.
    mohon bimbingannya hehe🙂

  10. chocorobokun berkata:

    wah om ded udah mulai nulis lagi eh
    keren om *sembah*

  11. om bondi berkata:

    sungguh inspiratif…..

  12. om bondi berkata:

    ngomong2 lu lari.., dari tugas jaga adek lu…
    dapet hukuman apa dari ortu lu ded…?
    kwkwkkwkwkkww

  13. Anime7Graphic berkata:

    Salam kenal, saya newbie di dunia IT yg kebetulan belajar otodidak karena kebetulan sekolah saya tidak ada kaitannya dgn programming.

    Dari pengalaman kebanyakan saya hunting open source code untuk Web App Development, trik nya adalah mecniptakan sebuah system dari imaginasi yg di dalam nya terdapat fitur-fitur populer (untuk web app) setelah itu saya cari satu persatu contoh kode dari fitur yg di inginkan sebagai referensi.

    Sambil saya ikuti update & dokumentasi kode nya dari author. Saya biasa hunting di http://code.google.com

    Kalo boleh tau untuk forum programmer Indonesia yg bagus d mana ya.
    Trims

  14. resa berkata:

    semnagat selalau para IT engineering Indonesia..

  15. guys… now i’m looking for Software Developer ASAP! ,y company can give you with big salary, as long as you know about programming. i’m desperate to find candidates as Software Developer in Jakarta.
    If you were interested, kindly please email me your update CV+photograph

  16. Mufid berkata:

    Jadi ini terjadi juga di negara tetangga? Tapi kasusnya separah di sini kah? (Baca: dalam satu angkatan, sebuah kampus “yang sering disebut kampus IT” justru “hanya sekian persen saja yang benar-benar mengerti pengembangan perangkat lunak”)

    Btw, salam kenal mas🙂

  17. Anonim berkata:

    bro sya blum mengerti tentang software development itu …
    bro bisa bantu ?
    ini alamat e-mail sya : yurlenz.desta@yahoo.com
    soalnya sya ada tugas untuk buat judul jurnal dan abstraknya….

  18. Anonim berkata:

    tulisan yg bagus🙂
    kelak saya ingin jdi software development, tp sya belum tau apa” soal itu
    smoga dngan tulisan ini saya bisa trmotivasi untuk blajar lbih giat lgy & ncari informasi tntang itu 🙂

  19. bimbi berkata:

    Wah inspiratif banget…
    Jadi ngerti apa yg harus dikerjain sekarang..
    Nice info

  20. Eko Thohir berkata:

    tulisan nya sngat mmbntu para newbe IT, saya cuma mw coba2 aja… tpi nggk tau cara ny.. trimkasih gan.. jdi termotivasi.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s