Порівнюючи інженерію програмного забезпечення з цивільним будівництвом, я здивовано спостерігав інший спосіб мислення: будь-який інженер-цивільник знає, що якщо ви хочете побудувати невелику хатинку в саду, ви можете просто дістати матеріали і піти будувати її, тоді як якщо хочете будувати 10-поверховий будинок (або, наприклад, що - щось на зразок цього ) , вам необхідно зробити деякі досить математику , щоб бути впевненим , що вона не розвалиться.
На противагу цьому, розмовляючи з деякими програмістами чи читаючи блоги чи форуми, я часто знаходжу широку думку, яку можна сформулювати більш-менш так: теорія та формальні методи призначені для математиків / вчених, тоді як програмування - це більше про те, щоб зробити справи .
Тут зазвичай мається на увазі, що програмування - це щось дуже практичне і що, хоча формальні методи, математика, теорія алгоритмів, чисті / узгоджені мови програмування тощо, можуть бути цікавими темами, вони часто не потрібні, якщо все хочеться, щоб отримати речі зроблено .
За моїм досвідом, я б сказав, що поки вам не потрібно багато теорії, щоб зібрати 100-рядковий сценарій (хата), для розробки складного додатку (10-поверховий будинок) вам потрібна структурована конструкція, ну -визначені методи, хороша мова програмування, хороші підручники з текстами, де можна шукати алгоритми тощо.
Таким чином, теорія ІМО (потрібна кількість) є одним із інструментів для виконання справ .
Моє запитання: чому деякі програмісти думають, що існує протиставлення теорії (формальних методів) та практики (виконання речей)?
Чи сприймається багатьма простою інженерія програмного забезпечення (будівельне програмне забезпечення) порівняно з, скажімо, будівництвом (будівництво будинків)?
Або ці дві дисципліни насправді відрізняються (окрім критичного для місії програмного забезпечення, відмова програмного забезпечення є набагато більш прийнятним, ніж збій у будівництві)?
Я намагаюсь підсумувати, що я зрозумів з відповідей поки що.
- На відміну від інженерії програмного забезпечення, у цивільному будівництві набагато зрозуміліше, яка кількість теорії (моделювання, проектування) потрібна для певного завдання.
- Частково це пов’язано з тим, що цивільне будівництво давно, як людство, в той час як інженерія програмного забезпечення існувала лише кілька десятиліть.
- Ще однією причиною є той факт, що програмне забезпечення - це більш мінливий вид артефакту, з більш гнучкими вимогами (може бути дозволено вийти з ладу), різними маркетинговими стратегіями (хороший дизайн можна принести в жертву, щоб швидко вивести його на ринок) тощо.
Як наслідок, набагато складніше визначити, який правильний об'єм дизайну / теорії підходить в інженерії програмного забезпечення (занадто мало -> брудний код, занадто багато -> я ніколи не можу закінчити), оскільки немає загального правила і тільки (багато) досвід може допомогти.
Тож якщо я правильно інтерпретую ваші відповіді, ця невизначеність того, скільки теорії насправді потрібно, сприяє змішаним почуттям любові / ненависті, які мають деякі програмісти до теорії.