Rodegast
Всякие UML, SCRUM и прочее нужно для командной разработки
Для индивидуальной разработки это тоже всё нужно. Если ты пишешь небольшой скрипт, который потом не будет дописываться, этим можно пренебречь (и даже системой контроля версий). Другое дело, если ты пишешь что-нибудь на полгода и больше, где будут версии, архитектура. Да ты просто не вспомнишь всех аспектов программы, если через три года решишь поднять её до следующей версии или просто обнаружится баг, который надо будет исправить (бывает такое, что из-за обнаружившегося бага ты не можешь сделать дело (ты пытаешься что-то сделать и вдруг оказывается, что ты не можешь этого сделать, а почему - а потому что баг какой-то)). У меня просто сборки программ такие сложные, что я в одной сборке и установке программы, которые писал сам, могу разбираться потом целый день, если открываю программу на доработку через год или два. То есть, например, есть тестирование программы, как понять, какие тесты уже написаны, а какие нет? Пока ты пишешь поначалу там что-то, ты это всё помнишь: помнишь код самой программы; помнишь, что ты уже протестировал и что нужно ещё протестировать; помнишь, зачем это делать вообще. Когда же ты отложил программу и у тебя другие программы есть, то при возврате к первой программе ты уже не помнишь ничего, только в общих чертах. Не помнишь, что там тестируется даже и есть ли там вообще тесты какие-нибудь. И вот чтобы не перечитывать её код весь, чтобы не перечитывать все тесты заново (а их там уже дофига), чтобы помнить, что нужно тестировать, у тебя должен быть покрывальщик тестов подключен. Он ходит по всему коду, компилируется вместе с ним и в результате показывает, какие фрагменты кода покрыты, а какие - нет. Так вот, чтобы подключить покрывальщик тестов к проекту и чтобы его результаты складывались в удобное для программиста место, нужно столько всего написать в сборщике проекта, там такие детективы нужно разгадывать, такие запутанки нужно проделывать, - реально программировать надо, составлять алгоритм сборки, чтобы всё-всё-всё учесть и чтобы ничего не поехало потом. Короче, это DevOps на полную катушку - сисадминство с элементами программирования.
По UML-схемам ты потом вспоминаешь, что сделано и что ты ещё хотел сделать год назад.
А Scrum даёт возможность определять сроки собственной разработки, очерёдность фич. Там же и короткие периоды разработки, и выкатка фич на лету идёт, и сами фичи можно встраивать в процесс не изначально, а внепланово. Ты не можешь с одной, не очень-то нужной фичей сидеть два месяца - жалко времени. Заранее придумать всё ты тоже не можешь, иногда идеи появляются только в процессе разработки и их надо как-то по-быстрому встроить в общий процесс. Почему от модели водопада стали отказываться в мире - потому что модель водопада хороша только для фиксированных проектов, она не позволяет вдруг внезапно в середине разработки взять и добавить кусок функциональности, придуманной только что.