STN / Дневник разработки

Лог выполнения тестового задания для Стереос Групп

От первого запуска оркестратора до последней проверки. Хронология, решения и скриншоты — глазами автора.

30 октября 202611:40–17:0561 скриншот в исходном размере

Так как это одноразовый прототип, я не стал запускать работу во фреймворке NaCl - это излишне. Само задание является достаточно полной спецификацией, для MVP будет достаточно уровня технических задач. Поэтому использую оркестратор (https://github.com/ITSalt/PepperSkills/tree/e1134fdf92346a2911163042b74d8a47b7831b46/plugins/pepper-orchestrator) для реализации MVP.

Запуск и планирование

1. Время: 11:40. Запускаем инициацию программы, отвечаем на вопросы

Скриншот 01. 1. Время: 11:40. Запускаем инициацию программы, отвечаем на вопросы
Скриншот 011617 × 508 · Нажмите, чтобы увеличить
Скриншот 02. 1. Время: 11:40. Запускаем инициацию программы, отвечаем на вопросы
Скриншот 021623 × 458 · Нажмите, чтобы увеличить

2. Перезапускаем оркестратора с необходимыми правами

Скриншот 03. 2. Перезапускаем оркестратора с необходимыми правами
Скриншот 031623 × 421 · Нажмите, чтобы увеличить

Запускаем планирование задач по разработке

Скриншот 04. Запускаем планирование задач по разработке
Скриншот 041628 × 391 · Нажмите, чтобы увеличить

Отвечаем на ключевые вопросы:

Скриншот 05. Отвечаем на ключевые вопросы:
Скриншот 051623 × 614 · Нажмите, чтобы увеличить

Процесс разбиения спецификации на технически задачи запущен. Время: 11:54

Скриншот 06. Процесс разбиения спецификации на технически задачи запущен. Время: 11:54
Скриншот 061652 × 1192 · Нажмите, чтобы увеличить

Планирование заверешено, оркестратор рассказывает план:

Скриншот 07. Планирование заверешено, оркестратор рассказывает план:
Скриншот 071631 × 879 · Нажмите, чтобы увеличить

Получаем от оркестратора команду для запуска рабочей сессии и запускаем в отдельном терминале:

Скриншот 08. Получаем от оркестратора команду для запуска рабочей сессии и запускаем в  отдельном терминале:
Скриншот 083235 × 1124 · Нажмите, чтобы увеличить

Параллельно задаём оркестратору вопрос по возможному ускорению и возможности параллельного запуска задач. Это лучше делать уже после планирования - так у оркестратора есть весь необходимый контекст. Принцип “разделение задач” в действии.

Скриншот 09. Параллельно задаём оркестратору вопрос по возможному ускорению и возможности параллельного запуска задач. Это лучше делать уже после планирования - так у оркестратора есть весь необходимый…
Скриншот 091623 × 1075 · Нажмите, чтобы увеличить

Отвечаю “да”, оркестратор выполняет необходимые настройки и уведомляет рабочую сессию о произошедших изменениях самостоятельно:

Скриншот 10. Отвечаю “да”, оркестратор выполняет необходимые настройки и уведомляет рабочую сессию о произошедших изменениях самостоятельно:
Скриншот 103258 × 490 · Нажмите, чтобы увеличить

Оркестратор перестроил план на параллельное выполнение

Скриншот 11. Оркестратор перестроил план на параллельное выполнение
Скриншот 111626 × 962 · Нажмите, чтобы увеличить

Вот так выглядит рабочее пространство с запущенным оркестратором и сессиями, которыми он управляет:

Скриншот 12. Вот так выглядит рабочее пространство с запущенным оркестратором и сессиями, которыми он управляет:
Скриншот 123246 × 1288 · Нажмите, чтобы увеличить

Время 12:05, оркестратор управляет процессом:

Скриншот 13. Время 12:05, оркестратор управляет процессом:
Скриншот 131623 × 349 · Нажмите, чтобы увеличить
Скриншот 14. Время 12:05, оркестратор управляет процессом:
Скриншот 141623 × 328 · Нажмите, чтобы увеличить

Время 12:11, первые артефакты приянты:

Скриншот 15. Время 12:11, первые артефакты приянты:
Скриншот 151627 × 282 · Нажмите, чтобы увеличить

12:14. Агенты общаются между собой, а я прошу включить в план создание скриншотов при тестировании, чтобы посмотреть на то решение, которое будет при первом запуске и в самом конце, когда оркестратор объявит программу выполненной. Самому интересно какова будет пропасть между этими запусками :)

Скриншот 16. 12:14. Агенты общаются между собой, а я прошу включить в план создание скриншотов при тестировании, чтобы посмотреть на то решение, которое будет при первом запуске и в самом конце, когда…
Скриншот 163248 × 566 · Нажмите, чтобы увеличить

Оркестратор отчитывается о выполненной задаче и предлагает узнать, сколько времени осталось из дедлайна. Мечта любого чайка-менеджера :)

Скриншот 17. Оркестратор отчитывается о выполненной задаче и предлагает узнать, сколько времени осталось из дедлайна. Мечта любого чайка-менеджера :)
Скриншот 171627 × 578 · Нажмите, чтобы увеличить

Я не стал просить оценить время, по моему опыту - это бессмысленно, агенты сильно ошибаются в оценках. Чтобы они оценивали время реалистично, им нужны реальные точки опоры, реальные в плане замеров на конкретных задачах. Таким образом, можно сделать оценку сопоставимых действий более-менее точной. В этом проекте мы таких опор не задавали, поэтому оценку времени я не прошу его делать.

Разработка и независимое ревью

12:18 - на ревью пришёл первый код. Оркестратор запустил сабагента с чистым контекстом, который независимо ревьювит код:

Скриншот 18. 12:18 - на ревью пришёл первый код. Оркестратор запустил сабагента с чистым контекстом, который независимо ревьювит код:
Скриншот 182452 × 903 · Нажмите, чтобы увеличить
Скриншот 19. 12:18 - на ревью пришёл первый код. Оркестратор запустил сабагента с чистым контекстом, который независимо ревьювит код:
Скриншот 191630 × 1260 · Нажмите, чтобы увеличить

12:22 - оркестратор принял код дизайн-системы по заключению ревьювера

Скриншот 20. 12:22 - оркестратор принял код дизайн-системы по заключению ревьювера
Скриншот 201614 × 390 · Нажмите, чтобы увеличить

12:28 - независимая проверка даёт свои результаты. Оркестратор вернул на доработку движок. Причём, разостно потирая ручки, мол, сам агент движка лажанулся, несмотря на свои 53 теста, а мои падаваны всё обнаружили :)

Скриншот 21. 12:28 - независимая проверка даёт свои результаты. Оркестратор вернул на доработку движок. Причём, разостно потирая ручки, мол, сам агент движка лажанулся, несмотря на свои 53 теста, а мои…
Скриншот 212437 × 832 · Нажмите, чтобы увеличить

12:37 - движок принят. Попутный оркестратор нашел ситуацию, которую воспринимает как баг самого скилла оркестратора. В репозитории можно завести issues, там есть специальная инструкция, как это делать, и все такие issues проходят независимый разбор и ревью. Что-то действительно является багами, а что-то является глюками. Соответственно, я прошу оформить issue моего агента-оркестратора.

Скриншот 22. 12:37 - движок принят. Попутный оркестратор нашел ситуацию, которую воспринимает как баг самого скилла оркестратора. В репозитории можно завести issues, там есть специальная инструкция, как это…
Скриншот 221630 × 508 · Нажмите, чтобы увеличить

Саморефлексия агентов. Агент-разработчик попытался сделать пуш, но у него не получилось. Он пожаловался оркестратору. Оркестратор почесал репу, говорит: «Да, тебе пуш запрещен», но зато придумал обходной путь, как это сделать. Пока я не очень понимаю, как к этому относиться. С одной стороны, это хорошо, что агенты ищут обходные пути. С другой стороны, возможно, некорректно настроены права. В общем, это пока еще остается полем для размышления и потенциального улучшения скиллов оркестратора

Скриншот 23. Саморефлексия агентов. Агент-разработчик попытался сделать пуш, но у него не получилось. Он пожаловался оркестратору. Оркестратор почесал репу, говорит: «Да, тебе пуш запрещен», но зато…
Скриншот 233252 × 553 · Нажмите, чтобы увеличить
Скриншот 24. Саморефлексия агентов. Агент-разработчик попытался сделать пуш, но у него не получилось. Он пожаловался оркестратору. Оркестратор почесал репу, говорит: «Да, тебе пуш запрещен», но зато…
Скриншот 24818 × 352 · Нажмите, чтобы увеличить

Первые экраны и три клиента

12:58 - прошли первые визуальные тесты в браузере

