DISKON TERBATAS! Masukkan kupon "skillbaru" saat checkout di kelas apa saja

Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

MEMBERI SOLUSI YANG BERLEBIHAN (OVERENGINEER)

Over-engineer adalah istilah ketika kita menyelesaikan suatu masalah namun dengan solusi yang berlebihan. Yuk kita bahas seputar apa itu overengineering di sini

Daftar Isi:

Contoh over-engineer pada dev
Penyebab over-engineering
Toleransi over-engineer
Overengineer pada fitur
Kesimpulan

Kamu sedang ingin keluar rumah, tapi di luar hujan. Bagaimana ya biar tidak basah kuyup? Saya ada ide! bagunlah kanopi.. sampai tujuan kamu. Masalahnya selesai, kamu tidak basah lagi. Tapi.. apakah bikin kanopi adalah solusi yang tepat untuk menghindari hujan?

Yang kita lakukan di atas adalah over-engineering suatu masalah. Overengineer bisa kita artikan “Menggunakan solusi berlebihan dari yang dibutuhkan”. Berlebihan di sini bisa banyak: bisa lebih mahal atau lebih kompleks.

Contoh over-engineer pada dev

Sebagai seorang developer ada banyak kasus kita berlebihan menggunakan sesuatu. Contoh:

Tentu setiap kasus di atas akan sangat bergantung dengan konteksnya masing-masing.

Penyebab over-engineering

Hal ini bisa dikarenakan oleh pengetahuan yang terbatas saat itu. Ada istilah “kalau orang sudah belajar memalu, semuanya terlihat seperti paku”. Kita berusaha mengimplementasikan ilmu yang kita punya tanpa tahu konteks sebenarnya.

Tidak mengetahui konteks

Masing-masing alat (tool/library/framework) punya tujuan kenapa ia dibuat. Tidak ada satu tool untuk mengatasi semua masalah.

Untuk mengatasinya, tentu perlu mempelajari tool atau ilmu yang kita punya sekarang. Apa sih konteks ia digunakan, kapan sebenarnya solusi ini menjadi tepat.

Tidak mencari alternatif

Yang kedua, kita perlu mencari alternatif. Ada banyak hal yang kita tidak tahu. Karena itu perlu melihat pilihan-pilihan lain. Mungkin ada solusi yang lebih tepat.

Kita perlu terbuka dengan alat atau ide yang tidak familiar sebelumnya. Bisa jadi ini bisa jauh membuat pekerjaan kita jadi lebih mudah.

Berlebihan memikirkan masa depan

Kita senang membuat sebuah abstraksi, karena takut program ini akan diimplementasikan di banyak hal, lebih baik kita abstraksikan sekarang agar nanti menjadi lebih fleksibel.

Argumen ini tentu valid. Kita tidak boleh melupakan rencana dari aplikasi ini, bukan hanya saat ini saja. Kita harus tahu, apa yang akan ditambahkan nanti, dalam jangka waktu berapa lama, dan informasi lainnya. Karena itu kita perlu mempelajari kebutuhan dari aplikasi ini sedetail mungkin dari berbagai orang yang terlibat dengan proyek ini seperti klien atau bos kita.

Toleransi over-engineer

Bagaimana dengan jaman sekarang? ketika banyak bahasa program baru, framework bahkan aplikasi yang memudahkan pekerjaan kita. Bisa jadi framework tersebut tergolong ‘berat’ atau aplikasinya ‘mahal’. Apakah menggunakan solusi tersebut tergolong over-engineer?

Trade-off

Mungkin sebagai seorang developer kita bisa membuat suatu aplikasi lebih cepat dengan mempelajari bahasa low-level. Dengan ini kita membuat aplikasinya lebih hemat resources, performanya lebih baik dan gratis (karena kita buat sendiri!).

Pertanyaannya: apakah kamu rela menghabiskan banyak waktu untuk itu? mempelajari, implementasi dan proses debugnya butuh waktu yang lama.

Saat solusi yang ada sudah cukup memuaskan. Maka tidak perlu berlebihan mengejar lebih cepat 0.0005 detik tersebut, jika memang tidak dibutuhkan.

Justru ‘over-engineer’ adalah ketika kita menggunakan resource kita sendiri (pikiran dan waktu) untuk menyelesaikan masalahnya secara berlebihan.

Kita harus memikirkan “tradeoff”(apa yang ditukar) dan melihat mana yang lebih menguntungkan, meskipun ada sedikit yang dikorbankan.

Contoh di atas: kita memikirkan tradeoff antara belajar bahasa low-level jaman dulu untuk membuat aplikasi lebih cepat 1/2 detik.

Apakah 1/2 detik ini benar-benar diperlukan di aplikasi kamu? jika tidak, maka tidak perlu melakukan hal tersebut.

Terbatasnya waktu dan kondisi

Bisa juga penyebab over-engineer karena kita tidak punya waktu untuk mencari alternatif lain. Akhirnya kita hanya membuat berdasarkan pengetahuan yang ada. Mungkin di kasus ini bisa ‘dimaafkan’.

Overengineer pada fitur

Overengineer bukan hanya pada solusi, tapi juga pada fiturnya. Bisa jadi implementasi teknologinya sederhana, namun fitur yang kita hadirkan justru membuat sesuatu lebih kompleks dari yang dibutuhkan. Kita juga perlu berhati-hati, jangan sampai implementasi solusinya yang berlebihan.

Kesimpulan

Kita perlu melihat over-engineer dari perspektif seorang developer dengan berbagai konteksnya: berapa lama waktu yang disediakan, berapa budget yang tersedia dan konteks lainnya. Setelah itu kita bisa memikirkan apakah ada cara yang lebih mudah untuk “membuat aplikasi” ini tanpa melupakan proses pengembangan ke depannya.

Penulis: Hilman Ramadhan

/ @hilmanski

Hai saya Hilman, membuat situs Sekolah Koding (Skodev) dan menulis buku untuk programmer (Halo Koding), Halo Koding . Sudah mengetik-ngetik alias programming sejak 2015. Semoga artikel dan situs ini bisa bantu karir kamu ya!

Artikel lain di kategori "softskill"

Daftar newsletter skodev masukkan emailmu untuk dapat informasi menarik dari dunia koding