В отличном выступлении на GDC 2019 года под названием Все, кто смотрит это, уволены: советы для программистов игровой индустрии Майк Актон дал невероятно полезную информацию о том, что он, очевидно, считает лучшим подходом к решению технических проблем.

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

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

Меня очень вдохновило это видео, и я решил начать шаблонизировать (да, шаблонизировать — это слово, так говорит Городской словарь 😛) советы Майка Актона для моих собственных проектов, начиная с сегодняшнего дня.

Как следствие, я создал таблицу из 31 вопроса (см. ниже), на которые необходимо ответить, прежде чем приступить к написанию хотя бы одной строчки кода в проекте на Parallel45. Очень полезный инструмент, который уже улучшает качество нашей работы и делает наших клиентов еще счастливее!

Спасибо, Майк!

  1. Какую проблему я пытаюсь решить?
  2. Почему важно решить эту проблему?
  3. Где тот предел, когда решать эту проблему не стоит?
  4. Что такое план Б?
  5. Какие шаги необходимы для решения этой проблемы?
  6. Каковы неизвестные и риски, связанные с решением?
  7. Какую структуру я создал, я могу использовать и изменить для решения этой проблемы
  8. Как я узнаю, что решил проблему?
  9. Что я пытаюсь доказать? Какова моя гипотеза?
  10. Как я могу доказать, что моя гипотеза неверна?
  11. Каковы требования к задержке для решения моей проблемы?
  12. Какая пропускная способность необходима для решения моей проблемы?
  13. Каков наиболее распространенный вариант использования решения, которое я разрабатываю?
  14. Каковы наиболее распространенные реальные ценности в реальной жизни, которыми я манипулирую?
  15. Каковы допустимые диапазоны значений, которыми я манипулирую?
  16. Что происходит, когда данные за пределами этого диапазона попадают в систему?
  17. Как выглядят входные данные?
  18. Какова частота изменения реальных ценностей, которыми я манипулирую?
  19. Где документация по инструментам, которые я чаще всего использую для решения этой проблемы?
  20. Что является самой медленной частью рабочего процесса системы для моих пользователей?
  21. Какая информация о моей системе нужна пользователям для эффективного использования решения?
  22. Для какого оборудования предназначено это решение?
  23. Как это оборудование влияет на дизайн моей системы?
  24. Как работает мое решение? Сколько времени это занимает?
  25. Как я могу оптимизировать свое решение?
  26. Как я могу отлаживать живые сборки моего решения?
  27. Какие данные считывает решение и откуда они берутся?
  28. Как часто я читаю данные, которые мне не нужны, как часть моего решения?
  29. Какие данные я записываю и где они используются?
  30. Как часто я записываю данные, которые мне не нужны, как часть моего решения?
  31. Как данные артикулируются в памяти?

И помните, ваш проект не рассчитан на будущее и не зависит от платформы! Не забывайте сидеть и наблюдать за реальными пользователями вашей системы, чтобы понять болевые точки и то, как они взаимодействуют с ней.