Apa Itu YAGNI?
Kemarin kita udah bahas prinsip KISS dan DRY, sekarang giliran YAGNI. YAGNI singkatan dari You Ain’t Gonna Need It—prinsip yang bilang: jangan bikin sesuatu yang belum tentu dibutuhkan. Tapi apa udah benar benar paham tentang YAGNI dan bisa diimplementasiin saat ngoding? Untuk bisa lebih paham tentang YAGNI, coba lihat analogi dibawah ini.
Bayangin kamu disuruh ibu mu ke warung untuk beli beras, telur, dan cabe ijo. Saat sampai di warung, kamu punya inisiatif untuk beli minyak goreng, garam, dan sayur. Setelah kamu beli itu semua, dengan perasaan senang kamu pulang ke rumah. Sampai di rumah, ibu mu marah marah, "Kenapa kamu beli minyak goreng, garam, dan sayur? Kan kita ga perlu minyak goreng, garam, dan sayur. Jadi lebih mahal juga kan, kembaliannya jadi sedikit!". Kamu hanya diam, menunduk, dan berpikir kalau aja tadi aku ga beli minyak goreng, garam, dan sayur.
Dalam konteks programming, prinsip YAGNI menekankan untuk hanya mengerjakan fitur yang benar-benar dibutuhkan—bukan yang mungkin dibutuhkan nanti. Pada analogi diatas, requirement yang dibutuhkan hanya beras, telur, dan cabe ijo aja, jadi tidak perlu membeli minyak goreng, garam, dan sayur.
Kenapa YAGNI Itu Penting?
Beberapa alasan kenapa prinsip YAGNI ini penting dalam proses software development yaitu,
- Lebih hemat waktu dan tenaga. Waktu dan tenaga adalah sumber daya yang penting, sayang kalau dihabiskan untuk mendevelop sesuatu yang diluar requirements, yang mana belum pasti akan digunakan.
- Mengurangi potensi bug. Semakin banyak code yang ditulis, semakin banyak kemungkinan bug yang terjadi.
- Mengurangi technical debt. Setiap baris code yang ditulis adalah tanggung jawab di masa depan (perlu dimaintain).
Contoh Penerapan YAGNI
Pak Boss: "Tolong buatkan aplikasi blog ya, requirementnya satu post hanya dibuat oleh satu penulis."
Kamu (Developer): "Oke pak"
Tidak YAGNI 👎
Kamu berpikir
Hmm... kayaknya keren juga nih kalau satu post bisa dikerjain sama beberapa penulis, mungkin nanti aplikasinya akan support itu.
Mulai lah kamu nulis code nya.
# posts table
t.references :authors
# models
class Post < ApplicationRecord
has_and_belongs_to_many :authors
end
class Author < ApplicationRecord
has_and_belongs_to_many :posts
end
Jadilah kamu buat table posts yang support beberapa penulis, design user interface yang bisa memilih beberapa penulis, meskipun saat ini rencananya satu post hanya bisa dibuat oleh satu penulis dan ga ada rencana untuk support penulisan oleh beberapa penulis dalam waktu dekat.
YAGNI 👍
Kamu berpikir
Oke, aplikasi blog, satu post ditulis oleh satu penulis.
Mulai lah kamu nulis masterpiece.
# posts table
t.references :author
# models
class Post < ApplicationRecord
belongs_to :author
end
Saat nulis code masterpiece mu itu, di dalam benak mu udah tertanam, satu post satu author, jadi kamu hanya membuat asosiasi one-on-one antara post dan author. Kamu bisa menyelesaikan aplikasinya dengan cepat, mengurangi potensi bug karena code yang kamu tulis sedikit, code yang kamu tulis pun simple dan clean
, dan boss pun senang.
Gimana kalau di masa depan ada kebutuhan untuk mensupport satu post ditulis oleh beberapa penulis? Biarkan dirimu dimasa depan yang menangani itu :)
Akhir Kata
Dengan menerapkan prinsip YAGNI ini, tidak hanya code mu yang semakin sehat, tapi dirimu sebagai developer juga ikut sehat! Dengan memfokuskan untuk mendevelop feature yang dibutuhkan saat ini saja akan lebih menghemat waktu, tenaga, mengurangi technical debt, dan mengurangi potensi bug yang dapat terjadi.
Lebih baik kamu matangkan planning terlebih dulu sebelum memulai menulis code dan pastikan seluruh requirement yang dibutuhkan.
Jangan ngoding buat masa depan yang belum tentu datang. Fokus ke hari ini—itu baru YAGNI.😎