Perjalanan saya menjadi coder memang belum panjang, karir profesional saya baru berjalan 4 tahun. Saya pertama kali belajar koding tahun 2011. Tahun pertama saya masuk kuliah.

Tetapi saya sudah cukup banyak melihat betapa beratnya pekerjaan sebagai coder profesional...

Di jurusan ilmu komputer, tidak semua orang masuk jurusan ini karena passion. Beberapa di antara mereka masuk karena merasa jurusan ini keren, ada juga yang masuk karena merasa tertantang, tetapi banyak juga yang masuk karena mereka tidak tahu apa yang mereka pilih, hanya iseng saja.

Biasanya kelompok-kelompok ini di semester ke-3 dan sampai ke-5 sudah mulai menyerah dan tidak bisa melanjutkan kuliah.

Jika Kamu adalah salah satu orang yang goal akhirnya untuk menjadi coder, tolong dipikirkan ulang. Saya sudah cukup banyak melihat orang yang tersesat di jalur ini.

Untuk menjadi coder, tolong tanyakan "Kenapa?" kamu ingin menjadi coder.


The "Why" Question

Steve Jobs pernah berkata jika semua orang harus belajar koding. Dan saya setuju itu. Koding sebagai hobi mungkin iya, tetapi bagaimana jika koding untuk hidup? Apakah akan terus sustainable semangat dan energi itu?

Mhh...

Coba kita lihat, akhir-akhir ini banyak sekali bootcamp-bootcamp di Indonesia. Beberapa di-antara bootcamp tersebut bahkan menawarkan mentoring koding dari nol.

Terlepas dari harga bootcamp-bootcamp tersebut, janji manis seperti jaminan langsung bekerja setelah lulus dari bootcamp (money back guarantee) tentu siapa yang tidak mau. Tidak ada resiko sama sekali.

Apakah memeang se-indah itu?

Sebelum memutuskan apakah kamu akan menjadi coder. Saya minta tolong sekali lagi, coba tanyakan pada diri sendiri apa alasannya. Kenapa kamu ingin menjadi coder profesional? apakah perkerjaan ini hanya sebagai larder untuk mencapai tujuan kamu selanjutnya, atau kamu melihat bahwa pekerjaan ini memang sexy?

Jika alasan kamu adalah sebatas wealthiness, gampang mencari pekerjaan, atau biar bisa cepet kaya. Maka saya pastikan ini adalah bukan alasan yang tepat. Alasan seperti ini biasanya sangat mengebu-gebu diawal, tetapi seiring berjalannya waktu, seiring masalah-masalah baru muncul, passion seperti ini tidak akan bertahan lama.

Tanyakan kepada diri sendiri, Why-nya.

Apakah koding adalah alasan yang tepat untuk mendapatkan goal akhir yang ingin kamu capai?

Jika kamu masih belum bisa menjawab why-nya. Coba pertimbangkan poin-of-view saya di bawah, dan mari kita renungkan.

Persistent

Pekerjaan seorang coder sebenarnya bukan pada menulis kodenya. Menulis kode hanyalah kulit dari pekerjaan ini. Pekerjaan coder sesungguhnya adalah menjadi seorang pembelajar selama dia menjadi coder (Life long learner). Kode yang akan kita tulis nantinya akan di baca oleh orang lain, dan sebaliknya kita juga akan sangat sering membaca koder orang lain. Pastikan bahwa kita tidak hanya copy paste code, tetapi paham betul kode itu bekerja.

Untuk mengetahui apakah kita benar-benar memahami kode tersebut, caranya: Jika kita bisa menjelaskan kode yang kita tulis dalam bahasa yang mudah dimengerti end-user, bisa dipastikan bahwa kita sudah paham.

Presisten di sini artinya tidak gampang menyerah, selalu penasaran. Ini sulit sekali karena coder dituntut untuk bisa belajar hal-hal baru dengan waktu yang relatif cukup cepat. Membaca dokumentasi, memahami flow bisnis, melakukan testing, dll.

Dan itu semua dalam banyak case sering berubah... . Kita harus bisa beradaptasi dengan situasi seperti ini.

Karenanya, belajar coding bukanlah sprint, tetapi marathon.

Kamu yang baru selesai beljar REST API mungkin akan di tuntut belajar GraphQ. Kamu yang baru selesai belajar Vue mungkin harus juga mengerti React. Kamu yang baru selesai belajar ObjectiveC mungkin harus juga belajar Swift dalam waktu yang tidak banyak, dll.

Nah biasanya, coder yang baru memulai coding, belum sadar betul tentang hal ini.

Di tahap awal ini, biasanya yang dirasakan adalah semangat menggebu-gebu dan perasaan percaya diri yang tinggi. Merasa bahwa toolbelt mereka sudah cukup dan merasa heran kenapa banyak orang yang berkata bahwa koding itu susah.

