Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Practical microtasks

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Practical microtasks

Avatar for Sobolev Nikita

Sobolev Nikita

February 10, 2020
Tweet

More Decks by Sobolev Nikita

Other Decks in Programming

Transcript

  1. Наверное, есть некоторая проблема > Теперь я - тимлид, но

    почему мне так плохо? > Как вырасти из разработчика в тимлида и жить с этим дальше
  2. Наверное, есть некоторая проблема > Теперь я - тимлид, но

    почему мне так плохо? > Как вырасти из разработчика в тимлида и жить с этим дальше > Как я не усидел на двух стульях и нашел третий
  3. Наверное, есть некоторая проблема > Теперь я - тимлид, но

    почему мне так плохо? > Как вырасти из разработчика в тимлида и жить с этим дальше > Как я не усидел на двух стульях и нашел третий > Кто такие тимлиды, и какова их реальная задача?
  4. О чем поговорим со страдающими инженерами? > Про основу автоматизации

    управления > Слухи, скандалы, сплетни и домыслы
  5. О чем поговорим со страдающими инженерами? > Про основу автоматизации

    управления > Слухи, скандалы, сплетни и домыслы > Реальные проблемы на пути
  6. О чем поговорим со страдающими инженерами? > Про основу автоматизации

    управления > Слухи, скандалы, сплетни и домыслы > Реальные проблемы на пути > Разбор типичных ситуаций
  7. Задача на неделю > Может занять две. Или три. Или

    год > Будет конфликтовать с другими
  8. Задача на неделю > Может занять две. Или три. Или

    год > Будет конфликтовать с другими > Может сожрать лишние ресурсы
  9. Задача на неделю > Может занять две. Или три. Или

    год > Будет конфликтовать с другими > Может сожрать лишние ресурсы > Непрозрачна: нужен наш контроль
  10. Задача на час > Маловероятно займет больше > Не будет

    конфликтовать с другими > Очень скромная по ресурсам
  11. Задача на час > Маловероятно займет больше > Не будет

    конфликтовать с другими > Очень скромная по ресурсам > Прозрачна: наш контроль не нужен
  12. Что можно делать с прозрачностью? > Мотивировать людей > Собирать

    статистику и предсказывать > Общаться с заказчиками
  13. Что можно делать с прозрачностью? > Мотивировать людей > Собирать

    статистику и предсказывать > Общаться с заказчиками > Настраивать нотификации и быть спокойным
  14. Что на самом деле сложно? > Управлять большим количеством задач

    > Гонять CI, делать ревью кода > Архитектура
  15. Что на самом деле сложно? > Управлять большим количеством задач

    > Гонять CI, делать ревью кода > Архитектура > Сохранять стабильность сборки
  16. Что на самом деле сложно? > Управлять большим количеством задач

    > Гонять CI, делать ревью кода > Архитектура > Сохранять стабильность сборки > Деплоить и откатывать, мониторить
  17. 44

  18. Основные требования > Удобно создавать Task Chains > Выставить свой

    статус > Отказаться от задачи > Настроить напоминалки
  19. Основные требования > Удобно создавать Task Chains > Выставить свой

    статус > Отказаться от задачи > Настроить напоминалки > Настроить таймауты
  20. Необходимый список ботов > Бот для релизов > Бот для

    rebase > Бот для работы с задачами > Бот для управления программистами
  21. Необходимый список ботов > Бот для релизов > Бот для

    rebase > Бот для работы с задачами > Бот для управления программистами > Бот для ревью кода
  22. CI становится узким местом Время 0 10 20 30 40

    Июль Время: 15 минут Время: 15 минут
  23. CI становится узким местом Время 0 10 20 30 40

    Июль Время: 8 минут Время: 15 минут Время: 15 минут
  24. test: script: # Building test image and saving the cache:

    - docker pull "${IMAGE_NAME}:dev" - docker tag "${IMAGE_NAME}:dev" "${PROJECT_NAME}:dev" # The logic itself: - docker-compose build - docker-compose run --rm web test # Pushing back the result for future runs: - docker tag "${PROJECT_NAME}:dev" "${IMAGE_NAME}:dev" - docker push "${IMAGE_NAME}:dev"
  25. test: script: # Building test image and saving the cache:

    - docker pull "${IMAGE_NAME}:dev" - docker tag "${IMAGE_NAME}:dev" "${PROJECT_NAME}:dev" # The logic itself: - docker-compose build - docker-compose run --rm web test # Pushing back the result for future runs: - docker tag "${PROJECT_NAME}:dev" "${IMAGE_NAME}:dev" - docker push "${IMAGE_NAME}:dev"
  26. test: script: # Building test image and saving the cache:

    - docker pull "${IMAGE_NAME}:dev" - docker tag "${IMAGE_NAME}:dev" "${PROJECT_NAME}:dev" # The logic itself: - docker-compose build - docker-compose run --rm web test # Pushing back the result for future runs: - docker tag "${PROJECT_NAME}:dev" "${IMAGE_NAME}:dev" - docker push "${IMAGE_NAME}:dev"
  27. test: script: # Building test image and saving the cache:

    - docker pull "${IMAGE_NAME}:dev" - docker tag "${IMAGE_NAME}:dev" "${PROJECT_NAME}:dev" # The logic itself: - docker-compose build - docker-compose run --rm web test # Pushing back the result for future runs: - docker tag "${PROJECT_NAME}:dev" "${IMAGE_NAME}:dev" - docker push "${IMAGE_NAME}:dev"
  28. release-image: image: wemakeservices/kira-release:latest before_script: - docker pull "${IMAGE_NAME}:latest" - docker

    pull "${IMAGE_NAME}:dev" - docker build -t "${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:dev" --build-arg DJANGO_ENV=production -f docker/django/Dockerfile . script: - docker push "${IMAGE_NAME}:latest"
  29. release-image: image: wemakeservices/kira-release:latest before_script: - docker pull "${IMAGE_NAME}:latest" - docker

    pull "${IMAGE_NAME}:dev" - docker build -t "${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:dev" --build-arg DJANGO_ENV=production -f docker/django/Dockerfile . script: - docker push "${IMAGE_NAME}:latest"
  30. release-image: image: wemakeservices/kira-release:latest before_script: - docker pull "${IMAGE_NAME}:latest" - docker

    pull "${IMAGE_NAME}:dev" - docker build -t "${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:dev" --build-arg DJANGO_ENV=production -f docker/django/Dockerfile . script: - docker push "${IMAGE_NAME}:latest"
  31. release-image: image: wemakeservices/kira-release:latest before_script: - docker pull "${IMAGE_NAME}:latest" - docker

    pull "${IMAGE_NAME}:dev" - docker build -t "${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:latest" --cache-from="${IMAGE_NAME}:dev" --build-arg DJANGO_ENV=production -f docker/django/Dockerfile . script: - docker push "${IMAGE_NAME}:latest"
  32. Уже лучше Время 0 10 20 30 40 Было Стало

    Время: 15 минут Время: 15 минут
  33. Уже лучше Время 0 10 20 30 40 Было Стало

    Время: 4 минут Время: 15 минут Время: 15 минут Время: 15 минут
  34. Уже лучше Время 0 10 20 30 40 Было Стало

    Время: 5 минут Время: 8 минут Время: 4 минут Время: 15 минут Время: 15 минут Время: 15 минут
  35. class NodeVisitor(object): def visit_Num(self, node: ast.Num) -> None: ... def

    visit_Bytes(self, node: ast.Bytes) -> None: ... def visit_Str(self, node: ast.Str) -> None: ... def visit_NameConstant(self, node) -> None: ...
  36. Подзадачи 2. Новый умный слой абстракции: github.com/wemake- services/wemake-python-styleguide/issues/1135 1. Новая

    методика подсчета покрытия: github.com/ wemake-services/coverage-conditional-plugin 105
  37. Подзадачи 2. Новый умный слой абстракции: github.com/wemake- services/wemake-python-styleguide/issues/1135 1. Новая

    методика подсчета покрытия: github.com/ wemake-services/coverage-conditional-plugin 3. Постепенный рефакторинг: https://github.com/ wemake-services/wemake-python-styleguide/issues/ 1141 105
  38. Проводим исследования > Понять, какие зависимости можно удалить: github.com/wemake-services/ wemake-python-styleguide/issues/1139

    > Добавить полезное из другой библиотеки: github.com/wemake- services/wemake-python-styleguide/ issues/422 > Проверить, что зависимости работают с python3.8: github.com/wemake-services/ wemake-python-styleguide/issues/1138
  39. Полезные ссылки > Microtasks at GitHub: dev.to/mscccc/ how-we-use-ship-small-to-rapidly- build-new-features-at-github-5cl9 >

    Microtasks at Google: google.github.io/eng-practices/ review/developer/small-cls.html > Program development by stepwise refinement: dl.acm.org/doi/ 10.1145/362575.362577