Як було заявлено Демарк і Лістер в Peopleware близько 20ish років тому, переважна більшість невдалих програмних проектів не зменшилась з - за технічних проблем, але соціологічні проблеми . Це не змінилося протягом останніх десятиліть, незалежно від того, наскільки наші інструменти покращилися.
Неправильне управління, нереалістичні очікування, невміння знайти потрібних людей для роботи та / або не дозволяти їм виконувати свою роботу, отже, не в змозі їх утримати; робочі місця та інструменти, що не підходять для роботи з розробки SW; неурегульовані особистісні конфлікти; політика ; це лише деякі типові проблеми, які можуть зробити проект приреченим з самого початку.
Чому писати хороший код важче?
Я не зовсім впевнений, що зараз справді важче написати хороший код, ніж десятиліття тому. Насправді, порівняно з машинним кодом чи складанням, все, що ми маємо зараз у мейнстрімі, легше обробляти. Просто нам може знадобитися виробляти більше.
Це лише через згадування факторів, часу та складності?
Так, досяжна складність, безумовно, зростала (і продовжує зростати) із збільшенням потужності наших інструментів. Іншими словами, ми продовжуємо розсовувати межі. Що для мене означає, що настільки ж важко вирішити найбільші сьогоднішні виклики, як і 30 років тому, щоб вирішити найбільші проблеми цього дня.
ОТОГ, оскільки поле зросло настільки сильно, зараз існує набагато більше "малих" або "відомих" проблем, ніж було 30 років тому. Ці технічні проблеми технічно (не повинні) вже не бути викликом, але ... тут вводиться вищенаведена манія :-(
Також кількість програмістів з того часу значно зросла. І принаймні моє особисте сприйняття полягає в тому, що середній рівень досвіду та знань знизився, просто тому, що набагато більше юніорів постійно прибувають на поле, ніж є літні люди, які могли б їх виховувати.
Хіба що методики не застосовуються правильно?
ІМХО звичайно ні. DeMarco та Lister мають кілька суворих слів про методології великих М. Вони кажуть, що жодна методологія не може зробити проект успішним - тільки люди в колективі можуть. ОТО маленькі методології, які вони хвалять, досить близькі до того, що ми зараз знаємо як "спритний", який широко поширюється (ІМХО з поважної причини). Не кажучи вже про таку добру практику, як тестування та рефакторинг, які лише 10 років тому не були широко відомими, а сьогодні про них знають навіть багато випускників.