Написан пост, в котором вы описываете стратегирование для метода работы, занимавшей максимальный процент времени вашей работы на прошлой неделе. В посте отмечено, как вы выполняли стратегирование для этой работы в жизни, а также приводится вариант стратегирования, который вы выполнили бы сейчас, с учётом знаний курса «Методология».
как я делал
Метод - разработка(подметод - разработка с помощью LLM моделей)
В моем случае нормального стратегирования, естественно, не было. Все было почти на уровне рефлексов.
Я уже не помню как точно узнал об этом методе, но было это где-то ± год-полтора назад. Когда github или выпустили или только объявили о запуске “github copilot” и повалили отзывы от людей, что вещь стоящая, реально помогает в работе и хорошо справляется с рутиной.
Посмотрел всякие ролики на ютубе - там у людей получалось быстрее какие-то вещи делать вот и я захотел попробовать. Попробовал, сначала не зашло, т.к. все было как-то топорно и код за меня он не писал; оказалось, что нужно уметь правильно давать команды-промпты, не во всех случаях он мог что-то толковое предложить. Поэтому было несколько итерация проб-отказов, но потом втянулся.
Сейчас LLM-based решение неотъемлимая часть моей практики разработки. За это время перепробовал кучу разных инструментов, на работе у нас есть корпоративная подписка на github copilot. Для личных использую cursor(claude 3.5).
делаем иначе с учетом знаний курса “Методология”
Во-первых разложить метод на составляющие:
- понимание задачи
- проектирование
- собственно написание кода(я через TDD люблю)
- тестирование(сюда же дописывание тестов, переделки и т.д.)
- отладка/оптимизация(PR-review сюда же)
- документирование
- развертывание
Неплохо бы понять какой процент времени занимает каждое разложение и какой процент на каждом разложении может сэкономить copilot и если экономия маленькая, или изначально разлолжение занимает малый процент времени - нет смысла этим заморачиваться.
И тут вопрос: а как посчитать сколько времени на что ушло? Можно попробовать таймером это все на себе разметить.
Еще вариант - поискать в интернете, может уже были какие-то исследования на эту тему и можно взять данные оттуда(вряд ли мои результаты будут сильно отличаться?).
Думаю, что лучше всего будет найти какие-то результаты исследований на эти темы, а потом посмотреть что чего.
То что я нагуглил:
- понимание задачи - 10-20%
- тут цифры очень разнятся от стадии проекта и бизнес-домена, есть цифры до 50%(это совсем уж экстремальный случай и не каждый день такое происходит) но в основном это 10-20%
- estimation - How much of your work day is spent coding? - Stack Overflow
- проектирование - 10-20%
- опять же сильно все зависит от того на какой позиции человек работает, какая стадия, какая задача и т.д.
- Is it "normal" that coding takes very, very long time - General Web Dev - SitePoint Forums | Web Development & Design Community
- написание кода - 10-20%
- ~ 1 час в день Code Time Report | Software.com. Только 10% - занимаются этим 2+ часа в день
- estimation - How much of your work day is spent coding? - Stack Overflow
- тестирование - 10-50%
- тоже цифры очень разные в зависимости от проекта. Если это что-то мелкое/простое/не важное - то можно просто пуш в прод и все, а если нет - то можно на это значительно больше времени пустить
- так же еще большая разница
- https://www.reddit.com/r/softwaredevelopment/comments/jc9haw/question_what_percentage_of_your_time_do_you/
- How to reduce the time spent on testing? - Stack Overflow
- отладка/оптимизация ~10-30%
- т.к. тут уже вовлекаются другие люди - неэффективный процесс может просто впустую сожрать очень много. Не раз в моей практике видел, что PRы зависают на неделю, а потом уже и контекста нет и все плохо
- документирование <10%
- тут обычно по остаточному принципу. Если не хватает времени на документацию - тем хуже для документации
- развертывание ~1-10%
- тоже все по разному, но в целом уже есть куча решений и инструментов для быстрого развертывания CI/CD пресловутый уже много где есть
То, что я тут посмотрел https://www.researchgate.net/publication/279259268_Software_Developers’_Perceptions_of_Productivity
У них вышло больше на написание кода чем я нагуглил, но это ничего
какие выводы
я бы сказал, что ориентироваться на эти цифры можно, но хорошо бы померить это все на себе, чтобы лучше понимать где “низковисящие плоды” есть. Например в моем случае - непосредственно написание кода занимает действительно мало времени, поэтому внедрить всякие копайлоты конечно хорошо, но если я начну тратить не 50 минут в день на написание, а 35-40(20-30% экономии) это конечно приятно, но как-то радикально ничего не улучшит. Но если программисты в моей команде тратят по 4 часа в день на написание кода, а будут по 2.8-3.2(те же 20-30% экономии) это уже существенно.
На что стоит обратить внимание при таком подходе - мы понимаем с чем работаем и работаем с важным, конкретно для нас. Ну по крайней мере у нас есть все инструменты для этого. Так можно конкретные улучшение привнести с минимальной ценой. В противовес моему подходу где я был подвержен маркетингу и понесся за хайпом(плохого, конечно не случилось, но могло бы быть намного лучше)