Saya baca artikel di Joel on Software tentang saran-sarannya kepada mahasiswa ilmu komputer. Sarannya dituangkan dalam sebuah daftar “hal-hal yang harus dilakukan mahasiswa ilmu komputer sebelum lulus”. Sayatertarik untuk membuat daftar saya sendiri yang disusun berdasarkan pengalaman saya sebagai mahasiswa dan sebagai programmer. Daftar ini saya susun berdasarkan urutan dari yang paling penting hingga yang kurang penting.

  1. Belajar menulis - “A software doesn’t exist, if it doesn’t have documentation!”
  2. Kuliah yang bener – Konsep Ilmu Komputer yang kuat akan sangat membantumu di sesi wawancara kerja
  3. Ambil kursus pemrograman, terutama OOP – Belajar programming dengan jalur yang tepat dan metode penulisan kode program yang mengikuti design pattern dan code convention yang baik.
  4. Cari tempat magang yang bagus – Setiap universitas pasti mengadakan program magang, manfaatkan dengan baik dan carilah tempat magang yang memberi pekerjaan programming, jangan ambil tugas magang yang hanya memberi tugas input data.
  5. Belajar bahasa inggris – Surfing di internet tanpa bisa bahasa inggris sama saja seperti nyetir ga bisa baca rambu lalu lintas.
  6. Belajar mikro-ekonomi – Belajar ekonomi dan bayangkan dirimu menjadi enterprenur nantinya, jgn mau jadi bawahan terus.
  7. Jangan meremehkan mata kuliah non IT hanya karena membosankan – IP jelek hanya akan menimbulkan banyak keraguan dan impresi yang tidak bagus pada waktu mencari kerja nanti.
  8. Berhentilah mengkhawatirkan nanti akan kerja di mana – Do it the best you can do, and it will bring you to the best workplace available.
  9. Buatlah sebuah aplikasi sederhana sampai selesai – Aplikasi ini nantinya bisa digunakan pada waktu wawancara, untuk membuktikan bahwa kita bisa menerapkan prinsip “get things done!” tidak cuma coding kesana kemari tapi tidak menyelesaikan pekerjaan.
  10. Aktif di komunitas – Dengan sering memposting ke forum/milis kita akan tahu apakah pemahaman dan penguasaan terhadap suatu konsep benar atau salah, cukup atau kurang. Ini penting sekali untuk mengetahui sebenarnya kita siap atau tidak terjun di dunia kerja.

Nah Sekarang mari kita bahas satu-persatu list diatas.

1. Belajar Menulis
Terus terang selama karir saya sebagai mahasiswa, yang berlangsung cukup lama, belum pernah sekalipun kebagian tugas untuk membuat dokumentasi program. Dari dulu, jaman-jaman masih mengerjakan tugas kuliah, kerjaan saya cuma satu : Coding. Oke, ini mbantu banyak dalam meningkatkan skill programming. Tapi setelah saya terjun di dunia kerja kerja, ada satu hal yang saya sadari : Programmer yang menginspirasi saya, kebanyakan bukan programmer yang jagooo banget, yang sampai bisa membuat kernel OS (Linus Tordsvald atau Andrew Tannebaum), tetapi blogger-blogger yang rajin menulis.

Roman StroblSamuel FranklynJeff AttwoodEndy MuhardinFrans Thamura dan Joel Spolsky adalah blogger-blogger dan aktivis komunitas yang sangat rajin menulis. Mereka mempunyai blog dan postingan di komunitas yang bagus sekali. And they inspire me a lot!

Penting buat kita untuk membuktikan eksistensi kita sebagai “Profesional” dan membagikan pikiran kita kepada orang lain. Manfaatnya banyak sekali, terutama untuk mengasah skill kita dalam menyampaikan pendapat dan menjelaskan ide. Programmer adalah Knowledge Worker, kita dihargai dari level Knowledge yang kita punyai. Jika kita tidak dapat menyampaikan “Knowledge” yang kita punyai, ya resikonya kita bisa dinilai “undervalued”, dinilai lebih rendah dari level kita sebenarnya.

