vvsevolodovich

17 сентября 2018, Россия

# Понедельник 45 твитов

Всем привет! На этой неделе с вами Владимир Иванов(@vvsevolodovich). Я много чем занимаюсь: делаю мобильные прилож… twitter.com/i/web/status/1…

10:10

Мы с вами поговорим вот о чем:

10:10

17-18: Архитектура ПО. Зачем, как, где учиться, что читать
19-20: Мобильные приложения: насколько это весело, как с… twitter.com/i/web/status/1…

10:12

Давайте начнем с историй провалов: жил-был один стартап, делал мессенджер. Роль архитектора там исполнял менеджер п… 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…

11:23

Я сам читал 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 баксов за такой курс - это просто даром

11:41

Курс номер 2: coursera.org/specialization…
Курс очень крутой с лабораторными работами. Учат строить масштабируемые, безо… twitter.com/i/web/status/1…

11:43

Курс номер 3: udemy.com/how-to-become-…
Не могу про него пока ничего сказать, стоит в плане

11:47

Тем, кто тихонько фалломорфирует от количества страниц в книгах и обьемов курсов, цитирую ментора: "А фигли вы хоте… 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:08

3. Нативный бридж для iOS хоть и поддерживает свифт, но прокладу на objective-c вам написать все равно придется
4.… twitter.com/i/web/status/1…

11:10

Завтра вечером выступаю в Минске с рассказом про рефакторинг, приходите)
events.dev.by/gdg-minsk-sept…

13:47

Давайте выясним наконец, когда умрет нативная разработка под мобилы?

19:41

# Четверг 2 твита

@backendsecret Думаю что будет как с desktop, почти все в web, за небольшим исключение: messenger, IDE, Photoshop etc.
7:31

Народ, сорри, долгая дорога до Минска не дала сегодня потвитить, а сейчас ухожу выступать) Продолжение завтра)

19:04

# Пятница 19 твитов

Доброго вечера, коллеги. На пятницу и выходные планировал поговорить с вами про публичные выступления.

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