User-Centric Engineering
Долго жил с мыслью о том, что всем очевидно, для чего инженеры проектируют системы и пишут код: чтобы разработать продукт, решить проблемы пользователя, а вместе с этим и помочь бизнесу заработать денег, ведь так?
Но чем больше общаешься с людьми из индустрии и смотришь на реализацию некоторых проектов, понимаешь, что мысли о чистом и правильном коде зачастую вытесняют всю эмпатию к пользователю. Да, продуманная архитектура и поддерживаемый код – это очень важно, но надо находить находить баланс с опытом пользователя, иначе зачем это всё?
Несколько примеров из статьи Addy Osmani User-centric engineering того, как инженер может больше думать о пользователе:
-
Оптимизировать производительность, воспринимаемую пользователем, а не сырые цифры. Как раз недавно столкнулся с тем, что оптимизация Web Vitals ухудшала воспринимаемую производительность. Со старой версией Lighthouse такое было повсеместно, но сейчас гораздо лучше.
-
Проектировать системы так, чтобы при отказе части их функционала переставала работать не вся система, а только затронутая её часть. Самый наглядный пример – использование React Error Boundary для изолированных частей приложения.
-
Приоритизировать технический долг исходя из влияния на пользовательский опыт.
“You’ve got to start with the customer experience and work backwards to the technology - not the other way around” — Steve Jobs
Еще несколько случайных мыслей о тезисах статьи:
-
Важно проводить интервью с пользователями. Тут все не так очевидно, как кажется на первый взгляд. На эту тему можно почитать книжку The Mom Test. Может быть когда-то опубликую свою заметку по этой книге, если дойдут руки.
-
Работа над продуктом должна руководствоваться данными. Мне нравится использование термина data-informed, вместо популярного data-driven. Такое отличие принципиально: data-informed предпологает, что решения принимаются с учётом данных, но при этом с учётом остального контекста. data-driven же, в свою очередь, звучит как слепое следование метрикам, которые сами по себе могут быть сломанными, неправильно интерпретируемы или вообще бессмысленны.