Вот что я решительно не перевариваю — это needy программы. То есть такие, которые не работают на тебя, а которые ты должен обслуживать.
Возьмем Idea как пример (просто потому что под рукой). Создание файла. Казалось бы — простейшая операция, что может быть тривиальнее? Ну так вот, если нажать Cmd+Shift+N в Idea, она... не создаст новый файл! Она начнет допекать тебя вопросами: а как назвать? А какой тип? А какая версия? А в файле будет класс лежать или интерфейс? И только продравшись через все эти дебри, ты получишь наконец возможность что-то написать. Хотя к этому моменту, наверное, уже и забыл, что.
Но она ведь помогает? Не. Это не помощь. Точнее, помощь, конечно, но предложенная неудобно и не вовремя. Такая, что заколебет больше, чем сохранит сил.
При работе с программой может быть два режима: а) ты отдаешь команды — программа действует, или б) программа что-то от тебя хочет. Первый — абсолютный кайф, позволяет поймать поток и чувствовать себя творцом-демиургом, полностью подчинившим себе инструмент.
Второй — полная противоположность, беспомощный «помощник», который сам ничего не может и дергает тебя по пустякам. В сущности ты, вместо того, чтобы решать свои проблемы и воплощать свои замыслы, переключаешься на нужды программы и делаешь то, что ей в данный момент зачем-то нужно. Ей, а не тебе.
Но ведь это обязательные параметры? Как без них? Да легко! Я нажал «создать файл» — вот тебе пустой файл. Не нравится формат? Нажму и поменяю. Имя неправильное? Переименую. Разница в том, что это происходит, когда мне это нужно, когда у меня возникает эта проблема. У меня, а не у программы.
Другой яркий пример такого абьюзивного поведения: нотификации. Самое страшное, что произошло с ИДЕ, с момента изобретения ИДЕ. Нотификации — это проблемы программы, которые она считает нужным сделать моими проблемами. Часто нотификации даже близко не имеют отношения к тому, что я делаю. Плагин, например, обновился. Или сломалось что-то внутри. Или «псс, парень, не хочешь подсветку синтаксиса поискать»? Ну блин, если бы хотел, я бы пошел и поискал, епта. Или «смотри, смотри, я поняла кажется что тут написано, вот тебе пяток иконок по этому поводу!»
Еще один — настройка проекта. «Сначала все настрой, потом я начну работать» это программный эквивалет вотерфолла, методология, которая, как известно, никогда толком не работала. Я не хочу ничего настраивать кроме того, что мне прямо сейчас нужно, я хочу работать, а не обслуживанием софта заниматься.
Ну и апдейты, конечно. Ну вот любят программисты в момент обновления переделать/передумать/переизобрести какие-то внутренности, а потом гордо мне сообщить, что теперь у меня формат конфига неправильный, или нужно файлы какие-то закоммитить, или просто что больше ничего работать не будет. Но я-то тут причем, зачем вы меня этим мучаете?
Короче, программы, не спрашивайте у пользователя ничего. Дайте ему команды и возможность их дергать. Когда ему понадобится (ему, а не вам!), он придет и сам вас позовет. А до тех пор, ради бога, оставьте его в покое. И не блокируйте работу.