3rd Weekly Review

Pada blog sebelumnya, saya belum menyantumkan apa saja yang saya kerjakan di sebelum weekly review ke2. Jadi inilah ringkasan yang saya kerjakan sebelumnya:
1. Memperbaiki struktur database dan juga ERD.
2. Menambahkan dummy data
3. Menginstall linux, LAMP (Linux, Apache, MySQL, PHP), dan juga visual studio code.

Setelah weekly review ke2, ada beberapa hal yang saya lakukan. Diantaranya adalah:
(1) Menambahkan dummy data lagi
(2) Menambahkan migration script untuk keseluruhan database

Ada beberapa kendala yang saya hadapi saat membuat migration script.

  1. Yang pertama adalah karena saya belum benar-benar familiar bagaimana membuat migration script jika suatu table memiliki primary key yang merupakan kombinasi dari 2atribut.
  2. Type tanggal dan time juga awalnya membuat saya bingung karena belum familiar dengan format yang ada. Tipe data “Sequelize.TIME”, saat dicoba insert data, harus mencantumkan tanggal juga. Saya bingung dengan format ini.
  3. Ada nama atribut “in” dan “out” pada table attendances, yang ternyata merupakan nama build in. Sehingga saat mengeksekusi script, terjadi error. Perlu waktu yang cukup lama untuk saya menyelesaikan ini. Setelah bertanya pada Kowan, ternyata harus ditambahkan ‘ diantara atribut tersebut. 
    Berikut salah satu contoh querynya:
    migration.sequelize.query(“INSERT INTO attendances(absent_date,id_employee,`in`,`out`) VALUES (‘2017–03–08’,1,’2017–03–08 08:00:00',’2017–03–08 18:00:00')”),

Ada hal baru lainnya yang saya pelajari dalam pembuatan migration script. Yaitu bahwa migration script akan menjalankan script dengan karakter awal 11 lebih dulu daripada karakter 2. Jadi, penamaan di migration script untuk create table saya buat seperti di atas agar migration script untuk memasukkan dummy data tidak dijalankan sebelum membuat table.

(3) Membuat front end page untuk create employee

Data pada filter by job sudah diambil dari database. Jadi setiap pilihan yang ada benar-benar ada pada database. Namun, saya belum berhasil melakukan filter setelah job title spesifik dipilih.

Selain mengerjakan hal di atas, saya juga mempelajari mengenai Agile Manifesto dan juga Agile Principles.

Agile Manifesto

“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.”
Kent Beck et al

Apa arti agility?

  • Efektif (cepat dan adaptif) merespon terhadap perubahan
  • komunikasi efektif antara stakeholder
  • Melibatkan customer dalam team
  • Mengorganisasi tim agar pekerjaan yang dilakukan terkontrol
  • Menghasilkan (Yielding)
  • cepat, incremental delivery dari software

Proses agile:

  • dikontrol oleh deskripsi customer tentang apa yang dibutuhkan (skenario)
  • menyadari bahwa rencana hanyalah sementara
  • mengembangan software secara iterasi dengan menekankan pada aktivitas pengembangan.
  • Men-deliver banyak “software icrements
  • beradaptasi seiring perubahan terjadi

Agile Principles

Ada 12 prinsip agile:

  1. Prioritas tertingginya adalah memuaskan customer melalui delivery yang awal dan terus menerus dari software.
  2. Menerima perubahan requirement, bahkan di pengembangan akhir. Proses agile memanfaatkan perubahan untuk keuntungan kompetitif pelanggan.
  3. Menyampaikan software yang sudah bekerja secara sering, dari beberapa minggu hingga beberapa bulan, mengutamakan skala waktu yang lebih pendek.
  4. orang yang berususan dengan bisnis dan pengembang harus bekerja bersama setiap hari pada seluruh projek.
  5. Membangun projek dalam orang yang memiliki motivasi. Berikan lingkungan yang memadai, penuhi kebutuhan mereka, dan mempercayakan masing-masing orang dalam mengerjakan suatu pekerjaan.
  6. Metode yang paling efisien dan efektif untuk menyampaikan informasi dalam tim pengembang adalah percakapan tatap muka.
  7. Software yang bekerja adalah ukuran utama dari perkembangan.
  8. proses agile mendukung pengembangan yang berkelanjutan. Sponsor, pengembang, dan pengguna sebaiknya dapat mengikuti kecepatan perkembangan.
  9. Secara terus menerus memberi perhatian untuk teknik dan design yang baik untuk meningkatkan agility.
  10. Simplicity — memaksimalkan jumlah pekerjaan yang tidak perlu dikerjakan — adalah penting.
  11. Arsitektur, requirement, dan desain terbaik tampak dari tim yang dapat mengatur timnya.
  12. Pada interval yang teratur, tim merefleksikan bagaimana agar menjadi lebih efektif, kemudian menyesuaikan sifatnya.

TDD

Test-driven development (TDD) adalah pendekatan yang mengkombinasikan test-first development (TFD) dimana dituliskan test sebelum menulis production code untuk memenuhi test dan refactoring.

Secara ringkas, TDD dapat dirumuskan sebagai:

TDD = refactoring + TFD

Tujuan dari TDD adalah spesifikasi, bukan validasi. Dengan kata lain, pikirkan requirement dan design terlebih dahulu sebelum mulai menulis functional code.

DLangkah-langkah TFD

Refactoring adalah teknik untuk merekonstruksi suatu code yang sudah ada, dengan mengubah struktur internal code, tanpa mengubah sifat eksternalnya. Setiap perubahan (yang disebut refactoring) merubah sedikit, sedangkan serangkaikan refactoring melakukan perubahan secara significant. Karena setiap refactoring berdampak kecil, maka refactoring mempunyai kemungkinan kecil untuk salah, hal ini juga mengurangi kemungkinan sistem rusak.

Penjelasan lebih lanjut dapat dilihat di blog kowan Kustiawanto Halim mengenai TDD

referensi:

http://agiledata.org/essays/tdd.html

Show your support

Clapping shows how much you appreciated Riscel Eliel Florence’s story.