Membandingkan rekayasa perangkat lunak dengan teknik sipil, saya terkejut mengamati cara berpikir yang berbeda: insinyur sipil mana pun tahu bahwa jika Anda ingin membangun gubuk kecil di kebun, Anda bisa mendapatkan bahan dan pergi membangunnya sedangkan jika Anda ingin membangun rumah 10 lantai (atau, misalnya, sesuatu seperti ini ) Anda perlu melakukan beberapa matematika untuk memastikan bahwa itu tidak akan berantakan.
Sebaliknya, berbicara dengan beberapa programmer atau membaca blog atau forum saya sering menemukan pendapat yang tersebar luas yang dapat dirumuskan kurang lebih sebagai berikut: teori dan metode formal adalah untuk ahli matematika / ilmuwan sementara pemrograman lebih banyak tentang menyelesaikan sesuatu .
Apa yang biasanya tersirat di sini adalah bahwa pemrograman adalah sesuatu yang sangat praktis dan bahwa meskipun metode formal, matematika, teori algoritma, bahasa pemrograman bersih / koheren, dll, mungkin merupakan topik yang menarik, mereka seringkali tidak diperlukan jika semua yang diinginkan adalah mendapatkan sesuatu dilakukan .
Menurut pengalaman saya, saya akan mengatakan bahwa sementara Anda tidak perlu banyak teori untuk menyusun skrip 100-baris (pondok), untuk mengembangkan aplikasi yang kompleks (gedung 10 lantai), Anda memerlukan desain yang terstruktur, baik metode -defined, bahasa pemrograman yang baik, buku teks yang bagus di mana Anda dapat mencari algoritma, dll.
Jadi teori IMO (jumlah yang tepat) adalah salah satu alat untuk menyelesaikan sesuatu .
Pertanyaan saya adalah mengapa beberapa programmer berpikir bahwa ada perbedaan antara teori (metode formal) dan praktik (menyelesaikan sesuatu)?
Apakah rekayasa perangkat lunak (software bangunan) dianggap oleh banyak orang sebagai mudah dibandingkan dengan, katakanlah, teknik sipil (building houses)?
Atau apakah kedua disiplin ini benar-benar berbeda (terlepas dari perangkat lunak mission-critical, kegagalan perangkat lunak jauh lebih dapat diterima daripada membangun kegagalan)?
Saya mencoba merangkum, apa yang saya pahami dari jawaban sejauh ini.
- Berbeda dengan rekayasa perangkat lunak, dalam teknik sipil jauh lebih jelas berapa jumlah teori (pemodelan, desain) yang dibutuhkan untuk tugas tertentu.
- Ini sebagian disebabkan oleh kenyataan bahwa teknik sipil sama tuanya dengan manusia sementara rekayasa perangkat lunak telah ada selama beberapa dekade saja.
- Alasan lain adalah kenyataan bahwa perangkat lunak adalah jenis artefak yang lebih tidak stabil, dengan persyaratan yang lebih fleksibel (dapat dibiarkan crash), strategi pemasaran yang berbeda (desain yang baik dapat dikorbankan untuk mendapatkannya di pasar dengan cepat), dll.
Akibatnya, jauh lebih sulit untuk menentukan jumlah yang tepat dari desain / teori yang sesuai dalam rekayasa perangkat lunak (terlalu sedikit -> kode berantakan, terlalu banyak -> Saya tidak pernah bisa selesai) karena tidak ada aturan umum dan hanya (Banyak) pengalaman bisa membantu.
Jadi, jika saya menafsirkan jawaban Anda dengan benar, ketidakpastian tentang seberapa banyak teori ini benar-benar dibutuhkan berkontribusi pada perasaan cinta / benci yang dicampur beberapa programmer terhadap teori.