Kode komputer cenderung berkembang. Kita bisa mengatakan bahwa kode yang tidak berkembang mungkin benar-benar tidak dapat digunakan atau ditinggalkan. Kode yang nyata, diinginkan, dan banyak digunakan berkembang terus-menerus, karena permintaan dan harapan pengguna berkembang dalam ritme mereka sendiri.
Kode yang tidak mampu merespons kebutuhan pengguna akan segera dilupakan, dan segera digantikan dengan kode yang lebih baik, lebih fleksibel, dan lebih baik. Bersiaplah untuk hal ini, dan jangan pernah berpikir bahwa program Anda akan selesai secara keseluruhan. Penyelesaian adalah keadaan transisi dan biasanya berlalu dengan cepat, setelah laporan bug pertama. Python sendiri adalah contoh bagaimana aturan ini bekerja.
Kode yang berkembang sebenarnya merupakan masalah yang semakin besar. Kode yang lebih besar selalu berarti pemeliharaan yang lebih sulit. Mencari bug selalu lebih mudah di tempat di mana kode lebih kecil (seperti mencari kerusakan mekanik yang lebih sederhana dan lebih kecil pada mesin).
Selain itu, ketika kode yang dibuat diharapkan benar-benar besar (Anda dapat menggunakan jumlah total baris sumber sebagai ukuran yang berguna, tetapi tidak terlalu akurat, dari ukuran kode), Anda mungkin ingin (atau lebih tepatnya, Anda akan dipaksa) untuk membaginya menjadi banyak bagian, yang dilaksanakan secara paralel oleh beberapa, beberapa belas, beberapa puluh, atau bahkan beberapa ratus pengembang individu.
Tentu saja, ini tidak dapat dilakukan dengan satu file sumber besar, yang diedit oleh semua programmer secara bersamaan. Ini pasti akan menyebabkan bencana spektakuler.
Jika Anda ingin menyelesaikan proyek perangkat lunak dengan sukses, Anda harus memiliki sarana yang memungkinkan Anda untuk:
membagi semua tugas di antara pengembang;
menggabungkan semua bagian yang dibuat menjadi satu kesatuan yang berfungsi.
Misalnya, suatu proyek dapat dibagi menjadi dua bagian utama:
antarmuka pengguna (bagian yang berkomunikasi dengan pengguna menggunakan widget dan layar grafis)
logika (bagian yang memproses data dan menghasilkan hasil)
Masing-masing bagian ini kemungkinan besar dapat dibagi menjadi bagian yang lebih kecil, dan seterusnya. Proses seperti ini sering disebut dekomposisi.
Misalnya, jika Anda diminta untuk mengatur sebuah pernikahan, Anda tidak akan melakukan semuanya sendirian - Anda akan mencari beberapa profesional dan membagi tugas di antara mereka semua.
Bagaimana cara membagi perangkat lunak menjadi bagian terpisah tetapi saling bekerja sama? Itulah pertanyaannya. Modul adalah jawabannya.