Ada ungkapan “Software doesn’t exist, if it doesn’t have documentation”. Dalam dunia IT documentation menempati posisi yang sangat penting. Bukan formal development documentation yang isinya requirement, UML Design dan sebagainya, tetapi user documentation. User tidak akan bisa menggunakan software kita kalau tidak ada dokumentasi bagaimana menggunakan softwarenya, apalagi kalau software kita berupa Framework Library. Spring, Framework Library dari komunitas yang paling sukses, mempunyai dokumentasi yang exhaustive ( baca semua dokumentasinya bisa gak selesai-selesai), dan ini benar-benar menjadi strong pointnya Spring.

Menulis dokumentasi juga merupakan bagian dari profesionalisme programmer. Membuat aplikasi, apalagi aplikasi berbasis produk, tidak hanya menulis kode program semata, tetapi juga mencakup: marketing, support, dokumentasi dan sebagainya sampai aplikasi tersebut benar-benar dipakai user. Hanya programmer amatir yang menulis program kemudian “abandon it”. Kita ini membuat program untuk digunakan oleh user, kalau itu menghendaki kita menulis dokumentasi yha tulis, kalau harus support dan menjawab pertanyaan di forum ya kerjakan, karena ini bagian dari profesionalisme kita sebagai programmer. “We dont create application and abandon it, we create application and ship it!!”.

Write something ordinary, and you will be appreciated by other people more than you create smart, tricky, owesome code which propably no one in this world would ever see it.

2. Kuliah yang benar
Dari pengalaman saya wawancara kerja, sebenarnya pewawancara cukup memahami bahwa freshgrade itu tidak mempunyai skill kerja yang bagus. Tetapi pewawancara harus menilai apakah yang diwawancara tersebut mempunyai pemahaman yang cukup baik tentang IT. Pewawancara akan menanyakan hal-hal fundamental seperti konsep algoritma, konsep sql dan memberikan sedikit test programming yang sederhana. Kalau setiap praktikum diikuti dengan baik, seharusnya semua hal tersebut dapat dijawab dengan lancar.

Penting juga untuk memahami konsep-konsep dasar Ilmu Komputer dengan baik sebagai pengetahuan wajib untuk programmer seperti konsep Operating System, Jaringan dan Relational Database. Kita kuliah bertahun-tahun, masak konsep dasar Ilmu Komputer ga ngerti? ngapain aja boz?

