acces969
@acces969
Программист

Как повысить свои навыки в построении архитектуры сложных приложений?

Стаж работы программистом 6 лет, но отсутствие профильного образования дает о себе знать.
Начать клепать программу процедурно - легко. Начать построение простой архитектуры - легко. Проблемы начинаются, когда есть уже массивная, частично работающая программа, и оказывается, что некоторые части несостыковываются между собой или внешними источниками, или вовсе часть архитектуры нужно переделывать. Это неприятно - порой проще начать писать с нуля, чем копаться в тысячах строк.
Конечно, описанная ситуация уже редкость, меры приняты, но все же я понимаю, что нужно поднимать свои навыки в построении архитектуры. Понимаю, что сейчас я скорее низкоуровневый кодер, чем архитектор.
Сейчас читаю "Паттерны проектирования" от head first, чтобы хорошо знать базовые шаблоны программирования. Что еще посоветуете? Не слишком заумные, но и не для новичков.
Язык программирования, думаю, тут не важен, так как тут скорее теория
  • Вопрос задан
  • 1780 просмотров
Решения вопроса 1
bingo347
@bingo347
Crazy on performance...
Если по теории, то мне в свое время вот эта книга помогла:
https://www.litres.ru/robert-s-martin/chistaya-arh...

Притом после 1 прочтения я нифига не понял, но стал пытаться внедрять практики из книги в повседневную разработку. Выписывал в блокнот все свои затупы.
В этот момент передо мной как раз стояла задача, привести кусок лапши в хоть как-то поддерживаемое состояние. Именно он и сподвиг меня почитать эту книгу.

Через несколько месяцев прочел еще раз, анализируя все затупы, что записал за это время в блокнот. После прочтения начал потихоньку рефакторить в существующих проектах места, которые уж очень жить мешали.

Еще через пол года прочел третий раз, опять же с оглядкой на личный опыт. И тут я кажется уже совсем въехал. По крайней мере многие проблемы с организацией взаимодействия между компонентами стали разрешаться. И вообще появилось достаточно четкое понимание, как структурировать приложение и где разбивать его на компоненты.
Ну и после 3 прочтения еще помог момент: мне дали с нуля проектировать новое, достаточно крупное приложение на Rust. Притом заказчик кричал "микросервисы - это круто, хочу, хочу, хочу", а тимлид мне сказал "давай монолит, но так чтоб потом легко было распилить, а то все сроки про**ем". Вот тут прямо вообще понимание пришло. Ну и плюс в Rust архитектурные компоненты очень хорошо ложатся на отдельные крейты (это такая единица компиляции в Rust), а компилятор в принципе не дает делать циклические зависимости между крейтами.

Ну и недавно решил освежить память и перечитать еще раз. И на этот раз уже были мысли вроде "так если делать по другому, потом проблемы вылезут тут и тут".
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Читать книги на эту тему, работать на проектах, где более опытные коллеги строят сложные архитектуры, участвовать в этом посильно.
Ответ написан
Комментировать
heman
@heman
бэкенд разработчик на php
Идеально конечно попасть в большой проект с опытными коллегами.

Чистая архитектура полезная книга.

Мне помогла серия видео по запросу "модульный монолит".

ArchDays 2020 • Модульный монолит вместо микросервисов • Денис Цветцих (Epam)

Модульный PHP монолит как альтернатива микросервисной архитектуре - Юлия Николаева, iSpring

И самое главное серия статей Herberto Graça The Software Architecture Chronicles
https://habr.com/ru/post/427739/
https://herbertograca.com/2017/07/03/the-software-...

В голову заходит тяжело. Выше коллега писал про свой подход: постоянно пробовать то что узнал на практике и пересмотр решений.
Ответ написан
Комментировать
c3gdlk
@c3gdlk
Ментор в http://rubyboost.ru/
Старайтесь работать в компаниях и на проектах, на которых уделяют время написанию текстов. С тестами код легко рефакторить и можно пробовать довольно быстро разные варианты, сам быстро учишься.

Но с книгой намного лучше. Вы выбрали отличную книгу, пробуйте внедрять паттерны из нее. Хотя бы в мысленных экспериментах
Ответ написан
Комментировать
MDiMaI666
@MDiMaI666
Талантливый программист
Делать много много и расширять зону ответственности. И сам додумаешься. Главное будешь знать не как а зачем так делать. Только практика.
Ответ написан
Комментировать
@AlexSku
Программист по автоматике
А всё-таки если немного заумную, то Functional Design and Architecture (Александр Гранин).
Ролик с пояснениями по FreeMonad.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы