Этот пост изначально был опубликован на моем личном сайте.

Единственное, что имеет значение - опыт пользователя?

Распространено мнение, что единственное, что имеет значение, - это удобство использования. Если определенный продукт хорошо спроектирован, пользователь получит хорошее впечатление и сможет достичь своей цели. И это все, что имеет значение.

Следуя этой мысли, пользователя не волнует, как был закодирован веб-сайт или какие технологии были выбраны вами. Ей все равно, есть ли у вас отличный файл readme или комментарий к вашему коду. Ее не волнует, применяете ли вы хорошие шаблоны проектирования или пишете ли хорошие интеграционные тесты для своего приложения. Она даже не знает (или не хочет знать) всего этого. Если у нее большой опыт использования вашего продукта, этого достаточно.

Я полностью согласен с тем, что пользовательский опыт - это самое главное. Мы создаем отличные продукты, чтобы сэкономить время и деньги людей или каким-то другим образом улучшить их жизнь. Но я думаю, что мы не можем говорить о пользовательском опыте, не принимая во внимание то, как мы пишем ваш код, и наши технологические предпочтения. Эти вещи имеют косвенное, но огромное значение для вашего пользовательского опыта.

Представьте себе эту ситуацию

Вы - фронтенд-разработчик, работающий в определенной компании. Как и всякая хорошая команда, вы постоянно пытаетесь выяснить, с чем сталкиваются ваши пользователи при использовании вашего продукта, чтобы вы могли улучшить его и сделать его удобнее.

Допустим, используя Hotjar, вы обнаруживаете, что у ваших пользователей проблемы с некоторыми фильтрами. Некоторые из них сгруппированы сбивающе с толку, и пользователи изо всех сил пытаются найти те, которые им нужны.

Вас просят исправить это, и ваш личный менеджер спрашивает, сколько времени, по вашему мнению, вам понадобится.

И вот проблема

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

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

Итак, заботится ли пользователь о том, как написан ваш код?

Косвенно да, конечно! Она борется с фильтрами вашего продукта. Она рассчитывает легко найти нужные фильтры, но не делает этого. И она не достигает своей цели - найти то, что ей нужно.

У нее плохой опыт, и она хочет, чтобы это было исправлено немедленно. Может быть, она даже нашла время написать и по электронной почте и пожаловаться на это. А что ты ответишь? «Извините, но это займет больше недели, потому что наш код ужасен»?

Если вы и ваша команда все сделали правильно, эта проблема была бы решена за два дня и стала бы незначительной проблемой. Но поскольку ваш код беспорядочный, вам нужно гораздо больше времени и ресурсов, и вы рискуете потерять множество пользователей, которые борются с тем же самым.

Так какая разница, используете ли вы React или Vue?

Нет! Конечно, нет. Мы должны прекратить обсуждение тех вещей, которые мало влияют и в конечном итоге являются вопросом предпочтений (и пустой тратой времени). И React, и Vue (и другие JS-фреймворки) великолепны, и вы можете выполнить то, что вам нужно, с помощью любого из них. Использование точек с запятой - это то же самое, что их не использовать. Использование табуляции поверх пробелов не оказывает никакого реального воздействия.

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

Это (и многое другое) вещи, которые имеют значение и оказывают реальное влияние. И, в конечном итоге, то, что косвенно имеет значение для ваших пользователей. Потому что если вы сделаете хорошую работу, вы доставите то, что действительно нужно вашим пользователям, намного быстрее. А это означает предоставление отличного опыта, а это самое главное.

Мой совет тебе

Если можно, я вам советую: в следующий раз, когда вы будете обсуждать что-то техническое или пытаться выбрать новую технологию для своего проекта, подумайте в первую очередь о своих пользователях. Подумайте, что для них лучше. Подумайте, действительно ли это решение поможет вам дать им то, что им нужно, проще и быстрее. Подумайте, действительно ли это облегчит вашу жизнь как разработчика, когда в следующий раз пользователям понадобится что-то исправленное или новая функция.

Спасибо за чтение ❤️