Satu lagi fakta yang membuat saya cukup menyesal kenapa dulu lulusnya telat sekali (baca: 7 tahun), karena kalau kerja di luar negeri terus dilihat ijazahnya kok lulus 7 tahun, bisa menghambat visa kerja, hal ini dikarenakan di negara lain, kalau kuliah lulusnya lama itu artinya tidak sanggup menyelesaikan pendidikan dengan baik, ibaratnya jaman sekolah dulu nggak naik kelas. Lama pengalaman kerja juga menentukan besaran gaji yang bisa diminta, teman-teman seumur saya tentu saja mempunyai pengalaman kerja 3 sampain 4 tahun lebih banyak dari saya yang telat lulus :( , nasib.. nasib…

3. Ambil kursus pemrograman, terutama OOP
Kita dididik, terutama, untuk menjadi software developer. Mungkin ada juga senior sejurusan kita yang bekerja di bidang lain disamping sebagai programmer. Tetapi coba lihat dengan teliti jalur karir yang mereka tempuh dari awal lulus kuliah, kemungkinan awalnya mereka adalah programmer. Freshgrade sebagian besar tidak mempunyai banyak pilihan jalur karir. Kalau IPnya tidak cum laude, lulusan IT akan susah memasuki area management. Kalaupun bisa, prosesnya sangat panjang, berbulan-bulan. Jangan sampai dalam masa penantian menemukan pekerjaan impian tersebut, kita menganggur, ini akan jadi handicap(kelemahan) yang besar dimata pewawancara.

Jadi kesimpulanya, apapun nanti jalur karir yang ingin anda tekuni, menjadi programmer adalah batu pijakan pertama yang cukup mudah dilalui. Jangan sia-siakan waktu anda yang berharga dengan terus menunggu berbulan-bulan hingga tawaran terbaik datang ke depan pintu. “Start earlier, take a grip and start to build our skill”.

Bagi orang-orang sevisi dengan saya, coding sampai tua :D , mengambil kursus pemrograman OOP sangat penting. Gap antara freshgrade dan kebutuhan skill di industri sangat jauh. Kalau kita lulus dari kuliah tanpa punya skill apapun kita akan dihadapkan resiko dapet kerjaan yang underpaid, ya mau gimana, skill ga punya masak mau overpaid?

Bahasa pemrograman (baca : Platform) yang sangat populer sekarang ini nyaris semuanya berbasis OOP. Kita tinggal memilih salah satu platform yang dirasa terbaik sebagai basis kompetensi kita di masa mendatang (baca artikel saya tentang why java?). Pemahaman akan konsep OOP sudah menjadi skill yang wajib untuk tetap eksis sebagai programmer.

Kursus yang saya maksud disini bukan kursus sehari dua hari yang levelnya pengenalan (baca: maen-maen), tetapi kursus yang serius untuk menguasai platform pengembangan aplikasi. Pengalaman saya memberikan gambaran jelas pentingnya kursus ini, saya dulu kerja sebelum lulus karena keterpaksaan finansial (baca: kere :D ). Karena saya blom lulus dan skill == 0, saya harus menghadapi kenyataan dapet kerjaan underpaid, alias gaji cukup sampe tanggal 20, sisanya ya puasa!. Dengan kursus yang serius, kita bisa mengejar gap antara freshgrade dan kebutuhan industri, sehingga ga perlu dapet masa-masa underpaid kayak saya dulu :D .

Sertifikasi dan belajar framework sangat penting untuk memoles portofolio kita sebagai pencari kerja. Ujung-ujungnya kita bisa menawar gaji lebih tinggi dengan bekal dua hal ini. Gampangnya anggap saja satu sertifikasi bisa menaikkan tawaran gaji perbulan sampai 500rb, setiap satu framework yang dikuasai juga menaikkan daya tawar gaji per bulan sampai 500rb. Dengan asumsi gaji awal freshgrad 3jt, kalau ditambah dengan SCJP + Spring + Hibernate setidaknya bisa lah ya minta 4,5jt per bulan ;) .

4. Cari tempat magang yang bagus
Magang adalah kesempatan pertama mahasiswa Ilmu Komputer berhadapan dengan proyek pengembangan perangkat lunak yang serius. Gak ada lagi main-main seperti ketika mengerjakan tugas kuliah. Semua langkah dalam SDLC dilaksanakan dengan sangat teliti, ga boleh ada kesalahan. Disinilah pengalaman akan mengajarkan kita bagaimana sebenarnya dunia industri dijalankan, pengalaman saya sih cuma satu : shock!. Ternyata apa yang saya pelajari di bangku kuliah benar-benar ga cukup. Sindrom panik merajalela di antara temen-temen seangkatan, milis angkatan yang biasanya sepi-sepi aja tiba-tiba rame dengan pertanyaan ini itu :D .

Kalau anda bisa mendapatkan tempat magang yang bagus, misalnya perusahaan IT yang bonafid, pengalaman magang akan mengajarkan  banyak hal. Pengalaman ini akan jadi wake-up call bagi mahasiswa-mahasiswa bahwa mereka ini benar-benar unskillful dan masih belum siap masuk dunia kerja, disini sikap positif diperlukan untuk mengambil hikmah dari pengalaman. Jika anda benar-benar shock dan ga bisa bersikap positif, maka bisa jadi karir sebagai programmer mati sebelum berkembang :D .

5. Belajar bahasa inggris
Ini sih ga perlu dijelaskan juga pada tahu kalau help, dokumentasi dan buku IT nyaris 95% bahasa inggris. Mencari tutorial komprehensif yang ditulis dalam bahasa indonesia seperti mencari kelereng dalam bak truk penganggkut pasir. “Learn english or know nothing!”.

