Kembali ke Blog

Jadi Software Engineer Remote: Yang Saya Pelajari dari Bertahun-Tahun Freelance

#career#remote#freelance
Jadi Software Engineer Remote: Yang Saya Pelajari dari Bertahun-Tahun Freelance

Udah beberapa tahun saya kerja remote sebagai freelance software engineer, gantian pegang beberapa proyek dari klien yang beda-beda — dari startup kecil yang timnya cuma berlima, sampai perusahaan yang tim engineering-nya udah tersebar di tiga zona waktu. Beberapa pelajaran di bawah ini bukan hasil baca artikel “tips kerja remote”, tapi hal yang beneran nempel karena kejadian nyata, kadang lewat cara yang nggak enak.

Komunikasi proaktif itu wajib, bukan opsional, dan ini pelajaran yang saya dapet dengan cara yang agak menyakitkan. Di kontrak awal-awal saya dulu, saya kerja diem-diem selama tiga hari beresin satu fitur yang ternyata scope-nya lebih gede dari yang saya kira, tanpa update apapun ke klien selain “lagi progress”. Pas akhirnya saya kirim, klien-nya udah keburu khawatir dan mulai nanya-nanya apa saya masih kerja atau udah ngilang. Sejak itu saya bikin kebiasaan kirim update singkat tiap hari kerja — bukan laporan panjang, cukup dua-tiga kalimat soal apa yang udah selesai dan apa yang lagi dikerjain — walau progresnya kecil atau bahkan cuma “masih debug masalah yang sama kayak kemarin”. Waktu kerja remote, klien nggak bisa “lihat” kamu lagi ngerjain apa, dan diam itu gampang banget disalahartikan jadi nggak kerja.

Disiplin waktu itu tanggung jawab sendiri sepenuhnya. Nggak ada yang negur kalau saya ngaret, dan nggak ada yang maksa saya istirahat juga. Saya butuh waktu cukup lama — mungkin setahun pertama — buat nemuin ritme yang beneran jalan: jam kerja yang saya set sendiri dan saya jaga ketat, bukan cuma “kerja kapan mood aja” yang awalnya kedengeran enak tapi ujungnya bikin saya kerja jam 11 malam ngejar deadline yang sebenernya bisa selesai siang kalau saya disiplin dari pagi.

Estimasi waktu itu skill yang harus terus diasah, dan ini yang paling sering bikin saya keteteran di tahun-tahun awal. Freelance berarti sering kerja dari beberapa proyek sekaligus, dan estimasi yang meleset di satu proyek gampang ngerembet ke komitmen di proyek lain. Saya pernah janji ke dua klien di minggu yang sama, masing-masing dengan asumsi “ah ini paling dua-tiga hari” — dan dua-duanya sama-sama molor jadi hampir seminggu karena ada requirement yang nggak kelihatan di awal. Sekarang saya selalu nambahin buffer minimal 30-40% di atas estimasi awal saya, khususnya buat kerjaan yang nyentuh codebase yang belum saya kenal.

Dokumentasi menyelamatkan banyak waktu, terutama pas kerja async lintas zona waktu. Kalau keputusan kenapa saya milih pendekatan tertentu cuma ada di kepala saya, tiap kali klien nanya “kenapa dibikin gini” saya harus ngulang penjelasan yang sama dari nol — dan kadang itu kejadian di jam yang beda-beda karena zona waktu klien nggak sama. Sekarang saya biasain nulis satu paragraf singkat di PR description atau commit message tiap kali ada keputusan yang nggak obvious, biar orang bisa baca sendiri tanpa nunggu saya online.

Batas antara kerja dan hidup pribadi itu yang paling susah dijaga, dan saya masih belum sepenuhnya berhasil di titik ini. Remote freelance gampang banget bikin saya “selalu online” — notifikasi Slack klien masuk jam 9 malam, dan karena laptop ada di ruangan yang sama, gampang banget kebiasaan buka dan bales langsung padahal bisa nunggu besok pagi. Yang paling membantu buat saya bukan aturan keras “nggak boleh buka laptop setelah jam X”, tapi mindahin notifikasi kerja ke perangkat terpisah yang saya taruh di ruangan lain pas udah lewat jam kerja — jadi butuh usaha sadar buat cek, bukan cuma refleks liat layar yang nyala.

Remote freelance ngasih fleksibilitas yang besar — saya bisa atur jadwal sendiri, kerja dari mana aja, pilih proyek yang beneran menarik. Tapi fleksibilitas itu cuma berguna kalau dibarengi disiplin yang setara, dan disiplin itu nggak dateng otomatis cuma karena saya “orangnya emang disiplin”. Butuh sistem kecil yang saya bangun sendiri, biasanya setelah gagal beberapa kali dulu.