TGViewer
Channel Public Channel
DartWay Ru | Flutter & Fullstack Dart

DartWay Ru | Flutter & Fullstack Dart

@dartway_dev_ru

Flutter и fullstack Dart в реальной разработке —
без занудства и ненужных абстракций.

Архитектура, практические приёмы, разборы кода.

Для Flutter-разработчиков, которые хотят увереннее чувствовать себя в реальных проектах

💬 @dartway_dev_ru_community
Subscribers
593
Photos
22
Videos
0
Links
37

Showing posts older than #106 · Back to latest

Older Posts 20 shown
Post #105 355
После прошлого поста про архитектуру — хочу дать свой ответ 👀

Без книжных определений и «Clean/SOLID/DDD bingo».

Архитектурное решение — это осознанный выбор варианта реализации с пониманием его плюсов и минусов.

Из этого следует важный вывод:
— чтобы принять архитектурное решение, нужно знать хотя бы 2 способа решения задачи.

Если вы знаете только один подход — выбора у вас нет.
А значит, и архитектурного решения тоже.

Тогда что такое удачное архитектурное решение?

Это решение, которое подтвердило свою разумность в процессе развития продукта:

его преимущества действительно помогли;
а недостатки не стали критичными.

И тут появляется ещё один важный вывод:

— хорошая архитектура всегда связана с прогнозированием.

Нужно пытаться понять:

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

А архитектура приложения?

Это просто совокупность архитектурных решений, принятых в проекте.

Не папки.
Не паттерны.
Не модные названия.

А именно решения и компромиссы.

И отсюда, наверное, главный вывод:
если решения принимались неосознанно —
без понимания альтернатив,
без анализа последствий,
без взгляда в будущее,

то это уже не архитектура.

Это будущее легаси, с которым команде рано или поздно придётся столкнуться 🙂
  • ❤ 1
  • 👍 1
Post #104 393
Небольшой интерактив 👀

Как бы вы простыми словами объяснили:
что такое архитектура приложения;
что такое архитектурное решение;
и как понять, что архитектурное решение — хорошее?

Без книжных определений и “SOLID/Clean/DDD” bingo 😄

Интересно именно:

как вы это объясняете джунам, команде или самому себе.


Пишите свои варианты в комментариях 👇
Post #103 408
Кажется, разработчикам пора чуть шире смотреть на свою роль.

Недавно делал опрос — и много людей написали, что хотят развиваться в продуктовом видении. И это очень точный сигнал.

Потому что давайте прямо:
писать код — уже не дифференциатор.

AI пишет код.
AI пишет быстрее.
AI скоро будет писать большую часть рутинного кода.

А вот что он пока не делает нормально —
понимать, ЧТО именно нужно делать и ЗАЧЕМ.

И вот здесь начинается настоящее продуктовое мышление.

Если упростить до одной формулы, то всё сводится к:

пользователь → боль → решение

Не фича.
Не технология.
Не «так сказали сверху».

А именно цепочка:

— кто наш пользователь
— какая у него реальная боль
— и как наше решение её закрывает

Если выпадает хотя бы одно звено —
ты просто пишешь код без реальной ценности.

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

Код — это инструмент.
Но ценность создаётся не кодом, а тем, насколько точно ты попал в боль пользователя.
  • ❤ 1
Post #102 463
Анонс - DartWay Level up Workshop

Это не про «обучение Flutter», а про работу как в реальном проекте.

Как это будет устроено:
— каждый заходит с проектом
(своим / с нуля / подключается к чужому)
— работаем итерациями:
обсудили → сделали → отревьюили
— основной фокус:
архитектура, принятие решений, продуктовое видение

Это не будет:
— «посмотрел урок → повторил»
— «лёгкий формат без нагрузки»

Это будет:
— работа над проектом
— регулярная обратная связь
— разбор решений и их последствий

Сейчас хочу собрать первую группу.

Важно: беру ограниченное количество людей,
чтобы можно было нормально работать в глубину

Если откликается и ты готов реально вкладываться —
заполни короткую анкету: https://forms.gle/BnokfcKSbtkT1gK46
Google Docs Заявка на воркшоп DartWay Level Up For english - please, contact me directly @eu_novikov on Telegram Привет, я хочу запустить первую учебную группу в ближайшее время - это будет не скучная теория, а реальная практика - для каждого на своём проекте Чтобы я могу хорошо подготовиться, мне нужно…
  • 🔥 2
  • 👍 1
Post #101 410
Судя по опросу, большинство уже понимает:
дело не в языке и не во фреймворке

