Aplikasi yang dahulu terasa ringan kadang berubah setelah bertahun-tahun digunakan. Bukan selalu ponselnya yang bermasalah, karena aplikasinya sendiri memang ikut berubah.

Masih ingat ketika sebuah aplikasi pertama kali dipasang dan rasanya begitu sederhana? Dibuka cepat, menu tidak banyak, ukuran berkasnya relatif kecil, dan fungsi yang paling sering dibutuhkan dapat ditemukan tanpa harus melewati banyak halaman. Beberapa tahun kemudian, aplikasi yang sama mungkin membutuhkan waktu lebih lama untuk terbuka, menggunakan lebih banyak ruang penyimpanan, dan terasa lebih berat ketika berpindah menu.

Keluhan semacam ini mudah berujung pada satu tersangka: ponsel sudah tua. Memang benar, perangkat yang semakin berumur dapat mengalami keterbatasan ketika menjalankan perangkat lunak terbaru. Namun umur perangkat hanya satu bagian dari cerita karena aplikasi yang berada di dalamnya juga tidak berhenti berkembang.

Sebuah aplikasi yang awalnya hanya mempunyai beberapa fungsi dapat berubah menjadi layanan dengan pembayaran, video, rekomendasi personal, notifikasi, lokasi, analitik, iklan, kecerdasan artifisial, dan berbagai layanan lain yang bekerja bersamaan. Setiap tambahan mungkin masuk akal jika dilihat satu per satu. Setelah bertahun-tahun, kumpulan tambahan kecil tersebut dapat mengubah aplikasi sederhana menjadi sistem yang jauh lebih kompleks.

Baca Juga: Coding Itu Belajar Bahasa Komputer atau Belajar Cara Berpikir?

Fitur Bertambah, Beban di Belakangnya Ikut Bertambah

Dalam pengembangan perangkat lunak dikenal istilah feature creep. Istilah tersebut menggambarkan keadaan ketika sebuah produk terus memperoleh fitur baru hingga cakupan dan kompleksitasnya berkembang jauh dari fungsi awal. Tidak semua penambahan buruk, tetapi setiap fitur membawa konsekuensi teknis yang harus ikut dipelihara.

Bayangkan sebuah aplikasi belanja yang dahulu tugas utamanya hanya menampilkan barang dan menerima pesanan. Beberapa tahun kemudian, pengguna mungkin bisa menonton video, melakukan siaran langsung, memainkan permainan, menggunakan dompet digital, mengambil cicilan, berbicara dengan penjual, menerima rekomendasi personal, hingga menggunakan fitur berbasis AI. Bagi bisnis, semua itu membuka kesempatan baru, tetapi bagi perangkat, ada semakin banyak komponen yang harus dimuat dan dikelola.

Kode yang menjalankan aplikasi juga tidak berdiri sendirian. Pengembang menggunakan berbagai library, framework, software development kit, layanan analitik, sistem iklan, serta komponen pihak ketiga agar tidak perlu membangun semuanya dari nol. Semakin kompleks sebuah aplikasi, semakin banyak pula hubungan yang harus dijaga agar seluruh bagian tersebut tetap bekerja bersama.

Ada pula persoalan kompatibilitas. Pengembang tidak membuat aplikasi hanya untuk satu tipe ponsel dengan satu versi sistem operasi. Mereka harus mempertimbangkan berbagai ukuran layar, kemampuan perangkat keras, versi Android atau iOS, konfigurasi jaringan, hingga perilaku pengguna yang berbeda-beda.

Semua kebutuhan tersebut membuat aplikasi modern membawa pekerjaan yang jauh lebih besar dibandingkan tampilan yang terlihat di layar. Ketika pengguna menekan satu ikon, di belakangnya mungkin terjadi proses autentikasi, pengambilan data dari server, pemuatan gambar, pemeriksaan notifikasi, sinkronisasi akun, pembacaan konfigurasi, hingga pencatatan analitik. Pengguna hanya melihat halaman utama, tetapi sistem bisa sedang melakukan banyak pekerjaan sekaligus.

Martin Fowler, salah satu tokoh berpengaruh dalam pengembangan perangkat lunak, banyak membahas persoalan technical debt sebagai metafora untuk keputusan teknis yang memberi keuntungan dalam jangka pendek tetapi dapat menimbulkan biaya pada pengembangan berikutnya. Seperti utang finansial, keputusan tersebut tidak selalu buruk karena terkadang diperlukan untuk bergerak cepat. Persoalan muncul ketika “utang” terus bertambah tanpa pernah memperoleh waktu yang cukup untuk dibereskan.

Aplikasi yang telah dikembangkan selama bertahun-tahun bisa membawa lapisan kode dari berbagai generasi. Ada bagian lama yang masih dibutuhkan, bagian baru yang dibangun di atasnya, dan solusi sementara yang ternyata bertahan jauh lebih lama daripada rencana awal. Menulis ulang semuanya juga tidak sesederhana menghapus aplikasi lama dan memulai dari halaman kosong karena jutaan pengguna tetap membutuhkan layanan berjalan selama perubahan dilakukan.

Baca Juga: Banyak Orang Belajar Coding, tetapi Berhenti di Tengah Jalan, Apa Penyebabnya?

Tidak Semua yang Terasa Berat Bisa Diselesaikan dengan Ganti Ponsel