Akan tetapi semakin lama dan banyak melakukan coding, semakin banyak kesalahan-kesalahan yang dilakukan. Semakin banyak bugs yang ditemukan. Semakin sadar bahwa mereka masih harus belajar banyak hal.

Dunning-KrugerEffect
Source: https://en.wikipedia.org/wiki/File:Dunning-Kruger-Effect-en.png

Dan pada tahap ini, jika mental dan passion tidak cukup kuat. Akan terlitas dikepala kita untuk berhenti menjadi coder.

Tekanan itu belum seberapa.

Jika bekerja dalam tim, tekanan yang didapatkan akan semakin besar. Tanggung jawab yang dipegang bukan hanya untuk diri sendiri, tetapi untuk client, team dan timeline.

Ketika kerja tim terhambat dan timeline meleset gara-gara kesalahan yang kita buat, tekanan ini akan terasa jauh lebih berat. Perasaan menyalahkan diri sendiri, merasa diri tidak pantas, atau bahkan terlintas untuk berhenti, adalah beberapa pikiran yang terlintas saat tekanan itu muncul.

Pada awal kita menentukan timeline untuk membuat sebuah aplikasi, biasanya project manager melempar pertanyaan kepada coder. Kira-kira berapa lama waktu yang dibutuhkan untuk menyelesaikan fitur tersebut.

Menjawab pertanyaan ini sangat sulit.

Berbeda dengan disiplin ilmu lain, kita tahu bahwa menentukan estimasi waktu dalam software development sangat sulit ditebak, sangat sering meleset. Tidak peduli apakah kita memakai metode agile atau bukan. Probabilitas software development dalam waktu yang tepat tidak begitu tinggi.

Alasannya, terkadang coder di-sudutkan/di-challange dengan waktu estimasi yang tidak masuk akal. Perusahan yang tidak memiliki teach-culture yang baik tidak akan berkompromi dengan ini. Ujung-ujunya untuk memenuhi ekpektasi ini, yang coder lakukan adalah menulis kode yang tidak sesuai dokumentasi (low quality code), design pattern yang buruk, dan melakukan teach-dept.

Ketika tekanan-tekanan ini terus muncul, terkadang sebagai coder, kita bertanya, apakah ini karir yang tepat untuk kita perjuangkan.

~

Kabar baiknya, ketika seorang coder sadar betul bahwa dia masih perlu banyak belajar. Dan berani bangkit lagi, artinya coder tersebut sudah melewati tahap awal. Dan akan semakin bijak dalam mengambil keputusan-keputusan dalam kodenya.

Jika ia bisa melwati tahap ini, ia akan lebih resilient dalam menghadapi tekanan-tekanan selanjutnya.

Seiring waktu, setiap kode yang ia tulis akan lebih hati-hati. Mungkin phase nya tidak secepat dulu lagi. Tetapi kualitas kodenya akan lebih baik. Dan dia bisa mengestimasi waktu pekerjaannya lebaih baik lagi.

Cognitive Overload

Ketika saya pertama kali membuat aplikasi, pikiran saya sangat sempit. Yang saya pikirkan adalah bagaimana aplikasi ini bisa menjalankan tugasnya sesuai perintah kita, sesuai algoritma yang dibuat.

Tidak pernah saya memikirkan kondisi-kondisi diluar itu.

Contohnya konkritnya ketika saya membuat Internet App; Tidak pernah saya memikirkan bahwa internet itu tidak stabil, tidak pernah memikirkan bahwa browser yang client pakai bukan hanya Chrome, atau layar yang mereka pakai ternyata sangat kecil.

Kondisi yang ideal pada mesin saya, ternyata masih belum ideal untuk banyak orang di luar sana. Dan kita tidak tahu, seberapa banyak case yang tidak ideal di luar sana.

Dan di sinilah, rasa empati saya di-uji.

Apakah saya akan membuat aplikasi yang men-support ke tidak ideal-an itu?

Koder yang baik tentu akan memikirkan kondisi-kondisi tidak ideal ini. Koder yang baik tahu betul get-the-job-done saja tidak cukup. Mereka tahu bahwa feedback UI itu sangat penting, spinner, error message, animasi, adalah sebagian kecil support untuk mendukung ke-tidak ideal-an.

Jika pada tahap ini, Kamu belum bisa merasakan apa yang calon pemakai aplikasi kamu pakai, mulailah belajar. Mulai mempertanyakan apakah aplikasi ini bisa diterima dengan baik. Mulailah mempertanyakan bagaimana jika aplikasi ini digunakan dalam kondisi yang paling ekstrim.

Ya, Pekerjaan sebagai programmer itu sangat sulit, kita dituntut untuk keep on track terhadap produk yang kita bangun.

