Size: a a a

Архитектура ИТ-решений

2020 October 12

I

Ivan in Архитектура ИТ-решений
Alexey Pryanishnikov
Ну так кто мешает создать? Вперёд
Я подумаю об этом. Спасибо.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Ivan
Согласен. Но есть и другая сторона. Разработчик 90% времени читает код и получает представление о том, как устроена система, и это в том случае, если программа обладает хорошим внутренним качеством. Я в свое время писал на emacs, и многие мои друзья писали на emacs, и там по логу можно легко в этом убедиться.

Иными словами, 90% времени осуществляется достижение коллективного понимания того, как устроена система. А именно в этом и заключается архитектура, как утверждал Рольф Джонсон, - в коллективном понимании того, как устроена система.

Таким образом, архитектура на 90% оказывает влияние на velocity. Дальше можно долго рассказывать про Coupling&Cohesion, управление сложностью, пределы краткосрочной человеческой памяти, роли типовых решений в коллективном понимании устройства системы, системном мышлении, цикломатической сложности и т.п.

В конечном счете все сводится к одному - утрата контроля над сложностью программы приводит к экспоненциальному взлету стоимости изменения кода. Управление сложностью осуществляется через абстракции. А тут мы приходим уже к другому определению архитектуры, данное Г.Буч, архитектура - это многоуровневая система абстракций.

В общем, если с velocity беда - то это проблема архитектуры, ну, если только дело не в отвертке в системнике. Системной архитектуры, разумеется.
Как-то писал на днях в соседнем чате. Когда с архитектурой беда, есть  всего две проблемы - много задач и не хватает ресурсов. Других проблем не видно. Дайте побольше синьоров, чтобы успевать затыкать дыры.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
@swein2 синьоры конечно больше нужны, много больше. Но я вас разочарую. Продавцы и доставщики еды нужны ещё больше. Доставщиком еды можно устроиться на работу за несколько часов и без всяких интервью.
источник

I

Ivan in Архитектура ИТ-решений
Gennadiy Kruglov
Как-то писал на днях в соседнем чате. Когда с архитектурой беда, есть  всего две проблемы - много задач и не хватает ресурсов. Других проблем не видно. Дайте побольше синьоров, чтобы успевать затыкать дыры.
Таким образом проблему можно было бы решить, если бы ее характер был хотя бы линейным. Правда, такой способ может сработать, если хотя бы один из новых синьоров обладает необходимыми знаниями в области системной архитектуры, и сможет изменить характер кривой стоимости изменения кода.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Ivan
Таким образом проблему можно было бы решить, если бы ее характер был хотя бы линейным. Правда, такой способ может сработать, если хотя бы один из новых синьоров обладает необходимыми знаниями в области системной архитектуры, и сможет изменить характер кривой стоимости изменения кода.
Тебе не кажется, что этот синьор - архитектор, который этого ещё не осознал? Думаю, у такого синьора почти не останется времени в прод писать.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
@emacsway Иван, согласен с твоими словами. Больше того, думаю, тебе стоит написать книгу или хотя бы серию статей об этом.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Кстати,  TTM в прямой связи от велосити.

Архитектура, и в большей степени ахитектурная работа, напрямую влияют на два важнейших параметра экономики - TTM и TCO. И в сфере интересов и ответственности архитектора далеко не только разработка.

Часть архитектурной работы - процессы, как здесь постоянно пишут. И вот если на процессы, а если подняться выше, на культуру, повлиять нельзя, то действительно, вместе с ростом по экспоненте TTM и TCO, нужно по экспоненте нанимать синьоров.
источник

GK

Gennadiy Kruglov in Архитектура ИТ-решений
Действительно, когда всё уже запущенно и нет никакой возможности провести изменения, остаётся только одно - тушить пожары. Хорошие синьоры действительно могут разобраться в любом говне.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ivan
Мое видение о том, зачем архитектору уметь кодить заключается прежде всего в итеративности разработки. В BDUF это не критично. А в итеративных разработках - критично.

Многие знатоки архитектуры утверждают (и я убедился в этом на практике), что, если velocity начал проседать, то он проседает с быстротой экспоненты. Если velocity проседает, то значит есть проблемы на уровне системной архитектуры. Именно об этом и говорит 9-й принцип Agile Manifesto (обсуждали в соседнем чате). И эти проблемы должен кто-то исправить, иначе в бюджете может образоваться дыра неуправляемых масштабов. За кривую экономики разработки отвечает архитектура.

Вторая причина зачем нужно уметь кодить - чтобы помогать разработчикам реализовывать решения. У разработчиков часто возникает страх перед неизведанным, и они стараются ходить обходными путями, когда испытывают неуверенность. Скажем так, среднестатестический разработчик на рынке не сделает Event Sourcing самостоятельно в разумные сроки. Ему минимум месяц-два нужно только готовиться к подобной реализации. И архитектор должен или подготовить команду заблаговременно, чтобы команда успела ознакомиться с теорией и типовыми реализациями, или подключиться к процессу разработки, чтобы команда не завалила сроки. Не обязательно кодить, но он должен понимать и предвидеть потребности команд, и быть готовым выступить куратором, или снабдить информацией, требуемой для реализации.

Из моего личного опыта - когда проект имеет неплохое внутреннее качество (в РФ бывают неплохие проекты), то velocity обычно можно увеличить в течении года раз в 5. Т.е. на ту же сумму можно доставить в 5 раз больше business value. А если проект имеет неудовлетворительное внутреннее качество (что я часто наблюдал на заокеанском рынке), то там только за первые полгода зачастую можно улучшить экономику разработки на пару порядков.

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

Самый лучший руководитель, которого я когда либо встречал в своей жизни, был главный инженер одного горно-обогатительного комбината. Невероятно эрудированный человек и тиран. Его все уважали и боялись одновременно. Как-то раз я наблюдал, как он в оперативной диспетчерской комбината разговаривал по телефону со слесарем аварийного водоподъема, и рассказывал ему каким гаечным ключом и какую гайку тот должен открутить. Кстати, интересный момент, который его характеризует - он жил в предоставленном комбинатом жилье, ездил на служебной машине (своей у него не было), и в возрасте 65 лет он каждое утро в 6 утра пробегал несколько километров. Я от этого человека многому научился.
А можно рассказать кейс, когда у уже неплохого проекта удалось увеличить velocity в пять раз? Как-то не очень верится, если честно.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Alexey Pryanishnikov
этим всем пусть занимается системный архитектор. Из соседнего чата)
А что за соседний чат?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ivan
Согласен. Но есть и другая сторона. Разработчик 90% времени читает код и получает представление о том, как устроена система, и это в том случае, если программа обладает хорошим внутренним качеством. Я в свое время писал на emacs, и многие мои друзья писали на emacs, и там по логу можно легко в этом убедиться.

Иными словами, 90% времени осуществляется достижение коллективного понимания того, как устроена система. А именно в этом и заключается архитектура, как утверждал Рольф Джонсон, - в коллективном понимании того, как устроена система.

Таким образом, архитектура на 90% оказывает влияние на velocity. Дальше можно долго рассказывать про Coupling&Cohesion, управление сложностью, пределы краткосрочной человеческой памяти, роли типовых решений в коллективном понимании устройства системы, системном мышлении, цикломатической сложности и т.п.

В конечном счете все сводится к одному - утрата контроля над сложностью программы приводит к экспоненциальному взлету стоимости изменения кода. Управление сложностью осуществляется через абстракции. А тут мы приходим уже к другому определению архитектуры, данное Г.Буч, архитектура - это многоуровневая система абстракций.

В общем, если с velocity беда - то это проблема архитектуры, ну, если только дело не в отвертке в системнике. Системной архитектуры, разумеется.
Если разработчик 90% времени читает код - то с качеством кода и архитектурой что-то очень не то (
источник

I

Ivan in Архитектура ИТ-решений
Phil Delgyado
Если разработчик 90% времени читает код - то с качеством кода и архитектурой что-то очень не то (
Сколько символов в день коммитят в среднем ваши разработчики? Сколько времени требуется на то, чтобы набрать их на клавиатуре? Вопрос риторический. Если интересно, можете подсчитать. Все остальное время разработчик борется со сложностью и получает представление о том, как устроена система.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ivan
Сколько символов в день коммитят в среднем ваши разработчики? Сколько времени требуется на то, чтобы набрать их на клавиатуре? Вопрос риторический. Если интересно, можете подсчитать. Все остальное время разработчик борется со сложностью и получает представление о том, как устроена система.
Ээ, есть разница между чтением кода и чтением постановок, например. И это не про 'получает представление', эта формулировка очень неточна, нужна какая-то другая.
источник

I

Ivan in Архитектура ИТ-решений
Phil Delgyado
Ээ, есть разница между чтением кода и чтением постановок, например. И это не про 'получает представление', эта формулировка очень неточна, нужна какая-то другая.
Формулировку я просто подвел под определение архитектуры Рольфа Джонсона.

На самом деле, понимание того, как устроена система, из "чтения" программы, уже характеризует высокое качество программы. Хуже, когда для понимания того, что делает тот или иной класс, нужно открывать его реализацию, и пытаться что-то там понять. Еще хуже, когда для этого нужно залазить в отладчик. Еще хуже, кода непонятно, как и где отразится изменение кода.

Это, кстати, одна из причин популярности юнит-тестов - время их написания прогнозируемо, а время на отладку прогнозировать невозможно.

У Стива МакКоннела была такая фраза - если непонятно, что делает класс, исходя из его интерфейса, то не открывайте реализацию, - попросите автора интерфейса сделать его более понятным. В таком случае программу можно "читать", и в таком случае абстракции выполняют свое назначение управления сложностью.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Но это все про достаточно простые практики качества и тут не будет уходить 90 процентов времени на чтение и понимание системы. Я вообще не уверен в полезности определения Джонсона, если честно.
источник

I

Ivan in Архитектура ИТ-решений
Phil Delgyado
Но это все про достаточно простые практики качества и тут не будет уходить 90 процентов времени на чтение и понимание системы. Я вообще не уверен в полезности определения Джонсона, если честно.
Сколько времени требуется на то, чтобы ввести с клавиатуры среднее количество закоммиченных за сутки символов? Чем занимается разработчик когда он не вводит символы с клавиатуры?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
А при чем тут ввод символов с клавиатуры? Набор кода и изучение системы не исчерпывает деятельности программиста. Понимание и уточнение требований (что и как должно работать) занимает куда как больше времени.
источник

I

Ivan in Архитектура ИТ-решений
Phil Delgyado
А при чем тут ввод символов с клавиатуры? Набор кода и изучение системы не исчерпывает деятельности программиста. Понимание и уточнение требований (что и как должно работать) занимает куда как больше времени.
Точность требований имеет отношение к архитектуре?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
По разному, когда как. И смотря в каком понимании архитектуры.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Скорее нет, чем да.
источник