Microsoft To-Do

Разбор Полётов

👋  Меня зовут Алексей

Senior Software Development Engineer

4 years building To-Do Web app

Спасибо

Организаторам

Зрителям

Оле и Диме

Паблику "Мемы про котов (по ржать)" 

Котам

All opinions are mine

and do not represent opinions of my employer

Самые важные вопросы

А сколько ты зарабатываешь?

А вас заставляют работать на винде?

А правда, что можно получить MacBook?

Нет

Да

Microsoft To-Do

Простой список задач

Нативные приложения + веб клиент

iOS, Android, Mac, Windows

React

Redux

Redux-actions

ES6 + TypeScript

eslint plugins

ImmutableJS

Куча самописных библиотек (NIH)

Reselect

Технологии

Толстый клиент

Сложная система

Телеметрия

Тестируемый конечный автомат (FSM)

Работает в офлайн-режиме по-умолчанию

Дельта-CRDT синхронизация

Целостность данных поддерживается на клиенте

Интегрировано в Outlook

Сложные сложности

Координация нескольких вкладок

  • Бизнес-контекст

  • Инженерные истории

  • Архитектурка

Про Бизнес

Июнь 2015: Microsoft покупает Wunderlist

Март 2016: Я прихожу пилить To-Do

2016: Фигачим релизную версию 

2017: Фи значит фичи 

2018: К = Качество 

2019: Передаем проект на поддержку*

2020: Добро пожаловать в GitHub

Краткое содержимое предыдущих эпизодов

Лёха, хватит читать слайды...

Попей водически

Ты говоришь сам с собой, кек

Microsoft покупает Wunderlist

Я прихожу пилить To-Do

Фигачим релизную версию 📦

Фи значит фичи 🐞

К = Качество 🍉

Передаем проект на поддержку* 😱

Успешный успех? 

За это время...

Сменилось 3 директора

5 реоргов

От оригинальной команды осталось 30%

Сменилось 3 CVP

Родилось 9(?) детей

Про разработку

Команда Шрёдингера

6 ± 4 человека

ClojureScript

Зачем, если можно сделать так же на JS?

NIH = Not Invented Here

Backend и Compliance

Независимые компоненты

Часовые пояса

Авторизация

Производительность

Архитектурные практики

Архитектуровое

Миф 1:
Централизованное принятие решений заранее

Реальность 1:
Контроль сложности и направления развития в моменте

Миф 2:
Эволюция сама всё порешает

Реальность 2:
Эволюция это медленно.
Направленное изменение = инженерия

Миф 3:
Для управления нужны сложные процессы

Реальность 3:
Базовые практики дадут 80% результата

Миф 4:
Архитектура это про технологии

Реальность 4:
Архитектура это про организацию и коммуникации

Повторяйте за мной:

Риски

Контроль через стандартизацию

Buy vs Build

 Критические атрибуты качества

Я буду говорить ротом

Безопасность

Люди

Ручные Инструменты

Список "проблем" с оценкой затрат, выгод и частоты проявления

ADR - Architecture Decision Records

Список издержек и "костылей" (trade-offs & workarounds)

Чеклисты

В порядке полезность/цена внедрения

Внутренний обмен знаниями

C4 + data flow диаграмма 

А где про JS?

Microsoft To-Do

Web Architecture

Microsoft To-Do

React Practices

Спасибо!

Вопросы и обсуждение в Zoom