Функциональное программирование на практике

Типичная ситуация: ты учишься годами, читаешь книги, смотришь курсы, проходишь собеседования, успешно устраиваешься в крупную компанию, получаешь высокий оклад, чувствуешь себя уверенно...
А потом приходит первый реальный проект. И вот тут начинается самое интересное.

Реальные дедлайны, спринты, Scrum-сессии и бизнес-требования — всё это быстро вышибает теоретические знания из головы.
Техническое задание может звучать так:

"Сделай мне большую зелёную кнопку, при нажатии на которую наступило бы счастье. Срок выполнения — вчера, потому что мы уже продали это решение заказчику, провели блестящую презентацию на макетах в Figma и получили от него чемодан денег. А заказчик уже тренирует свой палец, готовясь нажать на эту кнопку."

Press for Happiness

Конечно, это немного иронично, но не так уж и далеко от правды. Такие ситуации — одна из главных причин, почему:

Но бизнес работает по своим законам: если не успеешь быстро сделать прототип, то это сделает кто-то другой, и деньги уйдут к нему: вместо чемодана — вагон.

Другой путь

Спойлер: Неправда, другого пути нет!

Попробуем "съесть слона целиком"!

В современном мире есть большой соблазн навайбкодить себе проект, но у вайбкодинга есть существенный минус: ты очень быстро достигаешь границы, когда перестаешь понимать проект и очень быстро выгораешь.

Поэтому надо очень постараться с самого начала самому разрабатывать так, чтобы:

Заодно убьем сразу двух зайцев: создадим полноценный сервис вместе с UI для "Индивидуального плана развития" - треккинга задач для автоматизации самообучения и саморазвития. Это будет аналог Trello, Weeek или Kaiten, но с акцентом на обмен опытом в планах развития и базой знаний.

Цель: сделать платформу, где пользователи могут:

Как мы будем это делать?

Мы будем использовать Scala в сочетании с функциональным программированием, чтобы:

В основе — чистая архитектура с разделением на слои. Каждый уровень будет независим, что позволит легко заменять части системы, тестировать их отдельно и не бояться рефакторинга.

Давайте посмотрим, как это выглядит не на словах, а на практике!


Ссылки: