Problem solving & Decision Making, часть 1
Есть, на мой взгляд, два метанавыка, применение которых упрощает решение задач и все процессы, связанные с этим. Это Problem Solving и Decision Making. Их стоит воспринимать как набор универсальных принципов, помогающих работать эффективнее.
Многие пункты могут показаться очевидными. Тем не менее я постоянно наблюдаю, как друзья/коллеги (и я сам) их игнорируют — и потом страдают от последствий.
В этой части разберём Problem Solving. Выделю 4 основных пункта.
❤️Постановка задачи. Часто мы торопимся и буквально хватаемся за первое понимание проблемы, чтобы поскорее её решить. И часто это приводит к тому, что проблему нужно решать заново.
Время, потраченное на изучение проблемы перед её решением, всегда окупится. Как плюс, всегда будет четкий для себя и других ответ на вопрос "Зачем мы делаем, то, что делаем".
Мощная практика в работе - System Design Doc. Можно взять шаблон отсюда или написать вместе с командой свой. Главное - договориться о пути решения проблемы и учёте мнений всех стейкхолдеров.
❤️Важное и оптимизации. Проблемы не равны по важности. Что-то нужно решать уже сейчас, а что-то и через год будет второстепенным. Решение главных проблем двигает нас, продукт вперёд, тогда как оптимизации могут просто съедать время.
Ваша нагрузка — пара rps, у вас куча видеокарт и нет работающего решения, а вы бьётесь с конвертацией в tensorrt? Что-то здесь не так.
❤️Кратчайший путь. Время - ограниченный ресурс. Составляем план по достижению цели. Затем проходимся по каждому пункту, задавая вопрос "Можно ли быстрее", пока не исчерпаем варианты. Получившийся план и будет оптимальным.
❤️Контроль проблем. Некоторые задачи настолько масштабны и охватывают так много людей/процессов, что проще их контролировать и «есть слона по частям», чем решать с наскоку.
Пример — legacy-код. Да, его тяжело поддерживать, добавлять новые функции, но он работает и приносит деньги для бизнеса. Вместо переписывания всего с нуля — разумнее начать рефакторить/мигрировать те (небольшие) места, в которых у вас в последнее время возникало больше всего работы: нужно было добавлять фичи или что-то чинить.
Decision Making: to be continued ❤️❤️❤️
Герман Петров