Story ini merupakan pengembangan dari story Medium saya 3 tahun yang lalu https://medium.com/@jundialwan/apa-yang-harus-disiapin-kalau-mau-jadi-software-engineer-c0dd6c1ade8f
Saya mau jadi Software Engineer. Dari dulu mau banget. Walaupun sekarang haluan saya sudah tidak 100% kesana. Mau banget karena ingin banget merasakan gimana jadi seorang coder.
Kira-kira begitu yang saya tulis hampir tiga tahun lalu pada story Medium saya. Tiga tahun berlalu saya menjalani peran Software Engineer beberapa kali. Seiring dengan pengalaman yang bertambah, pandangan saya tentang peran Software Engineer pun lebih kaya.
Pada story ini saya akan menambahkan daftar singkat tips yang telah saya berikan pada 3 tahun lalu. Tidak dapat dipungkiri bahwa bidang Software Engineering berkembang cepat dan persyaratan menjadi seorang Software Engineer di Indonesia semakin tinggi karena persaingan yang ketat. Berdasarkan pengalaman saya berikut adalah beberapa tambahan tips persiapan untuk kalian yang ingin menjadi Software Engineer:
Saat ini hanya sekedar bisa ngoding bukanlah hal yang dicari perusahaan teknologi. Pengalaman dan portofolio merupakan hal yang penting dan dijadikan penilaian saat ini untuk mengukur kesiapan calon Software Engineer. Sederhana, para perekrut akan lebih tertarik merekrut orang yang sudah punya pengalaman mengerjakan project/internship/part-time dibanding yang belum pernah sama sekali. Teori dan praktis perlu diimbangi.
Mengerjakan project mengajarkan hal yang berbeda jika dibandingkan dengan teori. Dinamika dalam mengerjakan project, baik teknis maupun non-teknis, lebih menggambarkan keseharian seorang Software Engineer di dunia nyata dalam menghadapi masalah dan menemukan solusi untuk permasalahan tersebut. Sekecil apapun pengalaman kamu dalam project akan sangat berarti.
Jenis project yang dapat kamu lakukan sangat beragam. Mulai dari project freelance, kontribusi pada open-source project, maupun pengalaman internship/part-time saat kamu masih kuliah. Hal ini mengapa sebagian besar mahasiswa Ilmu Komputer/Informatika pada perguruan tinggi yang bergengsi mencari-cari lowongan internship/part-time/freelance projectpada masa kuliah mereka. Tentu saja untuk mencari pengalaman kerja untuk memudahkan jalan mereka bersaing saat lulus nanti dalam mencari kerja.
Yang paling penting, pastikan kamu memetik hikmah dari setiap project dan bisa menceritakannya secara singkat pada resume dan saat interview. Hal ini yang akan menarik bagi perekrut dan memudahkan mereka menentukan apakah kamu orang yang mereka cari.
Poin ini terkesan bukan ‘persiapan’ karena sepertinya butuh waktu yang lama untuk punya pengalaman project/internship. Coba mulai dengan project-project kecil sedikit demi sedikit. Jika kebetulan kamu masih kuliah rencanakan internship/part-time pada waktu liburan kamu selanjutnya atau buat project kamu sendiri.
Berhubungan dengan poin nomor satu, salah satu hal yang menurut saya akan terbantu terasah ketika mengerjakan project/internship/part-time adalah kemampuan memecahkan masalah. Saya bisa bilang bahwa sebagian besar waktu yang dihabiskan oleh Software Engineer adalah mencari solusi dari suatu masalah teknis yang dihadapi. Menuliskan kode pada komputer hanya sebuah media untuk menuangkan solusi tersebut menjadi kenyataan.
Kemampuan menyelesaikan masalah ini yang sebetulnya dicari dari seorang Software Engineer. Kamu pernah dengar inteview ‘whiteboard coding test’? Whiteboard coding test merupakan salah satu bentuk test masuk terkenal pada bidang Software Engineering dimana calon Software Engineer diminta untuk menuliskan algoritma solusi dari sebuah masalah yang diberikan pada papan tulis. Test ini sangat populer pada perusahaan teknologi seperti Google, Facebook, dan lainnya. Di Indonesia sendiri setau saya Traveloka dan Gojek pernah menggunakan metode ini untuk interview calon Software Engineer mereka (tolong koreksi kalau ada salah).
Mengapa tidak langsung suruh ngoding saja? Karena bukan kemampuan ngoding yang mereka cari. Yang mereka cari adalah cara berpikir calon Software Engineer tersebut untuk menemukan solusi dari permasalahan yang diberikan.
Cara paling manjur untuk mengasah kemampuan pemecahan masalah adalah jangan malas bertanya tapi jangan bertanya seperti pemalas jika dihadapkan pada suatu permasalahan. Kamu bisa bertanya untuk memperjelas permasalahan yang dihadapi seperti bertanya asumsi atau konteks dari suatu permasalahan. Tapi jangan bertanya seperti pemalas dengan meminta ‘bocoran’ atau kisi-kisi. Kenyataannya hal tersebut tidak dapat kamu lakukan kalau sudah menjadi Software Engineer. Kalau kamu dihadapkan permasalahan yang memang belum pernah dipecahkan maka kamu tidak akan menemukan bocoran jawaban tersebut dari rekan-rekan kantor kamu. Tentunya tidak ada yang ingin merekrut Software Engineer pemalas seperti itu.
Saya sarankan kamu untuk memanfaatkan Google dengan lebih baik. Saya bisa jamin kalau kemampuan pemecahan masalah berbanding lurus dengan kemampuan googling yang akurat. Tentunya kamu sendiri harus tahu apa yang perlu di-googling. Bagaimana saya tahu apa yang perlu di-googling? Itu tugas kamu. Cari sendiri jangan malas.
Sampai saat ini mungkin kamu hanya bekerja sendirian dalam project pribadi yang kamu kerjakan. Namun, kamu tidak akan bekerja sendirian sebagai Software Engineer pada perusahaan. Kamu akan bekerja dengan Software Engineer lainnya dan orang-orang dengan peran lainnya seperti project manager, product manager, designer, business owner, dan sebagainya.
Ide tidak akan datang dari diri kamu saja dan tidak bisa dijamin orang lain punya ide yang sama dengan kamu dan setuju dengan ide kamu. Hal ini yang penting untuk dibiasakan untuk seorang Software Engineer yaitu berdiskusi, brain storming, sebagai sebuah tim yang memiliki pandangan dan ide berbeda terhadap suatu permasalahan.
Saya tidak bisa berikan tips lain selain lebih menghargai pendapat orang lain. Pendapat orang lain tersebut bisa jadi mencetuskan ide baru bagi kamu yang tidak terpikirkan sebelumnya dan menciptakan solusi baru yang lebih baik untuk permasalahan tersebut. Untuk terbiasa akan hal tersebut seringlah membuat project atau hackathon dengan tim kamu. Kamu akan belajar lebih menghargai pendapat orang lain ketika bekerja dengan tim sendiri. Apalagi anggota tim kamu merupakan orang-orang yang kritis.
Resume/CV mungkin hal yang sepele dan tidak diperhatikan. Sayangnya resume adalah tiket masuk kamu ke perusahaan tempat kamu melamar. Kalau tidak menarik tentu tidak akan diundang ke tahap selanjutnya. Jadi membuat resume yang tepat adalah kunci. Melihat fakta di lapangan dan teman-teman, banyak resume yang hanya estetik secara visual namun bobrok secara konten. Sayang sekali karena kamu bukan ingin melamar posisi graphic/visual designer atau offline marketing karena resume yang estetik secara visual saja tidak akan dapat perhatian oleh perekrut Software Engineer.
Bagi seorang Software Engineer yang penting untuk dicantumkan pada resume hanya cukup:
Ceritakan pengalaman kerja (Internship/Part-time/Freelance), jika ada. Apa saja keberhasilan dan dampak yang kamu berikan kepada perusahaan atau temuan yang kamu dapatkan.
Ceritakan project-project yang pernah kamu terlibat. Apa saja yang menarik, apa dampaknya, apa hal baru yang kamu pelajari.
Cantumkan repository Github dan tautan yang mengarah ke project yang kamu kerjakan. (Mungkin tidak dicek HR tapi Engineering Manager/siapapun yang merekrut kamu mungkin akan cek. Cantumkan saja)
Cantumkan latar belakang pendidikan dan IPK jika diperlukan. Beberapa perusahaan tidak melihat IPK, ada yang melihat almamater, ada yang tidak peduli sama sekali. Riset perusahaan yang ingin kamu lamar.
Cantumkan kontak yang bisa dihubungi seperti nomor WhatsApp atau email pribadi secukupnya. Jangan kontak media sosial ingat ini dunia profesional.
Tidak perlu foto, alamat lengkap, hobi, dan hal lainnya yang tidak penting atau tidak relevan yang tidak meningkatkan probabilitas kamu diterima. Hal tersebut tidak akan membantu HR untuk meloloskan kamu ke fase selanjutnya. HR tidak punya waktu lebih dari 20 detik untuk melihat resume kamu, mereka hanya skimming. Jadi pastikan bahasa yang kamu gunakan efisien dan mudah dipahami, poin yang kamu masukkan hanya poin yang paling penting dan relevan. Setelah 20 detik kemudian HR akan menentukan apakah kamu layak untuk diwawacarai.
Setelah membuat resume kamu saatnya lakukan berikan resume tersebut ke teman kamu dan minta masukan, peer review. Peer review sangat penting dilakukan untuk mendapatkan sudut pandang dari orang lain terhadap resume kamu. Mungkin saja ada typo atau maksud yang tidak dimengerti jika dibaca orang lain.
Selanjutnya adalah melakukan riset untuk membandingkan resume kamu dengan resume orang lain. Kamu bisa mendapatkan pandangan dan ide dari membaca resume orang lain juga. Silakan googling contoh-contoh resume untuk Software Engineer di Google untuk kamu bandingkan.
Tentunya kamu tahu bahwa bidang Software Engineering berkembang dengan pesat, baik secara maupun praktis maupun secara riset. Satu-satunya cara untuk tetap bisa menjadi seorang Software Engineer yang dapat diandalkan adalah mengikuti perkembangan teknologi itu sendiri.
Banyak cara untuk tetap update walaupun sesibuk apapun. Pada dasarnya biasakan diri untuk selalu belajar hal baru. Kamu bisa baca lewat artikel/blog, menonton YouTube, mengikuti online course, ataupun ikut meetup komunitas Engineering di kota kamu berada. Masing-masing cara belajar tersebut punya plus dan minus masing-masing. Ketahui mana yang paling cocok untuk kamu ikuti dan konsisten melakukannya karena tidak semua hal tersebut perlu kamu lakukan untuk terus update dengan perkembangan Software Engineering. Saya sendiri jarang mengikuti meetup komunitas namun saya imbangi dengan sering membaca artikel/blog/berita seputar Software Engineering, ngoprek library terbaru, ikuti akun-akun yang berhubungan di Twitter, ikut beberapa online course, kadang mendengar podcast.
Jangan malas belajar hal baru agar kamu tetap ‘fresh’. Cari cara belajar yang paling efektif untuk kamu.
Banyak dari poin diatas bukan merupakan hal yang bisa disiapkan dalam waktu semalam. Percayalah tidak ada jalan pintas menuju Software Engineer yang handal. Tapi percayalah kalau dibiasakan menjadi seorang Software Engineer yang handal bukanlah hal yang sulit.
Jika kamu sedang mempersiapkan melamar menjadi Software Engineer dalam waktu dekat, 3–6 bulan, saya sarankan kamu untuk baca buku http://www.crackingthecodinginterview.com/. Seluruh tips yang pernah saya paparkan terdapat pada buku tersebut dengan penjelasan yang sangat komprehensif.