[Week 13] The End is Near!

Reinhard Hotma
LapakLaut
Published in
4 min readMay 3, 2018

Memasuki week 13 ini, sungguh sangat tidak terasa telah banyak hal yang telah kelompok kami lalui. Sampai akhirnya terakhir kali kami telah menjalani Sprint Review ke-2 bersama Mas Siham, selaku Product Owner kami. Sprint Review ke-2 berjalan dengan lumayan lancar, dan kami mendapatkan feedback yang lumayan banyak dari Mas Siham, yang pastinya berguna untuk peningkatan aplikasi kami ke depannya. Hanya saja salah satu kendala yang kami temui yaitu untuk menyatukan fitur kami masing-masing pada GitLab. Kami kesulitan untuk melakukan merge pada branch sit_uat, sehingga pada akhirnya kami melakukannya secara manual. Di sisa 1 sprint ini kami akan mencoba untuk terus menyempurnakan aplikasi yang kami buat sehingga nantinya dapat berfungsi dengan baik. Selanjutnya saya akan membagikan pengetahuan-pengetahuan yang saya dapatkan selama lebih dari setengah perjalanan saya dalam membangun aplikasi ini bersama kelompok.

Pertama saya akan menjelaskan secara singkat tentang Software Architecture dari aplikasi LapakIkan. Berbasis Android, kami memilih React Native untuk menjadi front-end kami. Alasannya adalah karena kami merasa bahwa React Native memiliki fitur yang cukup banyak, serta dianggap mampu untuk memenuhi segala kebutuhan aplikasi kami. Penggunaannya juga cukup mudah sehingga kami tidak terlalu sulit untuk membiasakan diri dengan framework ini. Untuk back-end nya, kami tidak menggunakan suatu framework khusus, melainkan menggunakan Firebase service, yang memungkinkan kita untuk menggunakan serverless API. Dengan begini, kami menggunakan React Native secara langsung untuk mengambil serta mengirimkan data ke Firebase, yang juga berfungsi sebagai database. Firebase juga cukup mudah digunakan dan juga memiliki lumayan banyak fitur. Hanya saja Firebase memiliki keterbatasan tersendiri, terutama dalam hal peng-query-an, sehingga cukup sulit untuk mengambil data sesuai dengan pencarian yang diinginkan. Selain itu free service Firebase juga memiliki limit penggunaan, sehingga nantinya mungkin perlu untuk mengupgrade service yang digunakan. Walaupun begitu, kemampuan Firebase untuk menghandle data yang masuk dan menyajikannya secara real-time sangat cocok untuk aplikasi kami.

Selanjutnya adalah tentang error code dan exception handling. Kode yang sempurna adalah kode yang sangat sulit dibangun, dimulai dari efisiensi sampai dengan fungsionalitasnya. Kode yang masih kurang sempurna sejatinya masih mengandung banyak error code, yaitu kode yang dikembalikan apabila aplikasi kita masih menyimpan error-error tertentu, sehingga aplikasi kita tidak bisa berjalan dengan semestinya. Contoh error code yang dikembalikan antara lain karena kesalahan hardware, software, maupun user input yang tidak semestinya. Tidak hanya itu, error juga mungkin terjadi apabila kita aplikasi kita masuk ke sebuah flow yang belum kita handle, sehingga aplikasi kita pun bingung harus diarahkan kemana. Oleh karena itu, untuk mengatasinya kita dapat menggunakan exception handling, yang mana memiliki fungsi untuk menghandle error tersebut, salah satunya mungkin dengan cara menampilkan pesan error (alert). Untuk implementasinya sendiri, salah satunya adalah dengan cara memastikan bahwa seluruh flow yang ada dari kode kita sudah tercover, sehingga kode kita tidak berjalan ke arah yang tidak jelas. Selain itu, kita dapat menggunakan modul bawaan dari React Native, yaitu react-native-exception-handler untuk menghandlenya. Dengan modul tersebut, kita dapat menangkap error yang ada (seperti try-catch) dan mengonversinya menjadi sebuah alert message, sehingga aplikasi tidak akan crash karena error yang ada.

Yang terakhir adalah tentang simple profiling dan optimization code. Kedua hal ini saling berhubungan, karena sama-sama berbicara tentang efisiensi dari aplikasi kita. Profiling disini memiliki artian sebuah program analisis yang dapat menimbang kinerja dari aplikasi kita, mulai dari kompleksitas memori serta waktu yang ada, sampai analisis waktu yang diperlukan oleh suatu fungsi untuk dijalankan. Untuk penggunaannya pada React Native sendiri, kita dapat menggunakan salah satu modul pada library react-native-slowlog, yang memiliki fungsi untuk menghitung banyaknya waktu yang diperlukan oleh suatu fungsi untuk dijalankan. Dengan begitu, kita dapat mengetahui fungsi-fungsi apa sajakah yang memakan banyak waktu untuk dijalani, dan dapat melakukan optimisasi fungsi tersebut agar menjadi lebih singkat dan efisien (apabila bisa). Berhubungan dengan profiling tersebut, optimization code berfungsi untuk mengoptimisasi atau meningkatkan kinerja dari kode yang kita miliki. Jadi bisa dibilang kita dapat menganalisisnya dengan profiling, lalu mengoptimisasi kode-kode yang ada. Optimisasi sendiri berarti meningkatkan kualitas kode yang ada tanpa mengubah perilaku ataupun output yang diberikan dari kode tersebut. Optimisasi kode dapat dilakukan antara lain dengan cara meningkatkan kualitas kode yang ada sehingga menggunakan resource yang lebih sedikit (CPU, memory), menggunakan design pattern yang ada (memilih yang cocok), ataupun menggunakan algoritma maupun struktur data yang lebih pas.

Kira-kira itulah sebagian pengetahuan yang dapat saya bagikan, yang saya dapatkan selama pengerjaan proyek pada mata kuliah PPL ini. Untuk selanjutnya, saya akan mengerjakan fitur edit lapak, dan juga mungkin akan membuat layout untuk halaman profile. Apabila masih banyak waktu yang tersisa, kami pun ingin mencoba untuk menyempurnakan aplikasi kami sehingga memiliki fitur-fitur tambahan yang bermanfaat, seperti integrasi penggunaan Google Maps untuk mengetahui lokasi pengguna. Semoga kami dapat menunjukkan performa yang lebih baik lagi di sisa waktu yang ada ini. Sampai bertemu di lain waktu!

--

--