Для мене це допомагає розбити більшу частину програмного забезпечення на менші шматки. А потім розбийте ці шматки на ще менші частини тощо. Кожна програма програмного забезпечення - це сукупність невеликих логічних фрагментів.
Розглянемо, наприклад, блог. Ви хочете мати можливість створювати та редагувати публікації, які можуть читати інші. Відразу ви можете розділити проект на адміністративні та загальнодоступні секції. Як мінімум, адміністратору потрібні користувачі адміністратора, сторінка для входу та розділ для управління блогом. Розділ для управління блогом можна розділити на інтерфейс CRUD (Створення, читання, оновлення, видалення). Для створення нової публікації в блозі потрібна перевірка, щоб переконатися, що користувач адміністратора має правильні привілеї, форму, перевірку форми та можливість збереження в базі даних. І так далі.
Чим більше ви зламаєте проблему чи функцію, тим вона стає більш керованою. Це розділити і підкорити. Після того, як ви змогли скласти таке програмне забезпечення, ви можете подивитися, як різні його частини взаємодіють між собою. Де ви можете повторити код? Що можна абстрагувати? Це має бути ітераційним процесом, як ви плануєте, так і під час написання самого коду.
Я рекомендую розібратися з того, з чого слід розпочати ваш мінімальний набір функцій, і застосувати його, перш ніж додавати до нього інші фрагменти. Вам потрібно буде кодувати захисно, щоб майбутні зміни не були надто складними, але в той же час ви не хочете реалізувати половинні функції, які ніколи не можуть бути виконані. Це складна лінія пройти між тим, щоб залишатися гнучкими та готовими нещадно вбивати своїх улюбленців, запозичити літературну літературу. Отримати добро в цьому конкретному рівноважному акті виходить лише з досвіду.
І ось до чого воно зводиться, як згадували інші відповіді: досвід. Єдиний спосіб її отримати - це лише почати. Не хвилюйтеся так сильно, як зробити його ідеальним з самого початку. Спочатку змусьте код працювати, потім зробити його красивим, а потім зробити його швидким.
Крім того, на відміну від цього пункту, не торкайтеся безпеки в кінці, як думка. Ви повинні мати уявлення про способи злому вашого програмного забезпечення, але для початку ніколи не довіряйте будь-якому введенню користувача.