Но дальше начинается сложность.

Архитура, продуктовое мышление, принятие решений —
это не то, что нормально качается через:

— туториалы
— учебные проекты
— статьи

Потому что там нет главного —
не нужно принимать решения

А в реальной работе всё держится именно на этом:

— что выбрать
— какие компромиссы принять
— как не развалить систему дальше

Думаю сейчас над форматом небольшой рабочей группы,
где можно прокачать именно это

Не «посмотрел → повторил», а работа с реальными задачами и решениями
  • 👍 4
Post #100 425
  • 🕊 1
Post #99 438
Писать код фичей уже недостаточно

Раньше роль разработчика была простой:
получил задачу → написал код → пошёл дальше

Сейчас это меняется.

Инструменты вроде ChatGPT и GitHub Copilot уже закрывают большую часть рутинного кодинга.
Код становится дешевле.

Ценность смещается в другое:
— что именно строить
— как это структурировать
— где провести границы
— как не утонуть в сложности

Теперь разработчик — это не просто “исполнитель фичи”,
а человек, который проектирует систему.

Код можно сгенерировать.

Понятную архитектуру — всё ещё нет.

Вы это уже чувствуете?
  • 💯 4
Post #97
Channel name was changed to «DartWay Ru | Flutter & Fullstack Dart»
Post #96 411
Почему feature-first и layer-first оба ломаются

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

Обычно есть два классических ответа: feature-first и layer-first.

И оба подхода в чистом виде мне не очень нравятся.
1. Layer-first
ui / data / domain / ...

Идея хорошая: отделить слои, сделать зависимости понятными, не смешивать ответственность.

Но на практике под каждую фичу часто появляется папка в каждом слое.

В итоге, чтобы поработать с одной задачей, нужно развернуть почти всё дерево проекта:
ui/payments
domain/payments
data/payments

И дальше начинается бойлерплейт ради “clean architecture по канону”.

2. Feature-first
auth / profile / payments / ...

Здесь идея тоже хорошая: всё, что относится к фиче, лежит рядом.
Но на практике внутри каждой фичи часто снова появляются слои:
widgets / data / domain / state / models / utils

И получается странная ситуация: папок в проекте становится больше, чем файлов.

Главная проблема — не всё, что мы называем “фичей”, реально является маленькой фичей.

Например, payments — это часто не одна фича, а целый функциональный блок:
— список операций
— карточка редактирования
— фильтры
— статусы
— формы
— детали платежа
Если делать это как одну фичу — получаем монстра на десятки файлов.

Если дробить на много фичей — получаем десятки папок ради небольших кусков логики.

Тоже не очень.

К чему мы пришли в DartWay
Мы используем гибридный подход.
1. Всё универсальное выносим отдельно
То, что не относится к конкретной фиче, живёт отдельно:
— ui_kit
— data layer
— универсальный domain
— методы и extensions моделей
— общие инфраструктурные вещи
Это ближе к layer-first.
Например, весь базовый UI лежит в ui_kit.
2. Фича — это маленький изолированный кусок
Фича в DartWay — это не огромный раздел приложения.

Это компактный функциональный модуль.

Обычно внутри:
feature/
 feature.dart
 widgets/
 logic/

В корне — один входной файл: виджет или extension, через который фича подключается снаружи.
Внутри:
— widgets — функциональные виджеты
— logic — state, модели, хелперы

Главное правило:
во внутренности фичи нельзя ходить снаружи.
Если ты не работаешь с фичей, тебе не нужно открывать её вложенные папки.

Простая фича может содержать корневой файл и пару вложенных файлов.

Сложная фича — 3–5 виджетов и несколько файлов логики.

А большой блок вроде payments становится не одной огромной фичей, а набором маленьких изолированных подфичей.

Мне такой подход нравится тем, что он не заставляет выбирать между feature-first и layer-first.

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

Что думаете о таком подходе?
Как вы организуете код в проектах?
  • 👍 3
Post #93 442
Давно не писал — апдейт по DartWay 👇

За последнее время:

— Запустили приложение для клиента
https://app.tvaity.ru
Фреймворк хорошо показал себя в работе — реально ускоряет разработку.

— Обновили сайт
https://dartway.dev
И начал переносить туда карту компетенций (буду постепенно заполнять).

Сейчас хочу проверить всё это на практике с другими разработчиками.

Планирую запустить небольшую тестовую группу:
— обкатать фреймворк на реальных задачах
— посмотреть, как он работает в команде
— и собрать обратную связь