Akhir-akhir ini banyak sekali rekan-rekan saya yang bekerja di luar negeri, termasuk saya :D , selain karena gaji bisa berkali-kali lipat (hingga puluhan juta), rata-rata kota tujuan kerja kita jauh lebih nyaman dibanding jakarta, misalnya kuala lumpur, singapura, dubai, sydney, melbourne atau malah ke eropa dan amerika. Bahasa inggris tentu saja penting sekali untuk dikuasai dari mulai reading, speaking, listening hingga writing (menulis dokumentasi dan email).

6. Belajar mikroekonomi
Dalam perjalanan hidup manusia yang naik turun, banyak sekali masa-masa dimana kita harus memilih untuk menjadi pengusaha atau profesional. Namun saya yakin apapun pilihan bidang karir kita nanti, ilmu ekonomi sangat dibutuhkan, terutama mikroekonomi. Kita perlu tahu bagaimana mengolah keuangan, bagaimana merancang bussiness plan, bagaimana menyusun budget, bagaimana menyusun laporan keuangan dan bagaimana mengatur rencana keuangan. Semua tugas-tugas tersebut lambat laun akan harus kita kerjakan, baik di level pribadi, keluarga atau perusahaan.

Selain itu, dunia technopreneur sedang booming di Indonesia, akuisisi koprol oleh yahoo, akuisisi disdus oleh groupon dan investasi ratusan miliar group djarum ke kaskus membuat gairah dunia startup menggebu-gebu. Belajar mikroekonomi menjadi sangat penting dalam era seperti ini, ide brilian yang dibungkus dalam bussiness plan yang baik dan proyeksi keuangan yang ciamik bisa mendatangkan rejeki berlimpah-limpah dalam dunia startup.

7. Jangan meremehkan mata kuliah non IT hanya karena membosankan
Saya pertama kali dapet nilai C pada waktu kuliah “Pengantar Ilmu Pertanian”, kemudian disusul oleh “Sosiologi Umum”, dilanjutkan dengan “Bahasa Indonesia II”. Dan anda tahu? saya sangat menyesal kenapa dulu nggak sedikit lebih keras belajar. Sekarang IPK ancur-ancuran, dan yang pasti saya dah ga bisa masuk perusahaan gede seperti Nokia yang menyaratkan IPK diatas 3.5.

Oke, mungkin analogi diatas tidak selalu benar untuk banyak kasus. Banyak temen-temen bisa berhasil dengan IPK tiarap, tapi anda harus mendengar dulu cerita ini.

Ada sebuah perusahaan A yang hendak melakukan rekruitmen pegawai freshgrade. Pak Wahyu, kepala bagian personalia bertugas untuk melakukan “pitching” dengan memasukkan iklan lowongan pekerjaan di beberapa media. Kemudian setelah batas waktu pendaftaran, ada banyak sekali pelamar yang mengirimkan lamaran pekerjaan.
Office boy datang melapor ke pak wahyu,
“Lapor pak, surat lamaran pekerjaan sudah selesai saya pack, mau diletakkan di mana nih pak?”,
“oh, silahkan letakkan di meja saya!”,
“wah, itu mustahil pak!”,
“lho, gimana maksudnya?”,
“lapor, lamarannya ada 10 dus ukuran kulkas tuju pintu pak!”
“hoh? oke-oke ga perlu panik, coba saya minta tolong disaring ya surat lamarannya, yang IPKnya dibawah 2.75 dipisahin”,
“siap pak, laksanakan”.
….
“Pak, lapor, sudah selesai dipisahkan”,
“oke, sekarang tinggal berapa?”,
“masih ada seribu pelamar lagi pak!”
“hmmm masih terlalu banyak, tolong yang IPKnya dibawah 3.5 disaring… , oh iyah kalo udah selesai disaring, lamaran sisanya kamu pack trus jual ke tukang kertas, uangnya buat kamu, mayan buat beli rokok, makasih dah mbantuin :D
“sama-sama pak”
Nah dari cerita diatas, lamaran pekerjaan saya akan jadi bungkus kacang rebus :(.

Menyebalkan sih belajar matakuliah non IT, tapi anda harus sadar, IPK adalah nilai evaluasi paling jelas menggambarkan kemampuan kita. Pertama, karena dinilai oleh banyak dosen. Kedua, dinilai dalam tenggang waktu yang lama. Ketiga, dinilai dari berbagai macam matakuliah yang berbeda-beda. Keempat, IPK mencerminkan bagaimana anda menyelesaikan masalah, asal-asalan atau perfeksionis. Bagi banyak perusahaan IPK menjadi tolok ukur paling berpengaruh untuk menilai profile seorang freshgrade. So? dont blow non IT course because it’s boring!

8. Berhentilah mengkhawatirkan nanti akan kerja di mana
Beberapa temen saya, terutama dari jurusan non IT, banyak bertanya-tanya kemana nanti kerjanya setelah lulus. Karena lapangan pekerjaan untuk mahasiswa IPB yang sesuai dengan disiplin ilmu di bangku kuliah sangat terbatas. Sebagaian besar teman-teman saya bekerja di bidang yang berbeda jauh dengan jurusanya pada waktu kuliah dahulu. Tetapi hal ini sedikit berbeda dengan Ilmu Komputer, lapangan kerja sebagai programmer dan IT profesional masih sangat terbuka lebar. Berhentilah mengkhawatirkan nanti mau kerja di mana, pasti dapet kerjaan. Bagi lulusan IT “Nyari kerjaan itu gampang, nyari kerjaan yang gampang itu susah” :D .

9. Buatlah sebuah aplikasi sederhana sampai selesai
Kultur perusahaan IT adalah “Result Oriented”. Artinya perusahaan ga peduli gimana kita ngerjainya asalkan selesai!. Mau siang tidur, malem begadang, atau berangkat kerja jam 10 balik jam 7 malam, terserah. Perusahaan hanya peduli bahwa tugas yang diberikan diselesaikan dengan baik dan dalam tenggang waktu yang ditentukan, “get things done!”. Dengan membuat aplikasi sederhana sampai selesai, pada waktu wawancara kita bisa menunjukkan kepada pewawancara bahwa kita bisa produktif menghasilkan sesuatu, tidak hanya bisa omdo.

Pengalaman menyelesaikan aplikasi dari awal sampai akhir bisa menjadi poin yang sangat berguna dalam wawancara. Ada juga perusahaan yang menyaratkan kita berpengalaman terlibat dalam project, minimal dua kali, dari awal sampai akhir. Pengalaman seperti ini akan memberikan gambaran yang sangat penting untuk seorang programmer bagaimana proses SDLC berjalan.

10. Aktif di komunitas
Komunitas bisa menjadi media yang sangat penting untuk mengembangkan skill kita sebagai programmer. Disana kita bisa bertanya jika ada kesulitan, dan menjawab jika ada yang bertanya. Menjawab pertanyaan anggota milis lain sangat berguna untuk mengetaui sejauh mana pemahaman kita tentang masalah technical. Dengan menjawab juga, kita akan mendapatkan feedback tentang konsep yang sudah kita pahami, kalau salah pasti ada yang menjelaskan dimana salahnya.

Anggota komunitas sangat bervariasi dari profesional senior sampai newbie, jika kita sangat aktif, komunitas akan menyadari “kehadiran” kita. Saya sendiri merasakan dampak signifikan dari aktivitas di komunitas, terutama pengakuan banyak orang terhadap eksistensi kita sebagai profesional. Tentu saja hal ini akan sangat memperlancar karir kita, jadi orang terkenal itu enak lho, hahhahaha :D

Nah, setelah membaca saran-saran diatas, terserah anda mau mengikuti atau tidak. Tapi ingat, saran ini tanpa garansi, kalau berhasil ya selamat, gw ikut senang, kalau gagal, plis saya jangan dibata ya! :D