Opinion

Lagi-Lagi Framework

[Ilustrasi: manchesterlibrary | flickr.com]
Saat ini di dunia pemrograman perangkat lunak banyak sekali bertebaran framework baik itu untuk pengembangan website maupun pengembangan API. Hampir semua bahasa pemrograman populer  memiliki framework, misal :

PHP

  1. CakePHP
  2. Laravel
  3. Slim
  4. Phalcon

Python

  1. Django
  2. Flask
  3. Tornado
  4. Bottle

Ruby

  1. Ruby On Rails
  2. Sinatra

Scala

  1. PlayFramework
  2. Finatra
  3. Scalatra
  4. Lift

Java

  1. SparkJava
  2. Undertow
  3. PlayFramework – Java
  4. Spring MVC

Framework-framework yang saya sebutkan di atas ini, cukup terkenal di masing-masing komunitasnya dan cukup terpelihara dengan baik.

Sebelum lebih masuk ke inti topiknya, mari kita cari tahu dulu apa sebenarnya framework itu?

In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software.

Sumber: Software Framework

Ada 2 poin penting dari definisi di atas:

  1. Abstraction
  2. Generic functionality

Hampir sebagian besar framework-framework besar saat ini pasti akan memberikan dua hal ini. Dengan adanya dua poin ini, maka framework akan memudahkan programmer dalam membangun sebuah aplikasi terutama ketika bekerja dalam sebuah tim.

Ketika bekerja sendirian, seorang programmer tidak perlu membangun semuanya dari awal, karena fungsi-fungsi yang biasanya dibutuhkan dalam proses pembuatan software (web) sudah disiapkan oleh frameworknya, contoh: manajemen database, manajemen session.

Ketika bekerja dalam tim pun, selain kemudahan yang didapat ketika bekerja sendirian, semua programmer dalam tim tersebut otomatis terbantu untuk bekerja dengan cara atau struktur yang (seharusnya) serupa.

Namun, inti dari tulisan ini bukanlah mengajak teman-teman programmer lainnya untuk “Ayo kita bikin sebuah framework baru,” tapi justru kebalikannya, “Framework-framework di luar sana sudah cukup banyak, mari kita gunakan.” Atau, “Ayo kita ikut kontribusi ke framework yang sudah ada.”

Sampai saat ini, saya melihat masih banyak programmer-programmer (rata-rata masih fresh graduate / muda), yang sangat bersemangat untuk membangun frameworknya sendiri, mungkin dengan harapan bisa terkenal seperti DHH atau Taylor Otwell. Tentunya ini tidak salah dan memang merupakan hak masing-masing untuk membangun framework milik mereka sendiri. Namun ada satu hal yang menurut saya penting, yaitu, apakah mereka bisa bertanggung jawab terhadap framework milik mereka ini nantinya?

Banyak framework bermunculan, tetapi banyak juga yang menghilang entah kemana. Yang kadang terjadi adalah, seseorang berusaha untuk “mempromosikan” frameworknya kemana-mana, tetapi kemudian tiba-tiba menghentikan proses support atau bahkan paling ekstrim adalah menghentikan proses pengembangannya.

Sekarang coba kita bayangkan kalau misal framework sekelas Ruby on Rails atau Spring mandeg pengembangannya dan tidak disupport lagi? Padahal framework ini menjadi basis pengembangan proyek-proyek besar. Misal, Rails, yang digunakan oleh Twitter, Groupon dan Github -dengan asumsi pengembangan Ruby on Rails tidak dilakukan secara terbuka.

Framework bukan melulu hanya tentang teknologi atau abstraksi, tapi juga tentang industri.

Sebagai contoh, saya sendiri saat ini sedang memiliki weekend project yaitu membangun sebuah bootstrapper untuk framework Tornado (Python), yang saya namakan Typhoon.  Motivasi saya membuat aplikasi ini adalah hanya untuk membuat struktur codebase ketika kita bekerja menggunakan Tornado, simpel.

Dan kemudian, saya berusaha untuk membuat milestone dari proses pengembangannya, dan akhirnya entah kenapa saya membuat seperti ini:

Screen Shot 2016-05-28 at 11.42.59 AM

Melihat sesuatu yang aneh dalam milestone di atas? Ya, entah karena kebiasaan, akhirnya saya pun ikut terhanyut untuk menuliskan proses pembuatan abstraksi (session & database) di dalam boostrapper ini.

Kalau misal proses milestone ini saya teruskan, saya akan terjebak dalam milestone saya sendiri, dan kemudian alhasil aplikasi ini akan melenceng dari tujuan awalnya, yang tadinya hanya untuk bootstrapper, kemudian malah berakhir menjadi sebuah framework baru (lagi).

Sedangkan awalnya sudah saya tetapkan kalau dari awal saya sudah tidak ingin membangun sebuah framework :

Screen Shot 2016-05-28 at 11.49.00 AM

Lalu bagaimana solusinya agar tidak terjadi blunder yang berkelanjutan? Yang akan saya lakukan adalah, merubah milestone (mumpung belum lanjut), dan berusaha untuk fokus di tujuan awal dari aplikasi ini, yaitu bootstrapper, sederhana saja. Manfaat dari kesederhanaan ini adalah saya lebih bisa meluangkan waktu, energi dan pikiran saya untuk pengembangan aplikasi.

Hal-hal seperti ini bisa saja terjadi di proses pengembangan produk. Proses yang awalnya sederhana, namun karena kita berpikir terlalu kompleks alhasil dalam milestone development, kita memasukkan sesuatu yang kompleks juga dan akhirnya malah melenceng dari tujuan awalnya.  Hal yang perlu kita lakukan ketika kita sudah “terjebak” di kondisi seperti ini, segera stop dan rubah milestone kita dan pastikan milestone development kita sesuai dengan motivasi awalnya.

Sudah cukup banyak framework besar, terkenal di luar sana, sudahlah, kita cukup pakai saja, atau kalau bisa, kita juga bisa ikut berkontribusi ke framework yang kita pakai.

Catatan Editor:

Konteks dalam tulisan ini adalah ketika programmer mendapatkan tugas untuk mengembangkan sebuah aplikasi atau API, atau mungkin frontend, namun akhirnya malah “terjebak” terlalu asyik untuk mengembangkan frameworknya sendiri yang ujung-ujungnya melenceng dari tugas utamanya.

Jangan lupa ikuti kami di Twitter untuk mendapatkan update terbaru dari @LabanaID