Как стать автором
Обновить

Комментарии 10

Господи, ну зачем писать такое гуано? На столбе еще приклейте объявление: «Обучаем системной архитектуре», блин! :-(

Архитектуре нельзя научиться на курсах или в классе. В классе можно рассказать об имеющихся подходах к ее построению. И если у вас на курс набраны разработчики с достаточным практическим опытом — они, может быть, что-то запомнят.

Потому что архитектура — это искусство предвидеть требования к изменчивости системы еще до того, как те будут предъявлены. И, соответственно, вставить точки возможного расширения и изменения поведения системы во время ее создания. И нет, нельзя вставить эти точки везде где только можно — потому что это будет хаос. Нужен компромисс между возможностями расширения, сложностью разработки и надежностью. Это нужно выстрадать — на своих и чужих ошибках… И на знании предметной области — чтобы знать, что тут гибкое, а что тут — жесткое…

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

У архитектуры (жилища) и архитектуры (программного обеспечения) общего — только одинаково звучащее слово, к сожалению. Как метафора — оно «ок», а как термин — увы…

Когда вы говорите о здании — то имеете более или менее сформированную веками потребность человека в жилье и/или общественном закрытом пространстве. Если вы построили, мать его, концертный зал — то к вам не придут потом из отдела продаж филармонии по принципу: "… извините пожалуйста, мы тут продали билеты на ледовое шоу на нашей территории — куда нам нажать, чтобы оркестр со сцены поднялся вверх под потолок, сцена стала вровень с полом, а вода на ней замерзла? Желательно прямо сейчас...". А если придут — вы им ткнете в строительные планы и скажете что раньше надо было думать, а сейчас дешевле новое построить, чем это переделывать.

А программирование ценно для многих компаний именно возможностью гибко реагировать на изменения требований бизнеса: ибо байты в памяти переложить — не кирпичи ворочать. Соответственно, архитектура информационных систем и приложений — примерно то, о чем я написал выше… В отличие от…

Если я построил концертный зал, ко мне придут законы физики. Обрушений зданий было множество, пока сопромат не освоили. И наверняка говорили - нельзя освоить строительство в классе, надо опыт. И для металлургии то же самое. Иди у кузнецу в ученики, свойства металла надо узнавать только на опыте. Что, конечно, не плохо, но недостаточно. А раньше было нормально.

Одинаково звучащее слово вы сами придумали, я не использовал. Это не метафора, а пример - люди не учились в классе, теперь учатся. С архитектурой программного обеспечения так же, учиться в классе полезно (про курсы из статьи я не в курсе).

Если пользоваться строительной метафорой (которая представляется здесь довольно естественной), то в реальной жизни почему-то всегда получается так, что, ещё не доделав фундамент системы, торопятся делать проводку и клеят обои на сырые заготовки стен.

Кто-то без строительного образования наверняка и такое сделать захотел бы. В разработке программного обеспечения люди со знаниями обои клеят в конце.

Архитектуре нельзя научиться на курсах или в классе.

А было бы неплохо научиться. В вузе. Этому, по идее, и нужно учить.

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

Откуда возникает изменчивость требований? Если вдруг появились новые требования, то, значит, на предыдущем этапе что-то пропустили. Как можно было садит(ь)ся за реализацию? По-моему, архитектура — это такая обобщённая спецификация, в которой уже должно быть всё необходимое. Если чего-то не хватает, то это ещё не архитектура.

точки возможного расширения и изменения поведения системы во время ее создания.

Очень хорошее описание. Но что из этого следует? Что язык описания системы, язык проектирования системы и язык конечной реализации системы — это всё разные языки.

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

Для этого и нужна теория. Она же — архитектура.

Это нужно выстрадать — на своих и чужих ошибках…

Что же мешает, накопив довольно солидный опыт, обобщить его и предложить архитектуру приложений определённого типа?

И на знании предметной области — чтобы знать, что тут гибкое, а что тут — жесткое…

Архитектура суть абстракция от предметной области, сведённая к типовым элементам и типовым алгоритмам обработки.

В ВУЗе бесполезно учить архитектуре. Точнее — смотря в каком ВУЗе… Глядя на то, что выходит толпами из ворот технического университета в городе-миллионнике далеко от столицы — за исключением некоторых студентов (которые, как обычно, учатся сами — и работают со 2-3 курса на полставки), ваша архитектура в одно ухо влетит, а в другое — вылетит. Потому что там читают студентам около 80 часов основ программирования в одном семестре, потом еще 80 часов профессионального программирования в другом семестре, и вот с этими 160 часами (4 недели, блин!) — они считаются готовыми слушать следующие темы.

У большинства из них — максимальный размер проекта, который они когда-либо делали не превышает 1000-5000 SLOC. А то еще хуже — лабораторные работы по 150-500 SLOC (хорошо, если не списанные).

О какой архитектуре вы будете говорить? Ну я уже не знаю даже какую аналогию тут подбирать… Представьте себе выпускника школы летчиков военного времени по сокращенной программе (умеет при определенном везении и хорошей погоде взлететь, пролететь по кругу и сесть — при этом очень сосредоточен на том, чтобы не убиться в процессе). И тут вы такие умные начинаете ему рассказывать про Energy Management и Situation Awareness в воздушном бою… Проблема в том, что он слова ваши слышит — но у него нет ни понятийной базы, ни ресурсов внутренних, чтобы эти слова приложить к данной ему в ощущениях реальности!

Попробую еще раз сказать — архитектура, это про большие системы с длительным временем жизни, которые подвергаются эволюции требований в процессе эксплуатации! Нет смысла говорить об архитектуре с людьми, которые писали софт на 1000 SLOC и выбрасывали его после зачета!..

Причины по которым происходит эволюция требований — можно обсуждать долго и упорно. Я сам встречался с ситуациями, когда заказчик сам точно не знает чего он хочет. А делать — надо! В идеальном мире, конечно, такого не бывает — а в нашем реальном — легко…

А еще будущее люди предвидят плохо. Сегодня требования одни, а завтра рынок изменился, поведение потребителей изменилось, еще что-нибудь изменилось: и начинается — кирпичи ворочать тяжело, давайте попробуем программно выкрутиться?.. И вот с этого места начинается архитектура.

И да, уже имеющийся опыт программирования позволяет выделить и формализовать возможные (противоречивые местами!) подходы к построению системы. Но это не серебряная пуля, после которой у разработчика прослушавшего курс вдруг по-волшебству все станет хорошо…

Прочитай мне, например, завтра курс по построению симфонических произведений — я может головой-то покиваю, но аки Моцарт симфонии писать не начну… А вот если у человека есть опыт сочинительства и склонности к этому — то подобный курс вполне может огранить талант и сэкономить массу времени на строительство велосипедов…

Мы учим думать, как архитектор. Видеть всю систему, понимать, «что тут гибкое, а что тут — жесткое», быстро отвечать на изменения, знать как раз подходы к построению архитектуры

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

А в гуанине, которую мы обсуждаем — бравурно написано совсем другое!

«Держать команду профессионалов и не мешать делать им дело....»

"… А подготовку профессионалов оставьте нам — отправьте их на курс «Архитектура приложений: пиши, как разработчик, думай, как архитектор»! Здесь они научатся отвечать на все эти вызовы и создавать проекты, которые не хочется выкинуть в помойку через пару лет."

Вы же это сами написали, нет? Или кто-то под дулом пистолета заставил? Напиши вы разумную статью с адекватными ожиданиями — кто б вам слово против сказал…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий