# Понедельник 45 твитов
Всем привет! На этой неделе с вами Владимир Иванов(@vvsevolodovich). Я много чем занимаюсь: делаю мобильные прилож… twitter.com/i/web/status/1…
10:10Мы с вами поговорим вот о чем:
10:1017-18: Архитектура ПО. Зачем, как, где учиться, что читать
19-20: Мобильные приложения: насколько это весело, как с… twitter.com/i/web/status/1…
Давайте начнем с историй провалов: жил-был один стартап, делал мессенджер. Роль архитектора там исполнял менеджер п… twitter.com/i/web/status/1…
10:21И он решил, что надо заложиться на безопасность и производительность. Вобщем, сервак поддерживал сквозное шифровани… twitter.com/i/web/status/1…
10:22Стоит ли говорить, что у приложение было 2000 установок в пике, а про сквозное шифрование было написано мелким шриф… twitter.com/i/web/status/1…
10:24Отсюда вывод: собирайте и верифицируйте нефункциональные требования(non-functional requirements), иначе проекту кранты.
10:30Говоря более обще, кроме NFR вам нужны и функциональные требования, и ограничения(это типа требования разворачивать… twitter.com/i/web/status/1…
10:31Архитектор нужен, чтобы из этих трех списков выделить ASRs: architecturally significant requirements. Это те, что м… twitter.com/i/web/status/1…
10:32Чтобы собирать архитектурно значимые требования, есть много всяких техник. SEI рекомендует QAW - quality attribute workshop.
10:43Проблема этой техники(resources.sei.cmu.edu/library/asset-…) в том, что она дофига дорогая. Нужно всех стейкхолдеров на пару дней… twitter.com/i/web/status/1…
10:46Всякие большие конторы, которые называют себя "Software services company", используют сокращенную версию - берут вс… twitter.com/i/web/status/1…
10:53На выходе список требований, который архитектор кладет в правую сторону Utility tree, как здесь: pic.twitter.com/ah75dFkTIG
10:54Для каждого требования справа выставляется две отметки: приоритет для бизнеса(High, Medium, Low) и влияние на архит… twitter.com/i/web/status/1…
10:55В итоге требования пишутся в Solution Architecture Document, на их основе строится архитектура. Все эти мероприятия… twitter.com/i/web/status/1…
10:58У архитектора много трудностей в работе. Одна из трудностей - идентификация и приоритизация стейкхолдеров. Это таки… twitter.com/i/web/status/1…
14:42Вот тут кстати можно почитать подробно про типы стейкхолдеров - medium.com/@nvashanin/sta…
14:43Беда в том, что вы заранее не знаете, кто в организации заказчика обладает реальной властью и на какие рычаги может… twitter.com/i/web/status/1…
14:44Вы познакомитесь с приличным количеством людей с той стороны: это и технические директора, и девелоперы, и менеджер… twitter.com/i/web/status/1…
14:48Внутри вашей организации стейхолдеры тоже есть: аккаунт-менеджер, девелоперы, devops команда и т.д. Каждому про про… twitter.com/i/web/status/1…
14:51Каждому view point есть соответствие, которое называется View. Это, условно, диаграмма или документ, на основании с… twitter.com/i/web/status/1…
14:52Аккаунту до фонаря ваши диаграммы, ему только profit&loss интересен. Проектному менеджеру важнее всего components&c… twitter.com/i/web/status/1…
14:58Если вы еще не понимаете, почему архитектор - одна из самых важных персон на проекте, и от качество его работы зави… twitter.com/i/web/status/1…
15:05Есть такой процесс Presale - это к вам пришел заказчик и спрашивает, сколько денег и времени займет разработка. Арх… twitter.com/i/web/status/1…
15:07Один раз пресейл команда что-то недособрала, и отправила инфу. Заказчику предложение понравилось и чуть позже он пр… twitter.com/i/web/status/1…
15:09Техническими и менеджерскими ухищрениями удалось немного снизить сумму, но отношения были подорваны, что сильно ска… twitter.com/i/web/status/1…
15:11Всем привет. Я Лёша Никитин, мне 31 год. Работаю техническим директором в Букмейте. В разработке больше 10 лет. В о… twitter.com/i/web/status/1…
12:40Есть несколько вещей, которые волнуют мое сердце. Это букмейт, разработка и эрланг. Про это и буду писать
12:40Начнем с букмейта. Букмейт - это лучший способ читать и находить новые книги.
12:47Бэкенд букмейта пишется на руби, джаве и колтлине.
12:47Основной язык это руби. Больше всего кода написано на Rails. Хотя есть проекты на ванильных рубях. В последнее время пишем на dry-стеке
12:48Бэкенд-разработчики букмейта большую часть времени делают код-ревью. Расскажу про код-ревью в букмейте
19:11Я считаю, что код-ревью это гетто. Очень много времени тратится на ожидания когда кто-то посмотрит, потом сам ревью… twitter.com/i/web/status/1…
19:12Я считаю, что его не должно быть совсем. Весь код должен писаться в парах, как завещали нам мудрецы. Но с парным пр… twitter.com/i/web/status/1…
19:13Во-первых, парное программирование это безумно сложно. Оно заставляет разработчиков держать максимальный уровень ко… twitter.com/i/web/status/1…
19:14Во-вторых, парное программирование, это безумно долго. Не потому что две головы напишут в два раза больше кода по о… twitter.com/i/web/status/1…
19:14С парным программирование есть еще ряд заморочек. Код-ревью не так круто, но зато намного проще
19:15Мы прошли три стадии код-ревью
19:15Стадия первая, стилистическая. Запятая не на той строке. Отступ не консистентный, кавычки не те. Эта стадия закончи… twitter.com/i/web/status/1…
19:16Стадия вторая, структурная. Вот здесь слишком метод большой, дублируется логика и т. п. Эта стадия закончилась, ког… twitter.com/i/web/status/1…
19:18В добавок выкрутили требование к покрытию диффа в 100%. Таким образом непокрытый код перестал попадать в мастер. Вс… twitter.com/i/web/status/1…
19:18И началась третья стадия, семантическая. Когда разработчики пытаются выяснить что же всё-таки делает код, зачем и в… twitter.com/i/web/status/1…
19:20Это еще сильнее увеличило время ревью. Но зато позволяет вылавливать просто феерические факапы на самой ранней стад… twitter.com/i/web/status/1…
19:21Всё что может делать программа, надо переложить на программу. Это довольно банальная мысль, но она важная. Использу… twitter.com/i/web/status/1…
19:26Внимания у человека немного. Оно цепляется за низко висящие фрукты. Пусть это делают компьютеры, у них лучше получается
19:28# Вторник 12 твитов
Продолжим? Что читать wanna-be архитектору? Вот тут есть дельная статья про книжки для будущих SA:
medium.com/@nvashanin/boo…
Я сам читал Solution Architecture in Practice(amazon.com/Software-Archi…) и Documenting Software Architecure(… twitter.com/i/web/status/1…
11:25Коллеги еще рекомендуют 97 Things Every Software Architect Should Know(amazon.com/Things-Every-S…). Возьму ее наверно… twitter.com/i/web/status/1…
11:27Конечно, одних книг никогда недостаточно, особенно если проектирование и разворачивание масштабируемых систем на 4… twitter.com/i/web/status/1…
11:36Тут проблема курицы и яйца: пока у вас нет тайтла SA, вас на ставят на эту позицию на проекты, а тайтл в приличных… twitter.com/i/web/status/1…
11:38Поэтому надо этот опыт откуда-то брать. Из решений: всякие студенческие проекты, проекты для себя. Еще круто себе н… twitter.com/i/web/status/1…
11:40Пока вы ищете ментора, круто проходить всякие курсы по облачным технологиями, потому что на комитете будут спрашива… twitter.com/i/web/status/1…
11:41Курс номер 1: Amazon Cloud Architect Associate
udemy.com/aws-certified-…
Считаю, что 12 баксов за такой курс - это просто даром
Курс номер 2: coursera.org/specialization…
Курс очень крутой с лабораторными работами. Учат строить масштабируемые, безо… twitter.com/i/web/status/1…
Курс номер 3: udemy.com/how-to-become-…
Не могу про него пока ничего сказать, стоит в плане
Тем, кто тихонько фалломорфирует от количества страниц в книгах и обьемов курсов, цитирую ментора: "А фигли вы хоте… twitter.com/i/web/status/1…
11:50Также полезно изучать reference architectures, Амазон много для этого делает: aws.amazon.com/architecture/
12:13# Среда 26 твитов
Когда я начинал писать под Android(а это было в 2009 году), приложения были простыми и собирались антом или вообще… twitter.com/i/web/status/1…
10:20Теперь Android приложение - это многомодульный комбайн с DI, кодогенерацией, Gradle, юнит-тестами и архитектурой(пр… twitter.com/i/web/status/1…
10:21Особенно упоротые товарищи умудряются использовать микро-сервисы в Андроид приложениях. Не от хорошей жизни конечно.
10:22Я нежно любил андроид-разработку до тех пор, пока не начал писать мобильные приложения на React-Native. Не смотря н… twitter.com/i/web/status/1…
10:27В Android/iOS все через жопу несмотря на то, что платформам 10 лет. Вьюха в одном месте, ее внутреняя логика в друг… twitter.com/i/web/status/1…
10:28И тысячи девелоперов спорят "А где должна находится навигация, в презентере или в интеракторе? А может мне нужен ро… twitter.com/i/web/status/1…
10:29В телеграмме есть чатик, где обсуждают только эти вопросы. 2000 человек занимаются каждый день интеллектуальной мастурбацией.
10:30В соседнем чат про react-native конечно тоже хватает идиотских вопросов "а что лучше, сага или редакс". Да пофигу,… twitter.com/i/web/status/1…
10:34Я кстати не говорю, что архитектурой мобильных приложений не надо заниматься. Конечно надо. Только мы с вами позавч… twitter.com/i/web/status/1…
10:35Кстати потому, что мобильные приложения теперь большие и сложные, и пишутся большими командами, их разработка стано… twitter.com/i/web/status/1…
10:41Ну то есть два года назад у вас был стандарт: Dagger, RxJava, Retrofit, обмазываетесь аннотейшн-процессорами и впер… twitter.com/i/web/status/1…
10:43Теперь у нас Koin(нафиг кодогенерацию!) вместо Dagger, KHttp вместо Retrofit, Kotlin Coroutines вместо RxJava. И бе… twitter.com/i/web/status/1…
10:44Нативные девелоперы(которые Java/Kotlin/objective-c/Swift) очень не любят любую кроссплатформу, до тошноты. Это бол… twitter.com/i/web/status/1…
10:46Пользователю нужно, чтобы приложение решало задачу и не лагало. Бизнесу нужно потратить меньше денег и получить быс… twitter.com/i/web/status/1…
10:47Раньше из опций была только Кордова, хотя некоторые российские банки даже на ней умудрялись релизить свои банк-клие… twitter.com/i/web/status/1…
10:49Из жизни: надо было написать мобильные приложение для работы с NFC для проверки идеи. Естественно, был выбран React… twitter.com/i/web/status/1…
10:51Это я молчу про то, что крупные конторы регулярно продают кросс-платформу и успешно ее сдают. И сами клиенты просят.
10:55Кстати, только между нами: архитекторы(которые SA) зачастую клиенту предлагают не ту технологию, которую им лучше п… twitter.com/i/web/status/1…
10:56в React Native есть еще одно преимущество: людей, которые знают React много и их легко переучивать на RN. На трех т… twitter.com/i/web/status/1…
10:57Тут в реплаях говорят, что RN медленный. Если вы rsa-ключи считаете в js, то конечно медленный. Уносите его в натив… twitter.com/i/web/status/1…
11:05Если кому-то хочется научиться в React-Native, то очень советую вот этот курс: udemy.com/the-complete-r…
11:06@backendsecret вот да, нативщик там маст хэв, потому что на стыке нативных компонентов ужасный бардак и невосместим… twitter.com/i/web/status/1…11:06
Чтобы вы не думали, что React Native - это silver bullet, расскажу про проблемы:
11:083. Нативный бридж для iOS хоть и поддерживает свифт, но прокладу на objective-c вам написать все равно придется
4.… twitter.com/i/web/status/1…
Завтра вечером выступаю в Минске с рассказом про рефакторинг, приходите)
events.dev.by/gdg-minsk-sept… …
Давайте выясним наконец, когда умрет нативная разработка под мобилы?
19:41# Четверг 2 твита
@backendsecret Думаю что будет как с desktop, почти все в web, за небольшим исключение: messenger, IDE, Photoshop etc.7:31
Народ, сорри, долгая дорога до Минска не дала сегодня потвитить, а сейчас ухожу выступать) Продолжение завтра)
19:04# Пятница 19 твитов
@backendsecret guess who? pic.twitter.com/KQmC0BAOPq0:00
Доброго вечера, коллеги. На пятницу и выходные планировал поговорить с вами про публичные выступления.
22:18Наверно, все знают, что есть много всяких разных программистких конференций, тиап дройдконов, Amazon re:invent, Goo… twitter.com/i/web/status/1…
22:21Про всяких продукт менеджеров понятно, зачем они там выступают - продавать продукт. Зачем это обычному программисту… twitter.com/i/web/status/1…
22:23Во-первых, как говорил профессор Фейнман, лучший способ чему-то научиться, это учить этому других. Чтобы про что-то… twitter.com/i/web/status/1…
22:24Во-вторых, это престижно. Для Android-девелоперов самыми престижными являются конференции Droidcon, которые проходя… twitter.com/i/web/status/1…
22:26Для Java-девелоперов это всяческие Java One, JavaZone, JCrete(из зарубежных), Joker и JPoint из российских. Конфере… twitter.com/i/web/status/1…
22:27В-третьих, это бесплатные путешествия, если конференция или ваш работодатель их вам оплачивает.
22:29В-четвертых, и наверное в самых важных - навык публичного выступления ценен сам по себе. Чтобы правильно это делать… twitter.com/i/web/status/1…
22:30Кстати, это критический навык для архитекторов: вам с продажниками к клиенту ходить и обьяснять, почему ваше решение это то, что ему нужно.
22:31Кроме того, с определенного уровня за выступления начинают платить, но для этого надо много и успешно выступать.
22:32Есть разница в менталитетах между русскоязычной и западной аудиторией: нам интересны кишки и подробности, им - обзорные и вводные доклады.
22:33Также в Польше и Венгрии очень трудно от аудитории добиться ответом на вопросы, польские коллеги говорили, что дело опять же в менталитете.
22:33Алсо, международный язык выступлений - английский. Его будут понимать везде, и выступать на нем почти на любых межд… twitter.com/i/web/status/1…
22:35Как и где учить английский не спрашивайте, я систематически ничего особенного не делал, но свой B2+ имею.
22:36Начать делать публичные выступления довольно просто: берете тему, в которой хорошо разбираетесь и рассказываете про… twitter.com/i/web/status/1…
22:37Если коллег нет, или в компании нет культуры, или вы фрилансер, то есть локальные митапы. Коммьюнити всегда рады и помогают выступать.
23:37Кроме практики, хорошо бы знать теорию, на этот предмет помогают всякие тренинги. JUG.ru для спике… twitter.com/i/web/status/1…
23:38Еще можно смотреть ютуб, я вот кое-чему научился на "Искусстве харизмы"
23:40# Суббота 3 твита
@backendsecret Тренинги работают, когда человек хочет прокачаться. Если не хочет — толку не будет, к сожалению.11:51
Еще про выступления: я верю, что выступления могут сделать лучше любого разработчика. Потому что вы лучше разберете… twitter.com/i/web/status/1…
12:01Пользуясь случаем, порекламирую нашу мобильную конференцию. Call For Paper еще открыт до 1 октября, мы ждем ваших д… twitter.com/i/web/status/1…
12:02# Воскресенье 4 твита
Why public speaking is important for developers, a great summary in Russian. twitter.com/backendsecret/…11:04
Кстати, на конференции надо ходить, не планируя работать там. Общение отнимает очень много сил, на покодить их уже… twitter.com/i/web/status/1…
11:06Сегодня пришло наконец письмо, теперь я Certified Google Cloud Architect. Вроде большое достижение, надо его правильно теперь применить)
22:15Осталось 2 часа до полуночи, значит мое время здесь кончилось) Жаль, что много не успел рассказать. Если вам было и… twitter.com/i/web/status/1…
22:16# Ссылки
other
- https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=513486
- https://medium.com/@nvashanin/stakeholders-in-software-architecture-6d18f36250f9
- https://medium.com/@nvashanin/books-in-software-architecture-6ad974e524ce
- https://medium.com/@dzigorium
- https://www.amazon.com/Software-Architecture-Practice-3rd-Engineering/dp/0321815734
- https://www.amazon.com/Things-Every-Software-Architect-Should/dp/059652269X/
- https://www.udemy.com/aws-certified-solutions-architect-associate/
- https://www.udemy.com/how-to-become-an-outstanding-solution-architect/
- https://www.udemy.com/the-complete-react-native-and-redux-course/
- https://www.coursera.org/specializations/gcp-architecture
- https://aws.amazon.com/architecture/
- https://facebook.github.io/react-native/showcase.html
- https://facebook.github.io/react-native/docs/native-modules-ios
- http://myview.java/
- http://myfragment.java/
- http://mymodel.java/
- https://events.dev.by/gdg-minsk-september-meetup
- http://jug.ru/
- https://bookmate.com/upload