Kita dituntut mengerti bagaimana flow bisnis dari sebuah produk, bagaimana setiap komponen pada sofrware yang dibuat berkomunikasi, bagaimana jika orang memakai software tidak sesuai apa yang kita harapkan, bagaimana jika komponen-komponen pendukung lain tidak bekerja sesuai yang diaharpakan juga, dll.

Semua dependency dan flow bisnis ini sangat kompleks untuk dikerjakan dalam waktu yang singkat.

Belum selesai dengan pekerjaan kita. Terkadang ada saja client atau orang diluar dev, yang tidak bisa berempati dengan kompleksitas pekerjaan developer. Dan developer membenci orang seperti mereka.

Saya pastikan orang seperti ini akan selalu ada. Dan jika prgrammer tsb belum bisa menerima kritik, pendapat, sarat, dari orang-orang seperti mereka, ujung-ujungnya emosi programmer akan naik, tidak semangat atau lebih ekstrim lagi hilang harapan untuk melanjutkan karir sebagai programmer.

Koding Secara Fisik, Tidak Sehat

Koding secara fisik, bukanlah aktivitas yang sehat. Ya, saya serius.

Coder dituntut untuk bisa duduk dan fokus dalam waktu yang lama. Jika saja posisi duduknya salah, maka dalam jangka panjang tentu ini akan membahayakan tulang belakang.

Pernah lihat Linus Torvalds bekerja? ia bekerja menggunakan meja berdiri. Dan ini bukan tanpa alasan.

Jika Kamu adalah salah satu orang yang tidak bisa duduk dalam waktu yang lama dengan posisi duduk yang baik. Saya sangat menyarankan untuk tidak menjadi koder demi kebaikan.

Dalam waktu yang tidak sedikit juga, sangat besar stress yang dialami coder. Mulai dari deadline yang mepet, requirement yang berubah-rubah, dokumentasi yang sulit dipahami, dst..

Belum lagi, awarness perusahan-perusahan terhadap hal seperti ini masih sangat kecil.

Tidak sedikit, saya lihat, masih ada saja perusahaan yang cutting budget sebatas untuk membeli kursi yang kurang baik untuk programmer-programmer mereka, Membiarkan programmer bekerja pada ruang yang kurang kondusif.

Padahal, yang mereka butuhkan adalah dukungan-dukungan seperti ruangan cukup tenang, kursi yang nyaman, dll.

Inilah alasan kenapa beberapa startup, sering kali menunjukan betapa nyaman dan fleksibelnya ruang kerja untuk para programmer. Alasannya adalah mereka cukup aware bahwa programmer by default tidak sehat, dan harus di sehatkan.

Nah, ngomong-nomgon soal waktu yang fleksibel juga. Ini bisa berarti baik bisa berarti buruk. Terkadang waktu yang fleksibel menjadi alasan bagi suatu perusahaan untuk membuat programmer mereka bekerja lebih dari waktu kerja yang sudah ditentukan.

Socially Awkward

Di film-film stereotype programmer biasanya digambarkan dengan orang berkacamata, memakai hoddie, dan sedang mengetik di atas laptop.

Jika Kamu mengikuti series Silicon Valley, Richard Hendrik adalah streotype dari programmer-programmer kebanyakan. Ia digambarkan sebagai karakter yang nerd dan sangat awkward.

Bahkan bukan karakter Richard Hendrick saja, beberapa temannya memiliki karaktar yang tidak jauh berbeda. Mereka sangat socially awkward.

Apakah ini kebetulan?

Tentu tidak..

Karakter-karakter pada series Silicon Valley tentu ada karena memang ada orang seperti itu di dunia IT. Mereka melakukan riset, bagaimana sebenarna keadaan atau suasana sesungguhnya.

Pengalaman saya, meskipun tidak se-ekstrim seperti digambarkan dalam series Silicon Valley, memang orang IT ada saha yang seperti itu. Orang-orang IT by default sangat introvert. Mereka sangat suka menghabiskan waktunya dengan dunia-dunia mereka.

**

Di tulisan ini, saya tidak sama sekali berniat untuk mematahkan semangat teman-teman yang mau belajar koding. Tetapi saya mencoba membuka perspektif lain dari apa yang sebenarnya dunia nyata terjadi.

Semua orang hebat yang menjadi inspirasi teman-teman untuk menjadi coder, saya yakin sudah bisa meng-handle apa yang saya tulis di atas. Dan saya sangat yakin, mereka mempunyai alasan yang kuat untuk melakukan itu dalam waktu yang tidak sedikit.

Koding itu bukan pekerjaan yang mudah, koding itu pekerjaan yang sangat menguras banyak energi dan waktu. Alasan yang tepatlah yang bisa membuat kita bertahan di-karir ini.