Perangkat tetap mempunyai pengaruh besar terhadap pengalaman menggunakan aplikasi. RAM yang terbatas, kapasitas penyimpanan yang hampir penuh, prosesor generasi lama, kondisi baterai, serta sistem operasi dapat memengaruhi performa. Karena itu, aplikasi yang terasa lancar di ponsel terbaru belum tentu memberikan pengalaman serupa pada perangkat yang sudah digunakan selama beberapa tahun.

Masalahnya, perkembangan aplikasi dan perangkat keras terkadang seperti dua orang yang terus saling mengejar. Ketika ponsel mempunyai prosesor lebih cepat dan memori lebih besar, pengembang mendapatkan ruang untuk membuat fitur yang sebelumnya sulit dijalankan. Beberapa tahun kemudian, kemampuan yang dahulu terasa mewah berubah menjadi kebutuhan standar aplikasi.

Fenomena tersebut tidak berarti pengembang sengaja membuat aplikasi semakin berat agar pengguna membeli perangkat baru. Ada banyak alasan teknis dan bisnis yang lebih masuk akal di balik pertumbuhan aplikasi. Layanan berkembang, standar keamanan berubah, kebutuhan pengguna bertambah, desain diperbarui, dan perusahaan terus mencari fungsi baru yang dapat mempertahankan pengguna.

Namun perkembangan itu memunculkan pertanyaan yang layak diajukan: apakah semua fitur memang perlu berada dalam satu aplikasi? Fitur baru sering mudah terlihat sebagai kemajuan, sedangkan konsekuensi berupa konsumsi memori, kompleksitas kode, waktu pemuatan, atau kebutuhan pemeliharaan jauh lebih sulit dipamerkan. Sebuah tombol baru dapat diluncurkan dalam presentasi, sementara kesederhanaan jarang memiliki sesuatu yang menarik untuk dipamerkan.

Donald Knuth, ilmuwan komputer yang memiliki pengaruh besar dalam dunia pemrograman, terkenal dengan pembahasannya mengenai optimasi yang dilakukan terlalu dini. Pesannya bukan berarti performa tidak penting, melainkan pengembang perlu mengetahui bagian mana yang benar-benar menjadi masalah sebelum menghabiskan tenaga untuk mengoptimalkannya. Dalam aplikasi modern, keseimbangan antara kecepatan pengembangan, fitur, stabilitas, dan performa memang tidak sederhana.

Itulah sebabnya pembaruan aplikasi kadang menghasilkan pengalaman yang terasa bertolak belakang. Pengguna mendapatkan kemampuan baru, perbaikan keamanan, atau desain yang lebih modern, tetapi pada perangkat tertentu aplikasi justru terasa lebih lambat. Pembaruan membawa keuntungan sekaligus menuntut sumber daya yang mungkin lebih besar daripada versi sebelumnya.

Ada pula hal yang tidak terlihat ketika pengguna membandingkan aplikasi hari ini dengan versi lima tahun lalu. Jumlah data yang disimpan mungkin sudah jauh lebih banyak, kualitas gambar dan video meningkat, sistem keamanan semakin kompleks, serta layanan yang terhubung bertambah. Membandingkan kecepatannya tanpa melihat perubahan pekerjaan yang dilakukan aplikasi sedikit mirip membandingkan warung kecil dengan pusat perbelanjaan hanya berdasarkan seberapa cepat pintunya dapat dibuka.

Namun analogi tersebut juga tidak boleh menjadi pembenaran untuk membuat perangkat lunak terus membengkak. Pengembang tetap mempunyai tanggung jawab menjaga efisiensi, menghapus komponen yang tidak lagi diperlukan, menguji performa pada perangkat dengan kemampuan berbeda, serta mempertanyakan apakah penambahan fitur benar-benar memberikan manfaat yang sepadan. Kemajuan perangkat keras seharusnya membuka kemungkinan baru, bukan menjadi alasan untuk berhenti peduli pada efisiensi.

Bagi pengguna, mungkin ini juga menjelaskan mengapa menghapus lalu memasang kembali aplikasi terkadang membantu, tetapi tidak selalu menyelesaikan persoalan. Data sementara yang menumpuk bisa dibersihkan, tetapi kompleksitas aplikasi terbaru tetap sama. Jika versi baru memang membutuhkan sumber daya lebih besar, ponsel lama tetap harus bekerja lebih keras untuk menjalankannya.

Jadi ketika aplikasi yang dahulu ringan sekarang terasa berat, jawabannya tidak selalu sesederhana “HP-nya sudah waktunya diganti”. Bisa jadi perangkat memang mulai tertinggal, tetapi bisa pula aplikasi yang dahulu hanya mengerjakan beberapa hal sekarang diminta melakukan puluhan pekerjaan sekaligus. Di balik satu ikon yang bentuknya nyaris tidak berubah, program di dalamnya mungkin sudah menjadi dunia yang sama sekali berbeda.

Barangkali perkembangan perangkat lunak memang selalu membawa dilema semacam ini. Kita ingin aplikasi semakin pintar, aman, lengkap, dan mampu melakukan lebih banyak hal, tetapi pada saat yang sama kita merindukan aplikasi yang membuka dalam sekejap dan langsung melakukan satu pekerjaan dengan baik. Tantangan programming bukan hanya membuat sesuatu yang baru bisa bekerja, melainkan memastikan semakin banyak kemampuan tidak membuat kesederhanaan yang dulu disukai pengguna ikut menghilang. [][Rudi Tenggarawan/KK]

Penulisan artikel ini dibantu AI dan telah melewati proses kurasi Redaksi.