Dokumentasi Proyek
Pentingnya dokumentasi dalam proyek perangkat lunak dan cara mengelolanya
Mengapa Dokumentasi Penting
- Tim baru bisa memahami sistem tanpa harus bertanya ke semua orang
- Keputusan arsitektur tidak hilang ketika anggota tim keluar
- Memudahkan debugging dan troubleshooting
- Membantu onboarding lebih cepat
Jenis Dokumentasi
Requirements Document
- Mendeskripsikan apa yang harus dilakukan sistem
- Mencakup kebutuhan fungsional dan non-fungsional
- Dasar untuk testing dan acceptance criteria
Technical Design Document (TDD)
- Menjelaskan bagaimana sistem dibangun secara teknis
- Mencakup arsitektur, database schema, dan alur data
- Ditulis sebelum implementasi dimulai
API Documentation
- Mendokumentasikan endpoint, request, dan response
- Memudahkan developer lain menggunakan API
- Tools: Swagger/OpenAPI, Postman Collection
README
- Titik masuk pertama untuk developer baru
- Berisi cara setup, menjalankan, dan berkontribusi ke proyek
- Harus selalu diperbarui mengikuti perubahan
Architecture Decision Record (ADR)
- Mendokumentasikan keputusan arsitektur dan alasannya
- Format: konteks, keputusan, konsekuensi
- Membantu tim memahami mengapa sistem dibangun seperti ini
Runbook / Playbook
- Panduan operasional untuk menjalankan dan memelihara sistem
- Berisi prosedur untuk deployment, rollback, dan incident response
- Penting untuk tim operasional dan on-call
Dokumentasi Kode
Komentar yang Baik
- Jelaskan mengapa, bukan apa yang dilakukan kode
- Hindari komentar yang hanya mengulang kode
- Tambahkan komentar untuk logika yang kompleks atau tidak intuitif
Docstring dan Type Hints
- Dokumentasikan fungsi publik dengan docstring
- Gunakan type hints untuk memperjelas tipe input dan output
- Membantu IDE memberikan autocomplete yang akurat
Pengelolaan Dokumentasi
Simpan Bersama Kode
- Dokumentasi disimpan di repository yang sama dengan kode
- Diperbarui bersama perubahan kode dalam satu commit
- Menghindari dokumentasi yang ketinggalan jaman
Documentation as Code
- Tulis dokumentasi dalam format teks (Markdown, AsciiDoc)
- Bisa di-review melalui pull request seperti kode
- Bisa digenerate otomatis menjadi website
Single Source of Truth
- Hindari duplikasi dokumentasi di banyak tempat
- Satu sumber utama, referensikan dari tempat lain
- Menghindari inkonsistensi antar dokumen
Prinsip Dokumentasi yang Baik
Jelas dan Ringkas
- Gunakan bahasa yang mudah dipahami
- Hindari jargon yang tidak perlu
- Lebih pendek tapi jelas lebih baik dari panjang tapi membingungkan
Selalu Diperbarui
- Dokumentasi yang salah lebih berbahaya dari tidak ada dokumentasi
- Jadikan update dokumentasi bagian dari Definition of Done
- Review dokumentasi secara berkala
Terstruktur dan Mudah Dicari
- Gunakan heading dan daftar isi
- Beri nama file dan bagian yang deskriptif
- Sediakan search jika dokumentasi sudah besar
Anti-Pattern
- Dokumentasi yang sudah kedaluwarsa dan tidak diperbaiki
- Mendokumentasikan hal yang sudah jelas dari kode
- Menulis dokumentasi hanya di kepala atau Slack
- Menyimpan dokumentasi di tempat yang tidak bisa diakses semua orang
Praktik Terbaik
- Jadikan dokumentasi bagian dari proses development, bukan afterthought
- Gunakan template untuk konsistensi antar dokumen
- Review dokumentasi saat sprint review atau milestone
- Minta feedback dari developer baru tentang kelengkapan dokumentasi