Існує широко поширена помилкова думка відносно того, що в процесі добре організованого процесу розробки програмної системи ретельно розробляються методичні вимоги і визначається незмінний список задач програми, проект системи відповідає заданим вимогам і, в результаті кодування може здійснюватись лінійно, з початку до кінця, коли більшість коду пишеться один раз, тестується і про нього можна забути. Відповідно до цієї точки зору, суттєва зміна коду відбувається лише під час супроводження ПЗ, тобто вже після випуску початкової версії програми. Насправді ж код суттєво еволюціонує вже впродовж етапу початкової розробки. Багато змін, потреба в яких видимою під час початкової розробки є, як мінімум, такими ж кардинальними, як зміни під час підтримки.
Навіть в проектах з добре побудованим процесом управління вимоги до системи змінюються в процесі її розробки. Дані зміни позначаються на розроблюваному коді, іноді дуже суттєво. Інший факт – сучасні методи розробки збільшують потенціал для зміни коду в процесі конструювання. В старих життєвих циклах фокус був на уникненні змін коду. Сучасні підходи відходять від повної передбачуваності в розробці коду – вони більш кодо-центровані, і в процесі життєвого циклу проекту код еволюціонує більше, ніж колись.
Обов’язково потрібно як писати початковий код, так і вносити зміни, пам’ятаючи про майбутні зміни в коді. "Основне правило еволюції програмного забезпечення" говорить, що впродовж еволюції внутрішня якість програми повинна покращуватись.