Itulah kenapa aku males pake framework, membodohi programmer.

Kalimat di atas diucapkan kepada saya oleh seorang adik kelas. Dia merujuk kepada ketidakmampuan saya untuk mengimplementasikan otentikasi dan otorisasi pengguna menggunakan PHP tanpa framework :-D . Hehe, masalahnya saya sudah terbiasa dimanjakan dengan Component Session dan Auth milik CakePHP.

Saya kurang setuju dengan istilah “membodohi”. Saya pikir akan lebih tepat kalau dikatakan bahwa penggunaan framework bisa membuat programmer malas. Kemalasan untuk belajar lebih lanjut itulah yang mengakibatkan kebodohan (Rudy telah membahas mengenai hal ini dengan analogi memasak mie goreng :-D ).

Banyak juga yang menanyakan, “Sebaiknya aplikasi ini dibuat menggunakan framework atau coding dari scratch ya?”. Hmm, kita perlu memahami dulu peranan framework dan alasan utama kenapa framework digunakan. Ada dua alasan utama, yaitu untuk masalah arsitektur dan penggunaan ulang (reuse).

Arsitektur

For many developers, particularly new ones, the absence of any advice about how to structure an application is an obstacle in and of itself. Developers should focus on their problem domain, not on the “application architecture” domain. (Hans Muller, 2006)

Membangun perangkat lunak mirip dengan membangun rumah. Dibutuhkan arsitektur rumah/perangkat lunak terlebih dahulu sebelum rumah/perangkat lunak itu mulai dibangun. Masalahnya, kita belum mengetahui bagaimana arsitektur perangkat lunak yang baik karena masih belum banyak pengalaman dalam membangun perangkat lunak. Pengalaman adalah kata kuncinya, programmer yang telah berpengalaman dalam mengerjakan banyak perangkat lunak-lah yang akan mengetahui bagaimana suatu arsitektur perangkat lunak yang baik dan fleksibel untuk digunakan dalam kasus-kasus yang umum dijumpai.

Jika kita menggunakan framework, maka kita menggunakan arsitektur yang dimiliki oleh framework tersebut. Jika kita tidak menggunakan framework, maka kita harus merancang dan menyusun arsitektur sendiri, yang belum tentu baik dan fleksibel untuk menangani perubahan spesifikasi dan diterapkan dalam kasus-kasus yang umum. Selain itu kita juga melakukan dua hal, membuat arsitektur aplikasi dan menangani problem domain. Nah, alangkah baiknya jika kita hanya fokus pada bagaimana menyelesaikan problem domain dan programmer lain yang lebih berpengalaman yang menyelesaikan masalah arsitekturnya. Saya jadi teringat kata-kata Martin Fowler dalam bukunya Patterns of Enterprise Application Architecture:

There is a third category; those with demanding needs who want to build their own software. The first thing I’d say here is to look carefully at using tools. I’ve seen more than one project get sucked into a long exercise at building frameworks, which wasn’t what the project was really about. (Martin Fowler, 2002)

Penggunaan Ulang

Don’t reinvent the wheel, unless you plan on learning more about wheels. (Jeff Atwood, 2009)

Terdapat banyak masalah dan hal-hal yang sudah sering dan umum dilakukan dalam pengembangan perangkat lunak. Sudah banyak pula solusi dan implementasi modul untuk menyelesaikan masalah tersebut. Modul-modul tersebut umumnya sudah teruji kualitasnya, terutama yang sudah lama dikembangkan. Jika kita membuat sendiri modul untuk menyelesaikan masalah yang umum tersebut, kualitasnya masih belum begitu teruji. Terlebih jika fokus kita sebagai pengembang aplikasi untuk langsung digunakan oleh pengguna dan bukan pengembang modul.

Bukan berarti Anda tidak boleh sama sekali untuk “reinvent the wheel“. Jika tujuan utama Anda adalah untuk belajar, dalam kasus ini proses lebih penting daripada hasil, maka hal ini boleh-boleh saja. Demikian juga ketika framework atau pustaka (library) yang ada tidak cocok dengan kebutuhan Anda, maka Anda dapat coding dari scratch untuk membangun framework/pustaka sendiri.

Jadi, Framework atau Coding dari Scratch?

Maka jawaban dari pertanyaan: “Sebaiknya aplikasi ini dibuat menggunakan framework atau coding dari scratch ya?” adalah sesuai kebutuhan. Jika Anda mengerjakan proyek dari klien, tentu saja framework akan membantu Anda dalam memenuhi tenggat waktu (deadline) proyek. Jika Anda hanya ingin membuat aplikasi kecil dan sederhana maka menggunakan framework bisa menjadi tidak efisien. Salah satu ukuran inefisiensi tersebut adalah ukuran file framework. Contohnya saja CakePHP (versi 1.2) yang memiliki ukuran 8 MB, ukuran yang cukup besar untuk Anda yang hanya menyewa shared hosting.

Namun, istilah “aplikasi kecil dan sederhana” perlu diwaspadai, terutama untuk aplikasi bisnis. Hal ini karena meskipun pada awalnya terlihat kebutuhan klien hanya sederhana, namun spesifikasi aplikasi bisnis rentan terhadap perubahan. Akan lebih mudah untuk mengakomodasi perubahan tersebut jika aplikasi dibangun dengan arsitektur yang rapi. Seperti yang sudah saya jelaskan di atas, framework telah memberikan arsitektur tersebut.

Kesimpulan

Menggunakan framework tidak membodohi programmer, yang membuat bodoh adalah malas belajar. Agar dapat menggunakan framework, selain memiliki kemampuan dasar pemrograman, Anda juga harus mempelajari framework tersebut. Mempelajari suatu framework merupakan investasi karena banyak perusahaan pengembang perangkat lunak yang memerlukan programmer yang menguasai framework tertentu.

Anda boleh cukup puas jika telah berhasil mengembangkan aplikasi menggunakan framework, namun alangkah baiknya jika Anda memahami konsep mengenai apa yang dilakukan framework di belakang layar. Akan lebih baik lagi jika Anda juga mengetahui bagaimana mengimplementasikan suatu program tanpa menggunakan framework. Namun, tentu saja semua itu kembali kepada tujuan dan kepentingan Anda dalam mengembangkan aplikasi tersebut.

Related posts:

  1. Masih Application Programmer