Week 9: UTS, Individual Review and some coding

Ahmad Elang
println-mic
Published in
3 min readApr 3, 2018

Pada 2 Minggu terakhir ini saya mengalami masa UTS terberat sepanjang perkuliahan saya. Untuk PPL saya minggu ini membuat TopUp Admin (sebelum sprint review) dan ChangePrivilege Admin (setelah sprint review)

Untuk keperluan individual review minggu ini. Saya mempelajari beberapa hal yang penting bagi pengembangan diri saya sebagai pengembang perangkat lunak, yakni version control, approach to software development, dalam kasus ini scrum dan Importance of Testing

Model & Serializers
Endpoint kurang lebih akan menerima 1 field yakni balance tambahan (untuk top_up) dan privilege baru (untuk profile_privilege). Admin sekalipun tidak boleh mengganti data user oleh karena itu tidak dibuat edit data untuk user via admin.

Saya meoverride kelas validasi agar field balance dan privilege harus diisi biarpun menggunakan partial=True di viewset

ViewSet

ViewSet kurang lebih bekerja seperti controller di framework lain. Meminjam kata-kata dari dokumentasi DRF : “Django REST framework allows you to combine the logic for a set of related views in a single class, called a ViewSet. In other frameworks you may also find conceptually similar implementations named something like 'Resources' or 'Controllers'.”

ViewSet digunakan agar kode kami standar dan mengikuti best practice django untuk pembuatan endpoint. Terutama karena endpoint yang dibuat memiliki logika CRUD yang berulang-ulang

Routers

Salah satu kelebihan menggunakan viewset adalah Routers. Dengan menggunakan Routers di urlconf, kami tidak perlu mendefinisikan url satu-satu. Dan terdapat standart diantara endpoint API kami

Test

Saya melakukan test seperti biasanya. Tidak ada yang luar biasa yang menarik untuk ditulis

Quality Assurance (QA)

Setelah berdiskusi dengan tim setelah review. diputuskan untuk menggunakan standar yakni ViewSet untuk setiap endpoint. Kami juga memutuskan untuk membuat dokumentasi agar mempermudah anggota tim yang lain (AKA supaya tidak perlu tanya sebelum ngoding) dan routers

Agile

Istilah agile dipopularkan oleh Manifesto for Agile Software Development. Agile memiliki beberapa nilai yang dijunjung, yakni

Iteratif

Agile memecah produk menjadi komponen-komponen kecil yang akan dikerjakan dalam 1 iterasi atau sprint untuk meminimalisir waktu perencaaan dan menghindari pengerjaan mendekati deadline. 1 iterasi atau sprint adalah timeframe yang relatif singkat, yakni 1 hingga 4 minggu.

Komunikasi Efisien

Komunikasi dengan client ini berguna untuk mendapatkan perubahan requirment dan memastikan pekerjaan sudah sesuai dengan ekspetasi klien atau belum. Pada umumnya dilakukan diakhir setiap iterasi, sehingga perubahan dan penambahan fitur dapat dilakukan dengan lebih murah dan cepat.

daily stand-up

Salah satu karakteristik dari Agile adalah daily stand-up. Hal ini dilakukan agar tim mengetahui pekerjaan yang lain dan terdapat feedback loop yang cepat. Pada PPL dipraktikan menjadi 1 minggu 2 kali.

Kualitas

Beberapa teknik seperti Continous Integration, Unit Testing digunakan untuk meningkatkan kualitas dari program.

Agile sendiri hanyalah sebuah pendekatan. Untuk praktiknya terdapat framework yang menggunakan pendekatan Agile, seperti Scrum (yang sudah saya bahas minggu lalu), Extreme Programming, Kaban dan lain-lain.

Tim pada Agile tidak hanya programmer, tapi juga desainer dan lain-lain. Namun di PPL semua orang programmer karena kami mahasiswa ilmu komputer.

Agile tidaklah sempurna. Tidak semua software development cocok menggunakan Agile. Dan banyak kritik yang diterima dari praktik Agile.

Error Code and Exception Handling

Throw Exception

Error Handling

Awareness of Software Architecture

Untuk backend digunakan Django/DRF. DRF berguna untuk membuat endpoint bagi API yang akan ditembak oleh Front End yang menggunakan React.js. DRF juga yang (rencananya) akan ditembak oleh microservice untuk mengecek apakah ada perubahan atau tidak di database

Untuk frontend digunakan React.js. React akan menembak backend untuk mendapatkan data

M (Microservice )

Microservicelah yang akan mengerjakan segala-galanya yang berkaitan dengan printer. Mircoservice akan melakukan tembah API ke backend setiap beberapa menit sekali (jika idle) atau setiap pekerjaan print lama sudah selesai.

Ide buruk yang membuat satu story saya tidak masuk ke sit_uat

--

--