Группа будет маленькая, с отбором.

В ближайшие дни выложу форму для заявок.

________________________________________________________________________

Haven’t posted in a while — quick update on DartWay 👇

Over the past months we’ve made solid progress:

— Launched a client app
https://app.tvaity.ru
The framework performed really well in production — it noticeably speeds up development and reduces effort.

— Updated the website
https://dartway.dev
Also started moving the competency map there — will keep expanding it over time to make the learning path clearer.

Next step is to validate all of this in practice with other developers.

I’m planning to launch a small pilot group:
— test the framework on real tasks
— see how it works in a team setup
— collect feedback and improve the approach

The group will be small and curated.

I’ll share the application form in the next few days.
  • ❤ 1
Post #92 550
Сейчас делаю скрипт, который будет разворачивать тестовый сервер под наш проект удаленно без каких-либо ручных действий

И я очень мало понимаю в том, какие команды там используются, но именно я решаю
- как в целом будет скрипт запускаться
- какие ключевые критерии его работы
- какие данные будут в параметрах, какие в конфиге, а какие - вычисляться

И на выходе я получу бронебойный инструмент, который смогу использовать на любом проекте

Хотя я бы мог просто поставить задачу нейронке и она бы слепила решение, которое запустилось бы после 2-3 фиксов
Но это было бы разовое решение, которое в следующий раз пришлось бы снова фиксить или допиливать

Вместо этого я трачу 3 часа, чтобы детально проработать каждый шаг скрипта и четко знать самому, как он работает
  • 👍 1
Post #91 488
И в продолжение темы - сейчас очень популярна тема AI и вайб кода

И главная мысль всех экспертов, что AI может решить большинство задач. Но если довериться ему полностью, то вы не будете знать, как именно он её решил. И я вас уверяю, что решит он её не лучшим образом, сто пудово оставит какие-то грабли.

Так что разработчику сейчас нужно в первую очередь прокачивать понимание архитектуры и инженерных вопросов - чтобы проектировать будущую работу системы и уже давать это видение на вход нейросети
  • 👍 6
Post #90 542
Почему нельзя учиться разработке на учебных проектах

Точнее — учиться можно.
Но не факт, что вы чему-нибудь научитесь.

Проблема в том, что учебные проекты — это стерильная среда.

В них:
понятный и аккуратный исходный код
чёткая постановка задачи
заранее продуманное решение

Ты решаешь десятки таких задач → кажется, что всё понял.
А потом приходишь на реальный проект… и сразу тонешь.

Потому что в реальности всё иначе:
— код — это смесь легаси, компромиссов и “временных решений”, которые живут уже 3 года
— требования — вроде понятны… пока не начнёшь делать
— архитектура — есть, но не факт, что её кто-то соблюдает

Добавьте сюда:
- сжатые сроки
- постоянные изменения
- процессы, которые не всегда помогают

И задача перестаёт быть «учебной». Она становится реальной.

Но самое важное — не это.

В учебных проектах нет последствий.

Ты можешь:
- выбрать любой подход
- переписать всё с нуля
- сделать “как-нибудь”

И ничего не случится.

А в реальной работе:
каждое решение имеет цену.

— сломал — чинят другие
— сделал плохо — это станет чьим-то легаси
— не подумал — вернёшься к этому через месяц

И вот здесь начинается настоящий рост.

Потому что рост — это не про “знаю как правильно”.
Это про принимаю решения в условиях неопределённости и несу за них ответственность.
  • 👍 6
  • 🔥 2
Post #89 569
Meeting in Yandex Telemost 27.03.26 17-06-01 — recording.webm336.8 MB
Привет, по вебинарам я пришел к выводу, что выбранное нами время - вечер пятницы прям совсем не очень.

Опять накладка с важными планами.

Так что я беру паузу, чтобы выбрать удобное время, когда я точно смогу.

ПС. прилагаю запись последнего вебинара - хотел на ютуб выложить, но так и не добрался до этого
  • 🔥 4
  • 😢 2
Post #88 699
Сегодня не будет вебинара - не получается по графику.
  • 😢 6
  • 💔 1
Post #87 715
  • ❤ 4
  • 👍 1
  • 🔥 1
Post #86 618
  • ❤ 1
  • 👍 1
  • 🔥 1
Post #85 553
И я начинаю оформлять топики - посмотрите, будет ли полезно в таком виде, какие возникают вопросы/замечания

Starting to fill topics, questions and feedback are welcome
  • 👍 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →