Thinking Architecturally. Lead technical change within your engineering team
Эту
небольшую брошюру от Nathaniel Schutta я прочитал в далеком 2019 году, когда гораздо проще было путешествовать по зарубежным конференциям и собирать ништяки. Конкретно в этой книге 56 страниц, но это только уменьшает количество воды, которую обычно наливают авторы в книги, чтобы растянуть книгу на 200 - 250 страниц. Конкретно в этой книге получилось 7 коротких глав:
1.
Technology Changes - здесь речь идет про то, что технологии меняются и мы не можем предотвратить изменения, поэтому нам надо уметь ими управлять. Автор отмечает, что изменения в технологиях часто повторяют себя и нам надо знать прошлое, чтобы распознавать будущие паттерны. Здесь автор предлагает учиться на своих ошибках и ошибках индустрии (например, постмортемы, про которые я как-то рассказывал
здесь), оценивать развитие технологий и не верить в хайп с конференций. Тут автор упоминает даже про пользу legacy skillset, на примере COBOL:)
2.
Thinking Strategically - основная мысль в том, что думать об изменениях в технологиях надо стратегически и также стратегически надо думать про свое развитие. Автор предлагает фокусироваться на нескольких областях, которыми вы глубоко увлечены и прокачивайте их. Дальше автор рассказывает про использование техрадаров по технологиям, которые можно использовать и для поддержания своих технологических знаний (подробнее про техрадары я говорил
здесь). Дальше идет речь про структурирование потоков информации, создание планов по своему развитию с созданием пет-проектов, персональное обучение, обучение в группе, общение с коллегами по индустрии
3.
Evaluating Pros and Cons - эта глава посвящена принятию решений, как оценивать компромиссы, риски. Тут же обсуждается technology hype cycle и выбор правильного инструмента
4.
Evaluating and Choosing Technologies - как выбрать критерии для оценки, например: документация, коммьюнити, структуру контрибьюторов, кодовая база, тестируемость, зрелость, стабильность, расширяемость, поддержка, тренинги, возможность найма специалистов, безопасность, попадание в корпоративнудю структуру. Как это можно все свести в spreadsheet для оценки, сделать proof of concept и как на решение влияет политика организации
5.
Introducing Technologies - про то, что внедрение новой технологии зачастую сложнее ее выбора:) Как митигировать изменения, как влиять на окружающих, как работать с возраениями и заниматься маркетингом своих идей
6.
Maintaining Technologies - как поддерживать внедренные технологии по мере эволюции программных систем. Автор вспоминает про концепцию quality attributes (примерно то же самое, что architectural characteristics), которые надо выделить как важные для конкретного продукта, дальше отприоритизировать их и использовать подход continuous или evolutionary architecture с их фитнес-функциями для отслеживания того, что характеристики не уплывают по мере инкрементального развития продукта (вот тут подробнее про
continuous architecture,
эволюционную архитектуру)
7.
Conclusion - в конце автор рекомендует стратегически подходить к применению новых технологий к вашему продукту/проекту.
#Architecture #Management #Leadership #Software #SoftwareArchitecture #SoftwareDevelopment