Back to Notes

User-Centric Engineering

This note is available only in Russian or translated partially

Долго жил с мыслью о том, что всем очевидно, для чего инженеры проектируют системы и пишут код: чтобы разработать продукт, решить проблемы пользователя, а вместе с этим и помочь бизнесу заработать денег, ведь так?

Но чем больше общаешься с людьми из индустрии и смотришь на реализацию некоторых проектов, понимаешь, что мысли о чистом и правильном коде зачастую вытесняют всю эмпатию к пользователю. Да, продуманная архитектура и поддерживаемый код – это очень важно, но надо находить находить баланс с опытом пользователя, иначе зачем это всё?

Несколько примеров из статьи 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 же, в свою очередь, звучит как слепое следование метрикам, которые сами по себе могут быть сломанными, неправильно интерпретируемы или вообще бессмысленны.