Современная разработка программного обеспечения

Modern SD

Дискуссии о разработке программного обеспечения. Телеграм-канал @modernsd. Олег Сорока, Виктор Фабриченко, Филипп Дельгядо, Виталий Шароватов, Лиза Царева, Иван Чернов, Андрей Бутов, Вячеслав Ковалев, Вячеслав Слинько. Agile, Software Development, Информационные системы.

  1. EPISODE 1

    Научный подход к менеджменту

    2021-02-10 Какая цель работы фирмы? Удовлетворить потребность пользователя. Если потребность сейчас не удовлетворяется, то мы дописываем код, исходя из этой необходимости пользователю. OKR сюда не вписывается. Что может сделать менеджер с потоком задач? Изменить содержимое задач. Примеры:   Делать меньше или больше.   Делать то, что нужно или не нужно пользователю Изменить порядок выполнения задач. Примеры:   Брать по одной задаче за раз.   Или вообще не делать некоторые задачи. Изменить скорость выполнения задач. Примеры:   Является ли наш фреймворк средством контроля нерадивых работников?   Если так, то это входит в конфликт с тем, что все современные фреймворки доверяют команде. OKR не влияет на #1 и #2. Но и про #3 не говорит. Как разобрать практику и добраться до принципа? Анализ: определяем, что мы исследуем.   OKR - что мы хотим получить и как мы протестируем (проверим), получили мы это или нет. Синтез: где и как это можно использовать и можно ли использовать вообще.   Сформулировать тесты до работы полезно: это дешевле и можно подумать как сделать то же самое с меньшими ресурсами. Проблема не в блоках обработки информации, а в каналах передачи информации. В каналах возникают потери информации и они приводят к тому, что мы можем начать делать не то, что нужно пользователю. Best practices ввел Тейлор, с оговоркой, что они применяются только к физическому труду, а не интеллектуальному. Совет: разбирай best practices до составляющих и пойми основную идею, чтобы понимать зачем best practices были придуманы. Если их применять в лоб к интеллектуальному труду, то работать они не будут из-за разного контекста. Best practices применительно к физическому труду работают из-за того, что этот труд находится ближе к физическому миру, чем труд интеллектуальный, а законы физического мира одинаковы (а значит и контекст одинаков для физического труда). Менеджер не может управлять действиями людей, он может управлять только взаимодействиями людей. Как улучшать систему? Смотреть где самое узкое место и если затраты на улучшение меньше получаемого эффекта, то улучшаем. Повторяем поиск узкого места пока это экономически целесообразно. Метафора практик и корзин Есть 200-300 практик. Один или два автора берут 20-30 из них и обьединяют в непротиворечивую систему (корзину). Так появились Scrum (впихнем все work items сразу), Kanban (work items берутся по одному, а не впихиваются все сразу, а если они маленькие, то появляется continuous integration), Less и т.п. Цель: построить свою систему, уложить в своей голове и понимать почему это работает. Если понимаешь до уровня физических законов, то все ок. Teamlead roadmap в текущем виде не поможет: там слишком много корзин, а связи между ними непонятны. Нужна логическая система, понимание. Как стать лучше: только учиться. Метафора охоты на работу Люди разводят работу, чтобы не стать ненужными. Они думают, что в отсутствии работы они умрут. В открытом мире они не умрут. Наоборот, они будут более востребованы, чтобы охотиться на работу (возможно, что в другом месте). Метафора химиков и алхимиков Пока менеджмент находится на уровне алхимиков, а не химиков: мало логического обоснования и математического аппарата. Упоминаемые книги     «Пятая дисциплина» Питер Сенге (читай всю, а особенно посмотри пример про пивзавод - максимизация эффективности отдельных этапов не дает максимизации эффективности всей системы).     «Экстремальное программирование» Кент Бек     «Популярная информатика» Чурсин Николай

    2h 13m
  2. EPISODE 2

    Как оргструктура убивает ценность

    2021-02-16 00:00 - роль степени близости к чаяниям пользователя для бизнес результата 02:51 - дисфункция когда задачи менеджмента это минимизация факапов 04:20 - почему стараются делать продуктовые команды, минимизация потерь информации 07:40 - value-stream map vs текущая орг структура 08:17 - вопрос про активности заранее чем возникнет проблема у пользователя 09:35 - ответ: фичи как побочный эффект, отсылка к ТРИЗ, пример refund в Amazon 14:30 - вопрос какая есть альтернатива платформенным командам 15:29 - инвестиция в архитектуру (Conway's law) с учетом бизнес-составляющей, в знание домена и пользователя, формат команд в зависимости от того что получится, Logistics/Payments/UX, а не по Java/DBA/Admin 18:55 - вопрос как поделить input от запрос по командам 19:31 - трансляция user journey в user story, product owners, аналитики, ux servant 22:20 - вопрос product role vs команды 22:40 - есть доменные эксперты и кто то из них выполняет роль транслятора в user story; роль следует из того что пользователю нужен какой-то продукт и роль ux servant, интерпретатор пользователя 24:14 - product как компонент информационной системы, если продукты говорят что, а разработчики как, то через какое то время продукты будут не успевать генерировать что; 26:50 - как обеспечить наблюдаемость продакт принес не то или разработчик сделал не то, чтобы понять кого не хватает 28:42 - баланс полномочий и ответственности усли нужно убрать продакта 30:00 - как понять в каком состоянии находится система, проблемные места 31:00 - что если все растут 31:48 - стопор если упереться в количество знаний 33:20 - если нет времени умнеть, то нужно ограничивать поток задач 34:00 - блокер таких изменений если нет ощущения их необходимости, если есть поток ресурсов 38:00 - опыт @vfabr что тот кто в самом верху не против инициировать изменения, главные противники изменений среднее звено 41:54 - отсылка к STATIK (видео, статья, книга (eng), книга (rus)) и kanban maturity model (1, 2, 3) 43:39 - учет хрупкости, ригидности и гибкости при большом зазоре между уровнями компании, отделов, команды, человека; 45:20 - эволюционность vs трансформационный подход, эффект отторжения 46:25 - credibility для способности внести изменения 47:10 - bring your own device, shadow it, гильдии, trello 50:25 - inversion of control для процессов 52:00 - как способствовать переходу количества изменений в качественное изменение 57:00 - вопрос как научиться строить value-stream map 59:24 - value-stream mapping vs разделение по domain областям 1:03:00 - unknown unknown => t-shape; known unknown => specialization 1:05:00 - изменения, эволюция ментальных моделей => t-shape/роли 1:07:00 - сделать хоть что-то с тем что есть чтобы появились вопросы и стало понятно что учить

    1h 12m
  3. EPISODE 3

    Роль тимлида, как чинить найм

    2021-02-23 00:00 - Виталий Шароватов - как давать расти (текст + доклад) 08:00 - cld как мост в сторону системных вещей 11:10 - кто такой тимлид 13:20 - на developer experience у тимлида нет времени 15:00 - фокус на том что кроме кода, либо кодить либо управлять 20:38 - тезис про 75/75 процентов 23:42 - может ли cto не иметь тех опыта 26:00 - должности vs роли vs компетенции 30:00 - карго культы в разработке по 32:40 - как нанимать  38:00 - test driven найм 39:00 - роль референсов в найме, уровень мудачества 44:00 - руководство по общению с собой 45:00 - испытательный срок, положение об испытании 52:00 - что делать рукрутеру если найм сломан - обучать нанимающих менеджеров 57:00 - уровень доверия тимлиду, уменьшение затрат на найм 59:00 - требования к вакансии: какая работа vs stack 1:07:17 - задача о разборчивой невесте в приложении к найму 1:10:00 - понимание какая работа требуется от кандидата чтобы понять нужен ли найм 1:12:40 - если не устраивает результат то можно делать наоборот, анонс доклада @vfabr про практики

    1h 19m
  4. EPISODE 5

    Выступления, github effect, как заставить работать закон Литтла

    2021-03-09 00:00 - обучение выступлениям 04:54 - прозрачность и github effect 10:20 - доклады по запросу и их монетизация 21:00 - что делать когда пришел в команду а там все плохо 23:00 - пример когда результата нет в команде 23:50 - первое изменение возможно через 3 месяца 24:05 - проверить наличие обратных связей 25:06 - проверить обмен информацией между бизнесом и разработкой 26:40 - понять про потоки, СМО и т.п. (см выпуск про ПУСКИЛИЦ от Олега Сороки) 27:00 - scrum vs kanban 28:55 - закон Литтла для систем без тренда 30:00 - время выполнения 32:20 - замер до того как что-то делать 35:30 - система в которой будут улучшения 37:50 - по очереди: чтобы работало => правильно => быстро 38:15 - аналогия со стрельбой из орудия 39:40 - фейлы как источник информации, запуск изменений, показ примера 43:30 - начать с стрельбы и коррекции 45:05 - повторение того что нужно делать в начала 46:21 -  4-16 часов на задачу 47:20 - кто дробит задачи: дальность стрельбы 54:17 - estimates, результат, в конце проектирования декомпозиция с оценками, в конце исследования ответ на вопрос 57:10 - картбланш для тимлида, пример как перехватить инициативу 1:00:00 - возможные возражения, ttm меньше, но прогнозирование больше 1:03:50 - в итоге начнет работать закон Литтла и можно будет пользоваться простыми инструментами из книжек 1:08:00 - мелкие брать, крупные нет  => возможность оптимизации 1:13:50 - арбитр 1:16:00 - карт-бланш 1:21:02 - найм ответственного 1:25:48 - вопрос про scrum 1:28:00 - выдают 0 задач но помогают другим 1:31:40 - недопонимание при вкидывании крупных задачах 1:33:20 - почему 2 дня 1:45:20 - разница с канбаном, пример из книги 1:48:30 - переключение контекста и планирование 1:50:00 - оперирование числом задач вместо оценок, вместо графиков для предсказуемости: число задач 1:55:23 - уязвимость систем после оптимизации, эффективность vs стабильность 1:57:04 - цвета задач для blameless 2:01:05 - взгляд со стороны как арбитр встреч в зуме

    2h 4m
  5. EPISODE 6

    Гендерное неравенство, обучение и фундаментальные знания

    2021-03-16 03:54 - гендерное неравенство 35:00 - экспертиза: вглубь vs вширь 41:56 - навык получения доменных знаний 49:30 - обучение через "изобретение велосипеда" 53:57 - стиль обучения YCombinator 57:00 - ориентиры для развития 1:12:18 - игра с нулевой суммой 1:23:58 - когда не поздно делать карьерный pivot 1:27:15 - survivorship bias 1:28:18 - хорошо где нас нет 1:29:00 - отсылка на главу про планирование (Глава 2) 1:30:00 - цели: в работе vs вне работы 1:33:55 - деньги как ресурс для достижения целей 1:41:50 - разрешение противоречий личных интересов и интересов компании 1:44:22 - польза фундаментальных знаний и необходимость reality check 1:50:27 - проще изучать не значит игнорировать остальное 1:53:32 - истории самому себе => интерес 1:56:00 - мультидисциплинарность 2:02:00 - квадраты незнания 2:20:25 - Web 2.0 2:27:38 - распределенные базы данных 2:47:15 - xmpp

    3h 1m
  6. EPISODE 7

    Задачи, исследования, тестирование

    2021-03-23 3:44 - начало 6:03 - формулировки вопросов: про типы задач и про задачи-research'и, proof of concept и т.п. 9:20 - начало ответа: про смысл исследования и фреймирование инструментами 14:00 - выбор информационной модели 15:28 - как должен выглядеть результат research задачи 17:00 - про 2 этапа исследования: получение модели проблемы и выбор инструмента 19:00 - почему у research такой цикл 19:50 - на сколько мелко бить задачи (разработка, проектирование, исследование) 26:30 - отличия research задач от проектирования и разработки 27:55 - definition of done исследования (вопрос, ответ, обоснование) 41:28 - что такое информационная модель 50:25 - что делать с рисками в оценке времени 57:31 - вопрос про платформенные команды 1:19:00 - тесты 1:39:00 - итог про тестирования 1:43:00 - ценность разных точек зрения 1:46:00 - еще про тестирование 1:47:40 - важность наличия тестовой системы 1:59:00 - про риск при выкатке 2:11:00 - мониторинговые тесты

    2h 30m
  7. EPISODE 8

    Качество, надежность и постмортемы

    2021-03-30 00:00 - как реагировать на инциденты, постмортемы, резервирование 18:20 - аналогия с пробоем конденсатора 21:00 - что такое постмортем 22:55 - логистическая кривая 24:53 - предсказание пробоя 25:24 - принцип разбора ошибок 27:20 - нужна постоянная тренировка поиска корневых причин на ошибках, редкий постмортем малополезен 32:09 - много постмортемов => более надежная система 37:21 - подытог 39:05 - спираль качества 40:20 - нужен ли поиск виновных 49:20 - проблема экспоненциальных процессов 51:08 - нет единой корневой причины 53:00 - время жизни без техобслуживания и минусы автоматизации 58:21 - социотехническая система должна делаться с запасом возможностей - не слишком надежна, а достаточно надежна 01:00:36 - стабильность vs ригидность и jira sunk cost fallacy 01:02:40 - итерации в найме 01:07:20 - еще раз про поиск виновных 01:09:00 - нельзя просто так взять и стать blameless 01:13:28 - и еще раз про поиск виновных

    1h 49m
  8. EPISODE 9

    Стратегия, структура, бюджетирование, встречи

    00:50 - вопрос про проектный офис, стратегирование, планы, подбор фреймворка 04:41 - ответ 09:35 - резюмирование ответа 11:50 - пример сценария на основе матричной структуры 14:40 - поощрение vs централизация инициативы 19:38 - оценка перспективности бизнес идеи: стартапы vs некоторые продуктовые компании 26:40 - бюджетирование это хорошо или плохо 33:10 - предварительный анонс тем онлайн митапов 35:20 - исследование токсичного поведения в компании 42:46-47:46 - вырезанный кусок 48:50 - организация преподавания в компании 59:50 - снова про проекты 01:03:00 - про рабочие встречи у которых нет четкой темы 01:09:42 - вопрос про процессы и cargo scrum - время vs фокус, PDCA 01:16:46 - scrum как обертка, пример ситуации когда командам он неактуален 01:23:20 - трата сил на оценки задач 01:32:00 - продуктовая грамотность vs инженерная культура 01:37:30 - влияние предсказательной силы 01:39:00 - огорчение от осознания неэффективности действий программистов внизу цепочки 01:41:00 - костыль в виде A/B тестов 01:43:33 - пример внедрения A/B тестов в Badoo (ледокол неизвестности) 01:48:00 - про горизонт окупаемости в 10 лет 01:50:00 - Net Income Per Employee (NIPE) и тп 01:52:47 - методы приоретизации тасок на примере Weighted Shortest Job First (WSJF) 01:58:30 - полезно ли вообще логирование времени

    2h 3m

About

Дискуссии о разработке программного обеспечения. Телеграм-канал @modernsd. Олег Сорока, Виктор Фабриченко, Филипп Дельгядо, Виталий Шароватов, Лиза Царева, Иван Чернов, Андрей Бутов, Вячеслав Ковалев, Вячеслав Слинько. Agile, Software Development, Информационные системы.