Работайте маленькими шагами
Самая частая ошибка — просить слишком много за раз. «Построй мне пользовательский дашборд с авторизацией, графиками и страницей настроек» породит стену кода, которую вы не сможете отревьюить, с багами, разбросанными по файлам, которые вы не читали.
Маленькие шаги держат вас под контролем:
- Выпускайте одну функцию, компонент или эндпоинт за промпт.
- Проверяйте, что каждая часть работает, прежде чем двигаться дальше.
- Стройте на подтверждённо рабочем коде, а не на башне непроверенного вывода.
Построй всю систему аутентификации с входом, регистрацией,
сбросом пароля, сессиями и подтверждением email.
Шаг 1 потока аутентификации: напиши только эндпоинт регистрации.
POST /signup, принимающий { email, password }. Захешируй пароль
через bcrypt, сохрани пользователя, верни 201 с id пользователя.
Считай, что модель User и клиент db уже существуют (я покажу
их формы). Вход в систему сделаем следующим.
Меньшие промпты означают меньшие diff'ы, а меньшие diff'ы означают, что вы реально можете прочитать, что изменилось. В этом вся суть. Есть и второй выигрыш: когда что-то ломается, маленький шаг тривиально локализовать бисекцией. Если вы сгенерировали и проверили эндпоинт регистрации, затем логику сессий, затем сброс пароля, то баг, появившийся после третьего шага, почти наверняка живёт в третьем шаге. Генерация одним взрывом выбрасывает этот сигнал — баг может быть где угодно в четырёхстах строках, которые вы ни разу не читали.