Скриншот 25. 12:58 - прошли первые визуальные тесты в браузере
Скриншот 251632 × 572 · Нажмите, чтобы увеличить
Скриншот 26. 12:58 - прошли первые визуальные тесты в браузере
Скриншот 261440 × 900 · Нажмите, чтобы увеличить
Скриншот 27. 12:58 - прошли первые визуальные тесты в браузере
Скриншот 271440 × 900 · Нажмите, чтобы увеличить
Скриншот 28. 12:58 - прошли первые визуальные тесты в браузере
Скриншот 281440 × 900 · Нажмите, чтобы увеличить

Всего 10 скриншотов. На первый взгляд выглядят адекватно.

Скриншот 29. Всего 10 скриншотов. На первый взгляд выглядят адекватно.
Скриншот 29258 × 258 · Нажмите, чтобы увеличить

13:25 - агенты пишут README на основе реального поведения системы

Скриншот 30. 13:25 - агенты пишут README на основе реального поведения системы
Скриншот 302444 × 586 · Нажмите, чтобы увеличить

Попутно выясняется, что от меня ждут ответа на вопрос Р-1. Пытаюсь склонить оркестратора решить его самостоятельно, так как совершенно неохота погружаться в контекст и принимать какие-то решения :) Оркестратор ставит меня в очередь! Хорошо ещё, что талончик с номерком не выдал и музыку не заиграл :)

Скриншот 31. Попутно выясняется, что от меня ждут ответа на вопрос Р-1. Пытаюсь склонить оркестратора решить его самостоятельно, так как совершенно неохота погружаться в контекст и принимать какие-то…
Скриншот 31975 × 259 · Нажмите, чтобы увеличить

Но через некоторое время отвечает достаточно развёрнуто. Попутно предлагает закрыть программу, так как по его мнению всё сделано. Время - 13:32

Скриншот 32. Но через некоторое время отвечает достаточно развёрнуто. Попутно предлагает закрыть программу, так как по его мнению всё сделано. Время - 13:32
Скриншот 321606 × 631 · Нажмите, чтобы увеличить

Соглашаемся с выводами и рекомендациями. Но закрывать программу, на мой взгляд, еще рано. Сначала нам нужна каверза, диверсия и старуха Шапокляк. Ставим задачу посмотреть на задание глазами трех персонажей. Первый клиент будет лояльный и адекватный: он будет выполнять и проверять ровно так, как написано в исходном задании, не пытаясь нас завалить. Второй клиент — это классический «я не знаю, что вы тут наделали и что было в задании, но я хочу, чтобы это работало так, как я хочу»: он будет пытаться выполнять любые свои собственные задачи, тыкая в наши кнопочки, то есть мы должны проверить, условно, защиту от дурака. Третий клиент — это будет даже не клиент, а наш конкурент, который захочет нас завалить и будет придумывать самые каверзные проверки, которые формально должны оставаться в контексте задания, но при этом могут выходить за рамки описанного.

Скриншот 33. Соглашаемся с выводами и рекомендациями. Но закрывать программу, на мой взгляд, еще рано. Сначала нам нужна каверза, диверсия и старуха Шапокляк. Ставим задачу посмотреть на задание глазами…
Скриншот 331628 × 268 · Нажмите, чтобы увеличить

13:40 - процесс тестирования методом старухи Шапокляк в полном разгаре:

Скриншот 34. 13:40 - процесс тестирования методом старухи Шапокляк в полном разгаре:
Скриншот 341623 × 756 · Нажмите, чтобы увеличить

13:42 - лояльный клиент, ожидаемо, прошел все проверки с небольшим замечанием по интерфейсу. Ждём двух других героев

Скриншот 35. 13:42 - лояльный клиент, ожидаемо, прошел все проверки с небольшим замечанием по интерфейсу. Ждём двух других героев
Скриншот 351614 × 490 · Нажмите, чтобы увеличить

Доработки после приёмки

14:03 - пока я пил кофе, оркестратор прогнал все тесты. В целом, не всё так плохо, по идее, можно уже и сдаваться:

Скриншот 36. 14:03 - пока я пил кофе, оркестратор прогнал все тесты. В целом, не всё так плохо, по идее, можно уже и сдаваться:
Скриншот 361618 × 966 · Нажмите, чтобы увеличить

К исправлению берём не всё, оставляем мелочи просто списком в Readme. Заодно проверим правильност поговорки “лучшее враг хорошего” :)

Скриншот 37. К исправлению берём не всё, оставляем мелочи просто списком в Readme. Заодно проверим правильност поговорки “лучшее враг хорошего” :)
Скриншот 371646 × 355 · Нажмите, чтобы увеличить
Скриншот 38. К исправлению берём не всё, оставляем мелочи просто списком в Readme. Заодно проверим правильност поговорки “лучшее враг хорошего” :)
Скриншот 381630 × 478 · Нажмите, чтобы увеличить

14:16. Отвечаем на вопросы оркестратора, которые пришли от агента планирования. Если честно - беру просто рекомендованные значения, так как не готов глубоко вникать в суть для выполнения этого задания. Ну, и интересно проверить, что будет, если я буду просто “оператором кнопки Next” :)

Скриншот 39. 14:16. Отвечаем на вопросы оркестратора, которые пришли от агента планирования. Если честно - беру просто рекомендованные значения, так как не готов глубоко вникать в суть для выполнения этого…
Скриншот 391629 × 302 · Нажмите, чтобы увеличить

14:20 - план готов, первый агент-разработчик получил задание пошёл работать. Оркестратор предусмотрел отключение разработки фичей, если будем не укладываться в срок. Я бы сделал так же.

Скриншот 40. 14:20 - план готов, первый агент-разработчик получил задание пошёл работать. Оркестратор предусмотрел отключение разработки фичей, если будем не укладываться в срок. Я бы сделал так же.
Скриншот 402425 × 798 · Нажмите, чтобы увеличить

14:33 - агент всё программирует. Задал свой любимый вопрос про ускорение через параллелизацию. Оркестратор выдал команду, запустил новую параллельную сессию. Самого оркестратора отправил готовиться к тестам, раз он сам об этом сообщил. Да, да, здесь инициатива тоже наказуема действием :)

Скриншот 41. 14:33 - агент всё программирует. Задал свой любимый вопрос про ускорение через параллелизацию. Оркестратор выдал команду, запустил новую параллельную сессию. Самого оркестратора отправил…
Скриншот 411629 × 762 · Нажмите, чтобы увеличить

14:37 - движок закончил изменения, сдался оркестратору, тот запустил тесты.

Скриншот 42. 14:37 - движок закончил изменения, сдался оркестратору, тот запустил тесты.
Скриншот 421630 × 307 · Нажмите, чтобы увеличить

15:00 Получили первые тесты обновлённого функционала. На удивление, хуже не стало!

Скриншот 43. 15:00 Получили первые тесты обновлённого функционала. На удивление, хуже не стало!
Скриншот 431623 × 612 · Нажмите, чтобы увеличить
Скриншот 44. 15:00 Получили первые тесты обновлённого функционала. На удивление, хуже не стало!
Скриншот 441624 × 998 · Нажмите, чтобы увеличить

Прошу ускориться, чтобы уложиться в дедлайн

Скриншот 45. Прошу ускориться, чтобы уложиться в дедлайн
Скриншот 451621 × 837 · Нажмите, чтобы увеличить

Надо также понимать, что эти проверки упираются в производительность самой машины, потому что запускаются скрипты, которые загружают память и процессор. Плюс эмуляция браузера тоже отнимает некисло ресурсов, а на моей машине работает другие проекты. Так что в целом разработку можно ускорить, просто улучшив железо.

Инфраструктура и дедлайн

15:19. За функционал я спокоен, но у меня остался ещё один “больной зуб”, который хочется проверить перед тем, как грызть яблоки в промышленных масштабах. Прошу агента проверить инфраструктурную часть с которой столкнётся клиент при проверке нашей работы.

Скриншот 46. 15:19. За функционал я спокоен, но у меня остался ещё один “больной зуб”, который хочется проверить перед тем, как грызть яблоки в промышленных масштабах. Прошу агента проверить…
Скриншот 461617 × 288 · Нажмите, чтобы увеличить

И тут вылезает то самое пресловутое “горе от ума”. Торможу разогнавшегося оркестратора, упрощая задачу. Остаётся 20 минут, ладошки начинают потеть :)

Скриншот 47. И тут вылезает то самое пресловутое “горе от ума”. Торможу разогнавшегося оркестратора, упрощая задачу. Остаётся 20 минут, ладошки начинают потеть :)
Скриншот 471618 × 538 · Нажмите, чтобы увеличить

Рабочая лошадка, закусив удила и разбрасывая пену с боков, пытается вывезти:

Скриншот 48. Рабочая лошадка, закусив удила и разбрасывая пену с боков, пытается вывезти:
Скриншот 481569 × 262 · Нажмите, чтобы увеличить
Скриншот 49. Рабочая лошадка, закусив удила и разбрасывая пену с боков, пытается вывезти:
Скриншот 49796 × 587 · Нажмите, чтобы увеличить

А оркестратор начинает ошибаться, спеша выполнить задачу. Всё как у людей

Скриншот 50. А оркестратор начинает ошибаться, спеша выполнить задачу. Всё как у людей
Скриншот 501596 × 434 · Нажмите, чтобы увеличить

15:30. Оркестратор выдаёт утешительные новости, мол, всё почти в порядке. Правда, глядя в экран не особо им веришь :)

Скриншот 51. 15:30. Оркестратор выдаёт утешительные новости, мол, всё почти в порядке. Правда, глядя в экран не особо им веришь :)
Скриншот 511577 × 330 · Нажмите, чтобы увеличить

15:32. На самом деле всё достаточно хорошо и упираемся мы именно в лимиты машины, а не в логические цепочки. Агент предупреждает о превышении срока и это говорит о том, что я как менеджер справился со своей задачей плохо.

Скриншот 52. 15:32. На самом деле всё достаточно хорошо и упираемся мы именно в лимиты машины, а не в логические цепочки. Агент предупреждает о превышении срока и это говорит о том, что я как менеджер…
Скриншот 521623 × 565 · Нажмите, чтобы увеличить

Принимаю управленческое решение - передать работу в том виде, что есть сейчас. Прошу агента подготовить всё к выкладке:

Скриншот 53. Принимаю управленческое решение - передать работу в том виде, что есть сейчас. Прошу агента подготовить всё к выкладке:
Скриншот 531614 × 983 · Нажмите, чтобы увеличить

15:39 - Мы готовы к сдаче

Скриншот 54. 15:39 - Мы готовы к сдаче
Скриншот 541583 × 532 · Нажмите, чтобы увеличить

Но работы по тестированию ещё продолжаются.

15:47 - материалы прибывают

Скриншот 55. 15:47 - материалы прибывают
Скриншот 551612 × 262 · Нажмите, чтобы увеличить

15:54 - фоновый прогон тестов всё ещё идет

Скриншот 56. 15:54 - фоновый прогон тестов всё ещё идет
Скриншот 561601 × 331 · Нажмите, чтобы увеличить

А ещё бывает, что агенты-исполнители не подчиняются своему оркестратору и “стучат” на него шефу. Приходится спускаться с олимпа и собственноручно подтверждать решения своего ставленника:

Скриншот 57. А ещё бывает, что агенты-исполнители не подчиняются своему оркестратору и “стучат” на него шефу. Приходится спускаться с олимпа и собственноручно подтверждать решения своего ставленника:
Скриншот 57842 × 349 · Нажмите, чтобы увеличить

Последние проверки и завершение

16:14 - интересуюсь состоянием дел. Принимаю решение “сливаться”

Скриншот 58. 16:14 - интересуюсь состоянием дел. Принимаю решение “сливаться”
Скриншот 581620 × 535 · Нажмите, чтобы увеличить

16:37 - все тесты аки дубайский шоколад: зелёненькие :) Осталась последняя проверка - чистый запуск.

Скриншот 59. 16:37 - все тесты аки дубайский шоколад: зелёненькие :) Осталась последняя проверка - чистый запуск.
Скриншот 591613 × 552 · Нажмите, чтобы увеличить

17:05. Программа завершена и закрыта

Скриншот 60. 17:05. Программа завершена и закрыта
Скриншот 601619 × 972 · Нажмите, чтобы увеличить
Скриншот 61. 17:05. Программа завершена и закрыта
Скриншот 611614 × 745 · Нажмите, чтобы увеличить

Итоги

Самое время подвести итоги:

  1. За 4 часа собрать такое приложение не составляет труда. Я сознательно выбрал делать его только на фронтенде, тем самым упростив работу - не нужно было синхронизировать бэк и фронт. Понятно, что при масштабировании бэк потребуется, особенно, если нужно будет сохранять какие-то данные, а не просто делать шпаргалки.
  2. Я, как менеджер, отработал плохо. Нужно было после прогона тремя персонажами не делать доработок, подготовить задачу к передаче клиенту, а только после этого делать доработки.
  3. Истина “лучшее враг хорошего” снова успешно подтверждена :)

Изображение

100%ОригиналСкачать

Колесо или жест — масштаб · Перетаскивание — перемещение · Двойной клик — приблизить · ← → — скриншоты · Esc — закрыть