Pembagian Kerja dalam Programming
Ada pertanyaan bagus di Forum Java Programmer Indonesia di Facebook
Bagaimana cara pembagian tugas kalau mengerjakan aplikasi dengan tim?
Berikut pendekatan yang biasa saya gunakan
Pada prinsipnya, ada dua pendekatan:
- Bagi per fitur
- Bagi per layer
Pembagian per Fitur
Masing-masing programmer mengerjakan satu fitur lengkap mulai dari tampilan sampai ke database. Kelebihan dari pendekatan ini, project manager mudah memonitor progressnya. Tinggal cek saja fitur mana yang udah mana yang belum. Kalau ada fitur yang tidak selesai-selesai, mudah mencari siapa yang bertanggung jawab.
Kekurangannya, masing-masing programmer harus paham dari depan sampai ke belakang. Dengan development stack yang kita gunakan di ArtiVisi, berarti tiap programmer harus paham :
- HTML
- CSS dan Bootstrap
- JavaScript dan AngularJS
- Yeoman
- Spring Framework
- Spring Data JPA
- Hibernate ORM
Nah, ini cukup sulit dipenuhi. Dalam suatu perusahaan software development, biasanya ada junior programmer (fresh graduate) dan senior programmer (sudah pengalaman bertahun-tahun membuat berbagai macam aplikasi). Pendekatan seperti ini membuat junior programmer tidak ada kerjaan.
Pembagian per Layer
Aplikasi bisnis pada umumnya bisa dibagi menjadi 3 layer:
- User Interface / Tampilan : terdiri dari tampilan aplikasi (web atau desktop) dan report (pdf,xls,csv)
- Implementasi Proses Bisnis
- Akses ke Sumber Data : biasanya database relasional. Tapi jaman sekarang mulai terdiversifikasi ke sumber data jenis lain seperti aplikasi lain (melalui web service), NoSQL (mongodb, redis, memcached, dsb), email, sms, cloud storage (Dropbox, Google Drive), dan sebagainya.
Dengan pembagian seperti ini, seluruh anggota tim mendapat pekerjaan yang sesuai dengan level kemampuannya. Junior programmer di ArtiVisi biasanya mendapat bagian User Interface. Yang lebih senior mengerjakan Implementasi Proses Bisnis dan Akses Data. Beberapa akses data yang mudah, misalnya CRUD satu tabel tanpa relasi, juga bisa diserahkan ke junior programmer supaya mereka bisa naik level.
Kelemahan cara ini, menambah kepusingan project manager. Apabila ada fitur yang delay, dia harus lihat secara detail ke proses development untuk menentukan bagian mana yang menemui kesulitan. Apakah sisi tampilan? Atau akses data?
Kesimpulan
Nah, masing-masing pendekatan ada plus dan minusnya. Silahkan pilih yang sesuai. Tidak juga harus pilih salah satu, bisa juga kombinasi keduanya. Misalnya untuk CRUD tabel master, satu orang satu fitur. Tapi untuk yang kompleks seperti transaksi penjualan yang melibatkan update stok gudang, dibagi per layer.