Куда ни посмотришь — всюду статьи о лояльности клиентов, об удовлетворённости пользователей, об интуитивной понятности интерфейсов и о прочем подобном. Хватит уже об этом. Поговорим лучше о создании плохого софта, такого, поработав с которым, пользователь возненавидит и сам этот софт, и его разработчиков, и свои мышь с клавиатурой заодно.
![](https://habrastorage.org/r/w780q1/web/761/f57/321/761f5732168c4e918e092c45c38461ed.jpg)
Я — инженер-программист, занимаюсь разработкой коммерческих приложений более пяти лет. Со временем я начал замечать, что плохо спроектированные приложения могут вызывать у пользователей весьма и весьма отрицательные эмоции. То, насколько совершенна архитектура приложения с технической точки зрения, тут совершенно неважно. Если программа не помогает пользователю решить его задачи, если она не упрощает его жизнь и не соответствует ожиданиям — ждите волны негатива. Если именно этого вы и добиваетесь — значит — собранные здесь советы помогут вам довести ваших пользователей до белого каления.
А если серьёзно, то цель этой подборки — обратить внимание разработчиков на распространённые ошибки, напомнить о важных элементах программных проектов и помочь в деле построения здоровых взаимоотношений с пользователями.
Скорость — наш враг. Нельзя, чтобы приложение загружало что-нибудь быстрее, чем за пять секунд. А ещё лучше — пусть это будет хотя бы секунд пятнадцать.
Не используйте, ни в каком виде, фоновую обработку задач. Пусть пользователь смотрит на пустой неподвижный экран, не зная, что происходит, и проклинает всё и вся.
![](https://habrastorage.org/getpro/habr/post_images/e4f/a4a/d81/e4fa4ad81669679e3ebae21ba1569c96.gif)
Пользователи предлагают добавить в программу новую возможность? Что бы это ни было, пусть, для выполнения просьбы нужна пара строк кода, отвечайте так: «Это невозможно». Даже не думайте о том, чтобы обсуждать подобные предложения с коллегами. Отшейте пользователя — и проблемы как ни бывало.
Если юзер вам попался очень уж упорный, можете накормить его пространными фразами: «Это не соответствует функционалу нашего приложения», или: «Я ничем помочь не могу, это обязанности другого сотрудника».
Всякие «соглашения об уровне предоставления услуг» — глупости. Совершенно нормально, если система будет наглухо виснуть каждые несколько минут. А ещё лучше, если речь идёт о программе, которая, скажем, используется для обслуживания клиентов. Например — на кассе.
Когда сбой случается на рабочем месте, так или иначе огороженном от чужого внимания — это одно. Совсем другое — если ваш пользователь сможет объявить о том, что программа зависла, очереди из десяти человек. Это даст ему прекрасную возможность прилюдно выразить всё, что он думает об этой «программе».
![](https://habrastorage.org/getpro/habr/post_images/e74/1f0/376/e741f0376dbeb1da74caefb4930c9fea.gif)
Если вы делаете проект для крупной компании и вынуждены постоянно проводить совещания с её представителями, тратьте всё время совещаний, говоря о том, как замечателен этот новейший фреймворк XYZ, который вы используете. Очень важно, чтобы у вашего клиента не было возможности и рта раскрыть, в результате он не сможет сказать какую-нибудь ерунду о том, что его компании нужен какой-то там новый отчёт. Через полгода начинайте ругать тот же самый фреймворк по какой-нибудь случайной причине, говорите о том, что это было ошибкой — выбрать его на волне нездоровой популярности. Опять же, это очень важно — не давайте клиенту говорить, так как он непременно начнёт спрашивать об отчёте, разговора о котором вы очень долго и старательно избегали.
Если вы следите за событиями в среде JavaScript, значит — вы понимаете — о чём я говорю.
Интерфейс — это монолит. Нечто вроде асинхронной загрузки отдельных элементов — вредная практика. Все действия, которые выполняет пользователь, скажем, в веб-приложении, должны приводить к перезагрузке всей страницы. Позицию, где был пользователь до этого, запоминать не нужно. В результате у него появится возможность прокрутить страницу до того места, где он что-то делал, и посмотреть — что получилось.
Справки, всякие «руководства по началу работы», ненавязчиво знакомящие пользователей с основными возможностями программы — это излишество. Ваши программы настолько просты и понятны, что любой сможет работать в них без каких бы то ни было проблем.
![](https://habrastorage.org/getpro/habr/post_images/e46/fba/cdc/e46fbacdc6da698159d7b8dc6fafb535.gif)
Просто представьте, как это замечательно — ввести данные в форму, ошибиться в какой-нибудь мелочи, и, после её отправки и перезагрузки страницы, увидеть снова ту же форму с пустыми полями. Это не ваша вина, если пользователь неправильно понял, что куда надо вводить.
Никогда не спрашивайте у пользователей о том, что они думают о программе или о какой-нибудь её функции. Запомните — это очень важно. Никогда. Вы — гений, каких во всём мире можно пересчитать по пальцам одной руки. Вы — светоч программирования. Ваше мнение — это всё, что должно вас заботить.
![](https://habrastorage.org/getpro/habr/post_images/d54/398/b39/d54398b3940f4577a14fd16a55826399.gif)
Пусть всё в вашем софте будет загадочным. Например — не делайте никаких подсказок-заполнителей в полях ввода. Пользователю нужна программа — сам обо всём догадается. Кроме того, у такого подхода есть приятный побочный эффект — при случае можно с видом профессионала рассказывать друзьям о том, какие же ваши пользователи тупицы.
Электронные письма с напоминаниями, текстовые сообщения, push-уведомления, автоматическая загрузка новых данных из Сети — это для лентяев. Ваш пользователь должен сам всё проверять. Ждёт новое сообщение? Никакой автоматики — сам зашёл на нужную страницу, обновил её, ну а дальше — как повезёт. Как часто ему это придётся делать — нас не касается.
![](https://habrastorage.org/getpro/habr/post_images/6f5/e0e/bdc/6f5e0ebdc58e68db234af46d226fa69f.gif)
Ваша программа — это ваши правила, это, кроме прочего, отражение вашего словарного запаса. Если некий усреднённый пользователь чего-то не поймёт — это исключительно его проблема. Вот пара примеров, на которые стоит ориентироваться: «Асинхронный запрос через прокси-браузер», «Криптографическая соль».
Делайте с интерфейсом всё, что пожелаете. Например, значок дискеты можете использовать для удаления записей, а звёздочку — в качестве кнопки выхода из системы. При этом не забудьте записать процесс работы с вашей системой, используя что-то вроде HotJar (и снимите пользователя скрытой камерой). Наберётся материал для смешных гифок.
Экран загрузки, а ещё лучше — такой, который держится перед глазами очень долго — это непременный атрибут любой софтины. Даже у простейшего калькулятора должен быть такой. Он позволит пользователю как следует настроиться на работу с программой, заранее оценить её возможности и преимущества.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/f33/d42/7cb/f33d427cb10e5b244eb716a7344058c0.jpg)
Надеемся, приведённые здесь советы помогут вам писать по-настоящему отвратительный софт. Как видите, это не так уж и сложно. Хотя, вполне возможно, найдутся и такие разработчики, которые нашим рекомендациям не последуют и решат сделать всё наоборот.
Уважаемые читатели! А какими «вредными советами» о разработке ПО можете поделиться вы?
![](https://habrastorage.org/web/761/f57/321/761f5732168c4e918e092c45c38461ed.jpg)
Я — инженер-программист, занимаюсь разработкой коммерческих приложений более пяти лет. Со временем я начал замечать, что плохо спроектированные приложения могут вызывать у пользователей весьма и весьма отрицательные эмоции. То, насколько совершенна архитектура приложения с технической точки зрения, тут совершенно неважно. Если программа не помогает пользователю решить его задачи, если она не упрощает его жизнь и не соответствует ожиданиям — ждите волны негатива. Если именно этого вы и добиваетесь — значит — собранные здесь советы помогут вам довести ваших пользователей до белого каления.
А если серьёзно, то цель этой подборки — обратить внимание разработчиков на распространённые ошибки, напомнить о важных элементах программных проектов и помочь в деле построения здоровых взаимоотношений с пользователями.
Совет №1. Чем медленнее — тем лучше
Скорость — наш враг. Нельзя, чтобы приложение загружало что-нибудь быстрее, чем за пять секунд. А ещё лучше — пусть это будет хотя бы секунд пятнадцать.
Не используйте, ни в каком виде, фоновую обработку задач. Пусть пользователь смотрит на пустой неподвижный экран, не зная, что происходит, и проклинает всё и вся.
![](https://habrastorage.org/getpro/habr/post_images/e4f/a4a/d81/e4fa4ad81669679e3ebae21ba1569c96.gif)
Совет №2. Игнорируйте предложения и пожелания пользователей
Пользователи предлагают добавить в программу новую возможность? Что бы это ни было, пусть, для выполнения просьбы нужна пара строк кода, отвечайте так: «Это невозможно». Даже не думайте о том, чтобы обсуждать подобные предложения с коллегами. Отшейте пользователя — и проблемы как ни бывало.
Если юзер вам попался очень уж упорный, можете накормить его пространными фразами: «Это не соответствует функционалу нашего приложения», или: «Я ничем помочь не могу, это обязанности другого сотрудника».
Совет №3. Не заботьтесь о времени безотказной работы приложения
Всякие «соглашения об уровне предоставления услуг» — глупости. Совершенно нормально, если система будет наглухо виснуть каждые несколько минут. А ещё лучше, если речь идёт о программе, которая, скажем, используется для обслуживания клиентов. Например — на кассе.
Когда сбой случается на рабочем месте, так или иначе огороженном от чужого внимания — это одно. Совсем другое — если ваш пользователь сможет объявить о том, что программа зависла, очереди из десяти человек. Это даст ему прекрасную возможность прилюдно выразить всё, что он думает об этой «программе».
![](https://habrastorage.org/getpro/habr/post_images/e74/1f0/376/e741f0376dbeb1da74caefb4930c9fea.gif)
Совет №4. Стремитесь к самому новому
Если вы делаете проект для крупной компании и вынуждены постоянно проводить совещания с её представителями, тратьте всё время совещаний, говоря о том, как замечателен этот новейший фреймворк XYZ, который вы используете. Очень важно, чтобы у вашего клиента не было возможности и рта раскрыть, в результате он не сможет сказать какую-нибудь ерунду о том, что его компании нужен какой-то там новый отчёт. Через полгода начинайте ругать тот же самый фреймворк по какой-нибудь случайной причине, говорите о том, что это было ошибкой — выбрать его на волне нездоровой популярности. Опять же, это очень важно — не давайте клиенту говорить, так как он непременно начнёт спрашивать об отчёте, разговора о котором вы очень долго и старательно избегали.
Если вы следите за событиями в среде JavaScript, значит — вы понимаете — о чём я говорю.
Совет №5. Обновляйте веб-страницы целиком
Интерфейс — это монолит. Нечто вроде асинхронной загрузки отдельных элементов — вредная практика. Все действия, которые выполняет пользователь, скажем, в веб-приложении, должны приводить к перезагрузке всей страницы. Позицию, где был пользователь до этого, запоминать не нужно. В результате у него появится возможность прокрутить страницу до того места, где он что-то делал, и посмотреть — что получилось.
Совет №6. Ваш софт — это просто, любой сможет его понять
Справки, всякие «руководства по началу работы», ненавязчиво знакомящие пользователей с основными возможностями программы — это излишество. Ваши программы настолько просты и понятны, что любой сможет работать в них без каких бы то ни было проблем.
![](https://habrastorage.org/getpro/habr/post_images/e46/fba/cdc/e46fbacdc6da698159d7b8dc6fafb535.gif)
Совет №7. Проверка форм — не ваше дело
Просто представьте, как это замечательно — ввести данные в форму, ошибиться в какой-нибудь мелочи, и, после её отправки и перезагрузки страницы, увидеть снова ту же форму с пустыми полями. Это не ваша вина, если пользователь неправильно понял, что куда надо вводить.
Совет №8. Ваше мнение — это единственное, что имеет значение
Никогда не спрашивайте у пользователей о том, что они думают о программе или о какой-нибудь её функции. Запомните — это очень важно. Никогда. Вы — гений, каких во всём мире можно пересчитать по пальцам одной руки. Вы — светоч программирования. Ваше мнение — это всё, что должно вас заботить.
![](https://habrastorage.org/getpro/habr/post_images/d54/398/b39/d54398b3940f4577a14fd16a55826399.gif)
Совет №9. Чем больше загадочности — тем лучше
Пусть всё в вашем софте будет загадочным. Например — не делайте никаких подсказок-заполнителей в полях ввода. Пользователю нужна программа — сам обо всём догадается. Кроме того, у такого подхода есть приятный побочный эффект — при случае можно с видом профессионала рассказывать друзьям о том, какие же ваши пользователи тупицы.
Совет №10. Никаких напоминаний, автообновлений и уведомлений
Электронные письма с напоминаниями, текстовые сообщения, push-уведомления, автоматическая загрузка новых данных из Сети — это для лентяев. Ваш пользователь должен сам всё проверять. Ждёт новое сообщение? Никакой автоматики — сам зашёл на нужную страницу, обновил её, ну а дальше — как повезёт. Как часто ему это придётся делать — нас не касается.
![](https://habrastorage.org/getpro/habr/post_images/6f5/e0e/bdc/6f5e0ebdc58e68db234af46d226fa69f.gif)
Совет №11. Побольше таинственных слов
Ваша программа — это ваши правила, это, кроме прочего, отражение вашего словарного запаса. Если некий усреднённый пользователь чего-то не поймёт — это исключительно его проблема. Вот пара примеров, на которые стоит ориентироваться: «Асинхронный запрос через прокси-браузер», «Криптографическая соль».
Совет №12. Интуитивная понятность — это не к нам
Делайте с интерфейсом всё, что пожелаете. Например, значок дискеты можете использовать для удаления записей, а звёздочку — в качестве кнопки выхода из системы. При этом не забудьте записать процесс работы с вашей системой, используя что-то вроде HotJar (и снимите пользователя скрытой камерой). Наберётся материал для смешных гифок.
Совет №13. Экран загрузки должен быть всегда и везде
Экран загрузки, а ещё лучше — такой, который держится перед глазами очень долго — это непременный атрибут любой софтины. Даже у простейшего калькулятора должен быть такой. Он позволит пользователю как следует настроиться на работу с программой, заранее оценить её возможности и преимущества.
![](https://habrastorage.org/getpro/habr/post_images/f33/d42/7cb/f33d427cb10e5b244eb716a7344058c0.jpg)
Итоги
Надеемся, приведённые здесь советы помогут вам писать по-настоящему отвратительный софт. Как видите, это не так уж и сложно. Хотя, вполне возможно, найдутся и такие разработчики, которые нашим рекомендациям не последуют и решат сделать всё наоборот.
Уважаемые читатели! А какими «вредными советами» о разработке ПО можете поделиться вы?