Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Правильно ли покрывать каждый параметр JSON REST api тестами?

Лучший ответ:
1) Нормально ли это при ручном тестировании? Если нет, то как лучше ограничить? К сожалению, выбор тут зависит не от меня.
Все возможные кейсы вручную не проверяют, обычно ограничиваются только критичными случаями (проверяют обязательные поля и пограничные значения для наиболее важных параметров). Всё зависит от требований к тестированию и сроков. Если нужно, можно и все 100 тестов вручную сделать.2) Нормально ли это при автоматизированном тестировании?
Да. В автотестах, как правило, проверяют все возможные ошибки.3) Не упустил ли я чего то?
Тесты можно писать бесконечно, это опять же зависит от требований заказчика и сроков. Можно проверить отправку невалидного JSON-а, отправку запросов с некорректным HTTP методом: GET, POST, HEAD, PATCH... и т. д.
Не стоит ограничиваться только сценариями на проверку ошибок. В зависимости от разных комбинаций входных параметров в API может быть реализовано разное поведение. Желательно проверить все принципиально разные успешные сценарии. Например, если в API есть boolean параметр, то необходимо проверить поведение при значении true и значении false.2) Нужно ли тестировать каждое обязательное поле по отдельности?
В идеале да. На практике так мало кто делает, тем более при ручном тестировании, особенно если параметров очень много. Как правило хорошее API в ответе всегда сообщает какие из обязательных полей не указаны, их список и проверяют в ответах. Проверяют три случая: все обязательные поля не указаны в запросе, пара-тройка обязательных полей не указаны, все обязательные поля указаны в запросе.

Худший ответ:
Написать более 100 тестов не такая уж и проблема, если сами тесты структурировать, типа там сделать базовые/производные тесты, итп.
Правда, если увлечся, может понадобиться тестировать сами тесты.
Вопрос: Как сгладить движение маркера на карте?

Лучший ответ:
Потому что надо не сразу маркер вставлять в нужное место, а потихоньку его туда вести. Да, будет лаг. Но вы можете не ждать очередной ответ, а интерполировать движение дальше и при получении точных координат уже корректировать.

Худший ответ:
У Яндекс Транспорт так плавно потому что они не каждые 10 секунд отправляют данные, а получают их в реальном времени. Попробуйте реализовать получение данные для отслеживания автобуса через websocket
Вопрос: На какую ЗП можно рассчитывать с 2-летним опытом работы?

Лучший ответ:
На мой взгляд, в резюме не должно быть указано з/п, вообще.
В плане уровня з/п... Любая, за которую сможете себя продать. А о наглости и самоуверенности тут вообще не стоит думать.

Худший ответ:
От 10 до 400 тыс. рублей.
Но: какая разница "на что можно рассчитывать"? Ни один из советчиков тут не собирается вам платить этих огромных обещанных ими сумм.
Имеет значение только то, что вы лично найдете.Если в резюме укажу 100-120тыс. р. - будет ли это выглядеть как наглость и самоуверенность? ))
И что с того? А по жизни вы белый и пушистый?
Вопрос: Как запретить изменять владельца папки (NTFS)?

Лучший ответ:
Как запретить изменять владельца папки (NTFS)?Отобрать права администратора.
Собственно администратора от пользователя отличает только одно - возможность изменять права.

Худший ответ:
Есть.
Перестать раздавать права администратора всем подряд. Права администратора для администраторов, все остальные не должны их иметь. Невозможно одновременно быть администратором и не быть им. 
Отобрать возможность у администратора становиться владельцем, еслиф че - нельзя.
Вопрос: Чем вызваны изменение кнопки «назад» в браузерах?

Лучший ответ:
Где-то я читал, что в Chromium отключили backspace по просьбе многих пользователей, которые что-то печатали, потом случайно вышли из "фокуса" текстового поля и опять нажимали backspace, чтобы стереть написанное. А вместо стирания происходил переход "Назад" и пропадало все написанное. Только не помню где я это читал. Найду, отпишусь
Нашел https://geektimes.ru/post/276090/

Худший ответ:
Можно было случайно потерять все данные (набранный текст, заполненные поля, и тд ) нажав на нее. 
Расширение от Google: https://chrome.google.com/webstore/detail/go-back-...
Вопрос: Какая лучшая практика наименования полей таблицы в MySQL?

Лучший ответ:
1 лучше, а вообще и там и там косяки

Худший ответ:
Простые название намного проще, особенно работая с разными ORM, так придется все время указывать первичный ключ. Всякие country_id удобны когда делаются внешние ключи и то наверно тут удобством можно пренебречь
Вопрос: Как склонять заказчиков к дизайну в Sketch?

Лучший ответ:
Как переубедить его
Будьте настойчивее.не возникнет ли у верстальщика потом проблем с форматом Скетча
Конечно нет, особенно если у него Windows.

Худший ответ:
ok, у меня винда. что мне делать с вашим скетчем?
Вопрос: Как открывать сайты используя два разных подключения?

Лучший ответ:
Это можно сделать маршрутизацией. 
С двумя оговорками - для прописки постоянных маршрутов нужны права админа и в принципе пользователь может сам что-то накосячить в маршрутах.
Идея какая - на LAN пишете статический ip адрес и полное отсутствие default router.
На wifi адрес и default router раздаёт dhcp на точке доступа.
Если в lan одна ip сеть, то уже всё решено - в эту ip-сеть трафик пойдёт через lan, в остальные - через wifi.
Если сетей больше одной, то руками пишете маршруты route add 192.168.2.0 mask 255.255.255.0 10.1.1.10 -p
где 192.168.2.0 - сеть, куда надо идти через lan, 10.1.1.10 - маршрутизатор в сети lan (в той же подсети, что и ваш ноутбук), а -p - это команда запомнить маршрут даже после перезагрузки.
И так для каждой lan-подсети.
Ну и маршрутизатор в lan нужно организовать.

Худший ответ:
Вот мой подобный вопрос. Вдруг помогут метрики.
Вопрос: Как рекрутеры собеседуют рекрутеров?

Лучший ответ:
О, это действительно чрезвычайно интересно!
Ведь чтобы рекрутировать рекрутёра, нужно рекрутировать рекрутёра!
А не факт, что они понимают рекурсию!

Худший ответ:
Они знаниями меряются, всю смену, без кофеина, и прочих мешающих факторов, всё не так как в "кино": https://www.youtube.com/watch?v=NuPolrd9yuo
Вопрос: Как оставить процесс (скрипт) в фоне даже после закрытия терминала?

Лучший ответ:
nohup  спасет падавана

Худший ответ:
Нарисуй соответствующий systemd сервис с oneshot и к нему соответствующий .timer
Вопрос: Можно ли letter-spacing задавать в очень маленьких величинах?

Лучший ответ:
Ответ "можно" по обоим пунктам.
Но вообще говоря, гнаться за абсолютным соответствием с psd не обязательно, поскольку адобовский рендеринг шрифтов по определению другой, нежели в ОС и браузерах. Если различие в тысячные доли - забить. Если расхождения более значительные - не симптом лечить, а выяснять причину.

Худший ответ:
Задавать можно, но браузеры могут округлять. Посмотрите на этот макет в разных браузерах, на разных операционках, и с разными настройками всяких улучшайзеров, типа cleartype. Смысла в такой субпиксельной возне не особо много.
Вопрос: Можно ли представить в виде $_GET?

Лучший ответ:
можно, если принимающая сторона ждёт именно гет, а не джейсон, или готова обрабатывать оба варианта. 
в обратном случае - нельзя.

Худший ответ:
это какая-то каша малаша, а не data string.
4 разных объекта склееных в кучу.
Ну представить конечно можно, распарсить надо только эту строку во что-то удобоваримое.[
  {
    "Language": "ru"
  },
  {
    "Params": [
      "2018-07-03",
      null,
      1,
      null,
      null,
      180
    ]
  },
  {
    "Vers": 6
  },
  {
    "Adult": false
  }
]
как-то так должно быть наверно хотя бы чтоб парсить как json, а не через жопу.
Вопрос: Как проверить наличие пакета в Debian?

Лучший ответ:
вообще то есть dpkg -l | grep 
т.е.  dpkg -l выводит список всех установленных пакетов
grep (название пакета) его фильтрует.

Худший ответ:
if ! dpkg -s packagename &> /dev/null; then
   # не установлен
fi
Вопрос: SASS: extend or mixin?

Лучший ответ:
Не нужно делить мир на черное и белое. В нем гораздо больше оттенков.

Худший ответ:
Не нужно делить мир на черное и белое. В нем гораздо больше оттенков.
Вопрос: Как правильно понимать бэнчмарки PHP & Python?

Лучший ответ:
Если учесть специфику работы 99.99% веб-проектов, то всем плевать. Серьезно.
А если вам не плевать, то проводите реальные тесты на реальной нагрузке, с реальным железом. И включайте все кеши и оптимизации какие найдете - вас же производительность интересует, а не сравнение синтетики с синтетикой.
Если почитать блоги яндекса или гугла, то можно заметить, что они десятки разных языков и платформ используют. И не редко бывает ситуация когда "эта штука написана на perl'е в 2004 году, и когда она начала тормозить нам оказалось дешевле поставить еще три сервера, чем переписать ее на более шустрый язык". Суровая реальность.

Худший ответ:
Поняли естественно неправильно.
Приложения на php точно так же висят в памяти и точно так же работают.
Тесты, которые вы смотрели, показывают лишь то, что как числодробилка php уже превосходит python
Еще 5-6 лет назад по указанной вами ссылке python обходил php практически по всем тестам.
Вопрос: Нормально ли что бекенд отдает сырые данные на фронт?

Лучший ответ:
Если ты не можешь на это повлиять, то смирись. На самом деле, то что ты описал, и как ты это описал, должно делаться еще на уровне самого SQL запроса, и возвращаться должны готовые для употребления данные. Вот эти все сравнения идентификаторов должна делать субд на основе пришедшего к ней SQL запроса. А тебе должно быть достаточно сделать запрос вроде getMenu(params), где params это и локализация, и прочие нужные поля.
А так выходит что бэкенд это файл базы данных, а роль субд выполняет фронтенд.

Худший ответ:
Работать с сырыми данными на клиенте накладно всем.
Накладно клиенту, потому что приходится работать с сопоставлением справочников, что должна делать СУБД "одной левой пяткой" при правильно составленном запросе с помощью индексов и кэша.
Накладно инфраструктуре связи - гоняем много данных по каналам и не один раз.
Накладно бекэнду - постоянно создавать соединение с клиентом и СУБД, разрывать соединение.
Накладно СУБД - делать серию мелких запросов с толстой процедурой подготовки соединения, проверки прав пользователя на объекты, выполнения запросов, вместо того, чтобы выполнить запрос в один/два присеста.
Что делать?
Организовывать на стороне сервера грамотный API - каждая функция API при запросе к серверу должна давать порцию данных, необходимую для отображения конкретного отчета. В ответе не должно быть переизбытка данных. Если это список товаров, то отображать данные не всего списка, а от такой-то позиции до такой-то. Если у товаров есть какие-то "тяжелые" подробности, скажем, посмотреть большую фотку его, то подгружаем ее только по запросу пользователя, скажем, при наведении мыши - то есть вызываем другую функцию API. То есть функции API должны соответствовать механике работы с отчетом, а не предоставлять несвязные клочки данных.
Вопрос: На чем проще всего сделать интерфейс?

Лучший ответ:
В таких случаях выбор из двух возможностей:
1. сделать на том, что лучше знаете
2. сделать на том, что хотите изучить.
Можно взять QT и плюсы. Можно выбрать что-то из питоновских GUI. Можно взять что-то совсем новое.

Худший ответ:
Если нужно что-то простое, можно взять Python и мерзкий Tkinter
Здесь мне сильно понравилось насколько просто его использовать
https://habrahabr.ru/post/151623/
Вопрос: Как вывести картинку из свойства инфоблока?

Лучший ответ:
<? foreach ($arResult["PROPERTIES"]["PHOTOS"]["VALUE"] as $arImgID): 
     $arImage[$arImgID] = CFile::GetFileArray($arImageID);?>
     <img src="<?= $arImage[$arImgID]["SRC"] ?>" alt="<?= $arResult["NAME"] ?>"/>
<? endforeach; ?>
$arResult или $arItem что у вас там.

Худший ответ:
Как ты выводишь данные даного ИБ ? через api или через компонент ?
Знаю что в компонентах есть аткая беда, они свойства типа файл не видят, и тогда ты просто его прописываешь в ручную в инпуте под списком свойств. а вообще в шаблоне выведи массива arResult и там можно найти свойство твое
Вопрос: Как сделать неровный блок с помощью css?

Лучший ответ:
Как-то так можно, только надо подгонять трансформации
https://jsfiddle.net/r0s6sr6h/

Худший ответ:
transform.
Но учти, что тект тоже скошеный будет.
Так что оборачиваешь его еще в один див и делаешь ему обратный transform.
Вопрос: Можно ли без лишнего изврата выводить красивую страницу при ошибке PHP?

Лучший ответ:
можно, все зависит от того как настроены и пых и вебсервер.

Худший ответ:
Если у вас единая точка входа, то проще там в try {} catch {} обернуть, и используемым шаблонизатором отрендерить, попутно сохранив информацию об исключении и каких-нибудь дополнительных данных.
На уровне nginx можно решить путем error_page 500 /500.html  на уровне server
Вопрос: Программное получение стоп-кадров с камер для последующей обработки?

Лучший ответ:
Если надо только разложить на кадры, то ffmpeg сделает быстро и бесплатно.
Нет смысла делать разбор внутри python, делайте системный вызов

Худший ответ:
Интерфейсы DirectShow предоставляют доступ к каждому кадру (обычно у камер 30 кадров в сек.).
https://docs.microsoft.com/en-us/windows/desktop/d...
Вопрос: Возможно ли заменить параметр для домена из Ngnix в htaccess?

Лучший ответ:
Нет. Ngnix не читает htaccess.
Вашу задачу можно решить только через редактирование конфигов Ngnix для сайта.

Худший ответ:
добрался до настроек но возникла проблема что они кладут сервер
вот сам код что нужно вставить
location / {
           try_files $uri $uri/ /index.php?$query_string;
      }
ниже пример какой код там сейчас, как только вставляю свой то это кладет сервер и перезагрузки не помогают 
возможно какие-то ошибки транскрипцыы в моей строчке кода?
location / {
    proxy_pass      $backend_protocol://$backend_host:$backend_port;
}
Вопрос: Почему не получается обратиться к getters?

Лучший ответ:
не получается обратиться к геттеру <...> показывает null, хотя если вызвать store.getters, то данные есть
"Показывает null" - значит не успели ещё данные загрузиться к тому моменту, когда вы дёргаете геттер, только и всего. Нечего тут сказки рассказывать про "не получается". Всё окей.

"Хотя" - не более чем особенность отображения объектов в консоли. Когда разворачиваете объект в первый раз, подтягивается его актуальное содержимое. Т.е., в консоль вы store.getters кидаете до получения данных, а смотрите что там есть уже после.

Не хотите в компоненте видеть этот null - не надо рендерить экземпляр компонента, пока данные не будут получены:

<компонент v-if="$store.getters.profile" />

Правда, прямо сейчас вы так сделать не сможете, есть косяк, вот здесь:

//Подключаю хранилище
import store from './store';

store.dispatch('getUser');
new Vue({
    el: '#app',
    router: router,
    components:{
        'head-app':headImplant,
        'footer-app':footer,
        'sidebar-app': sidebar
    }
});
Где подключение-то? Просто импортировать в main.js экземпляр хранилища недостаточно, вы должны передать его в конструктор Vue, как свойство store объекта с настройками:

new Vue({
  store,
  ...

Худший ответ:
Возможно экшн еще не отработал. Сделайте вот так для проверки: store.dispatch('getUser').then(() => {
new Vue({
    el: '#app',
    router: router,
    components:{
        'head-app':headImplant,
        'footer-app':footer,
        'sidebar-app': sidebar
    }
})
})
Вопрос: Как сравнить время?

Лучший ответ:
Знаками больше и меньше сравнивается. В сравнении участвует Unixtime(число секунд с 1970).
Для задания промежутков есть класс timedelta - тоесть у вас есть конкретное время и к нему надо прибавить 10 минут - то для этого используетс класс datetime.now() > datetime.strptime("2017-08-01 10:30:00","%Y-%m-%d %H:%M:%S") + timedelta(minutes=10)
станет True завтра в 10:40
Если же надо сравнить время независимо от даты то так:datetime.now().time() > (datetime.strptime("10:30:00","%H:%M:%S") + timedelta(minutes=10)).time()
Этот код вернет True так как во время написания поста больше 10:40(дата уже не имеет значения)

Худший ответ:
Время в виде строки тоже нормально сравнивается 
"19:00" < "19:30" #True
Вопрос: Правильная реализация MVC на ES6?

Лучший ответ:
Правильный MVC вот примерно такой: (1, 2). Вам скорее всего не нужен ПРАВИЛЬНЫЙ, а нужен какой-то с оптимизацией для web. Прикол в том, что вариантов как переколбасить идею сорокалетней давности под веб - несколько больше чем один. Причем у всех вариантов найдутся как плюсы, так и минусы.
Отсюда и боль у многих начинающих - только что прочитал в учебнике описание MVC, а вот на соседней странице - все по другому!
Чтобы не сильно мучиться с выбором - можно взять один из современных фремворков, где умные дяди уже постарались и продумали много всякого.

Худший ответ:
как на меня, лучший способ разобраться - изучить на базовом уровне asp.net mvc
Вопрос: C++ Не компилируется в gcc — как исправить?

Лучший ответ:
gcc это компилятор для C.
Используйте g++

Худший ответ:
Попробуйте такgcc -lstdc++ 3.cpp -o 3
Вопрос: Как сделать обратную анимацию распада с использования css или javascript (Pixel Dust)?

Лучший ответ:
Вот как-то так (кроссбраузерность не проверял, но должно работать IE11+).
По-хорошему стоило бы нарисовать точки в виде SVG-картинки и анимировать ее части, а не div элементы, как я сделал, но общая концепция должна быть понятна. Поведение с опцией hidden можно заменить на :hover у вашей кнопки.

Худший ответ:
Можно сделать на css, через анимацию(можно добавить рандом смещение точек)
Вопрос: Где искать интересные проекты на github для начинающего react разработчика?

Лучший ответ:
Могу посоветовать конкретизировать поиск. Например:react dashboardreact weather appreact reddit clientreact youtube clientreact tic tac toe
etc

Худший ответ:
Тестовые задания и разборы (код + рекомендации)
Вопрос: Почему не работает jsx?

Лучший ответ:
потому что mountNode is not defined
https://facebook.github.io/react/docs/getting-star...ReactDOM.render(
  <h1>Hello, world!</h1>,
  document.getElementById('example')
);
найдите одно (важное) отличие от вашего кода ;)

Худший ответ:
определи mountNode сначала для какого-нить элемента из твоего html
что-то вроде:
mountNode = document.getElementById('container');
Вопрос: Стоит ли брать ssd для всего сразу?

Лучший ответ:
ну если тебя не смущает что средняя цена SSD на 1тб - в районе 25к деревянных. то смело бери

Худший ответ:
для начала, я бы по хабрил) на предмет - получения информации) есть информация - значит от неё можно отталкиваться) вот к примеру статья об опыте переезда, точнее результат через пол года работы SSD. В этой статье идёт речь об выносливости. 
ИМХО. Если есть нужда в хранении 1 тб данных и постоянном его использовании - то думаю, да - имеет смысл покупать (сразу надо учесть, что через год/два нужно нужно будет заново покупать новый ssd). Если нету нужды постоянно пользоваться всеми этими данными - обычный хард, дешевле и долговечнее будет. Точнее отдельный хард (внешний) для этих целей подойдёт.
Вопрос: Существуют ли сервисы по поиску людей которые ищут вам работу?

Лучший ответ:
да устройтесь работать в любую фирму, они вам  будут искать работу, а вы работать

Худший ответ:
Обычно наоборот.
Вопрос: В Sublime Text 3 вместо новых вкладок заменяются открытые. Как лечить?

Лучший ответ:

  Дополню ответ ув-мого Романа Огаркова.
Что происходит по умолчанию. Если Вы кликнули в сайдбаре один раз правой или левой кнопкой мыши по имени или иконке файла, открывается вкладка, текст в которой отображается курсивом. В созданной мной цветовой схеме это выглядит так:
  Единичным кликом мы вызываем т. н. «режим просмотра» файла. Когда открыта вкладка с файлом в режиме просмотра, когда мы кликаем любой кнопкой мыши 1 или 2 раза по имени или иконке другого файла, этот самый другой файл откроется в той же вкладке, где был первый.
  Если мы вносим изменения в файл, который находится в режиме просмотра, то курсив его имени во вкладке пропадает, — осуществляется переход из режима просмотра в «режим редактирования». Когда открыта вкладка файла, находящегося в режиме редактирования, при клике любой кнопкой мыши по другому файлу в сайдбаре, этот самый другой файл открывается уже в новой вкладке.
  Чтобы сразу перейти в режим редактирования файла, расположенного в сайдбаре, необходимо кликнуть по его имени или иконке в сайдбаре дважды левой кнопкой мыши.
Чем это полезно, за годы работы в Sublime Text я не увидел. К тому же неудобно удалять файлы: ПКМ по имени или иконке файла в сайдбаре → Delete → Yes, delete the selected items → Ctrl+W → Нет — нажимать приходится много.
Для отмены режима просмотра проделываем следующее:Preferences →Settings - User→ добавляем в открывшийся файл строчку"preview_on_click": true,→ отныне после одинарного клика ЛКМ или любого количества кликов СКМ ничего не произойдёт. Для открытия файла в сайдбаре в режиме редактирования необходимо кликать по его имени или иконке дважды.
Несмотря на многочисленные просьбы, открытие файла в режиме редактирования единственным кликом ЛКМ в Sublime Text 3 на сентябрь 2016 не вводят.
  Спасибо.

Худший ответ:
Выбор файла из панели происходит 2-ным кликом, одинарный клик это режим просмотра файла
Вопрос: Нужны ли сейчас узкоспециализированные IT-специалисты, или всем нужны мастера на все руки?

Лучший ответ:
Хороший специалист должен знать понемногу о многом и много о немногом. Личное мнение.

Худший ответ:
Могу точно сказать, что узкоспециализированные специалисты нужны. Но это не отменяет того, что где-то нужны fullstack. Ниже личный опыт. 
У меня получилось так, что почти все время при росте и при переходах между работами область моей работы сужалась. Сейчас я вообще не затрагиваю часть того, что делал на начальном уровне, но намного глубже знаю то, что делаю в узкой области. Вместе с этим росла и востребованность во мне, что отражалось на количестве предложений, росте зп, том, сколько времени должно было пройти между тем, как я решил искать работу и тем, как находил.
Вопрос: Можно ли в JS задавать имя для named function expression таким же, как и имя переменной?

Лучший ответ:
let inc = x => x+1;
Перейдёт в var inc = function inc(x) {
  return x + 1;
};
Конфликта не будет

Худший ответ:
Имя функции у named function expression доступно только внутри функции
то есть, даже если вы присвоите внешней переменной с таким же именем другое значение изнутри функции это имя будет указывать на данную функцию, это нужно учитывать!
Никаких других конфликтов не будет, так как var func будет во внешней области видимости, а function func во внутренней
Вопрос: Так ли необходимо использовать адаптивный дизайн сайта?

Лучший ответ:
Когда я рисую и придумываю дизайн сайта, стараюсь сделать его статичным, не резиновым, не адаптивным. Это помогает мне сделать связи между элементами, больше возможностей увязать между собой элементы.
Мыслить нужно шире, сразу продумывать адаптивность (или мобильную версию, если вы никак не хотите адаптировать сайты).В то время как адаптивный сайт рушит логику и стройность, общее ощущение и атмосферу, переносит элементы под разрешение конкретного пользователя.
Хорошо, что вы так ответственно подходите к работе, но не слишком ли вы усердствуете?
Мне даже кажется, что вы как-то неправильно подходите к этому вопросу.
Если еще точнее, как-то неправильно занимаетесь адаптацией.И я не могу сказать что большинство мобильных сайтов удобные. Да, они адаптивны, но не удобные.
А удобнее открыть сайт с телефона, который для ПК предназначен?
Уместить 1200 пикселей на 320 пикселей экрана телефона, и потом еще увеличивать сайт, чтобы скроллить при чтении простого блока из 2 строк текста.
Вот, что действительно ломает логику и стройность мозга человеческого.Интересен ваш опыт, пытаетесь ли вы найти копромисс или решили во всех проектах использовать адаптивный дизайн?
Адаптивный дизайн используется далеко не везде, но с одной оговоркой.
Просто сейчас слишком большой мобильный трафик, чтобы пренебрегать таким средством.
Если есть отдельная мобильная версия, то адаптивность можно не делать.
Но тут есть нюанс: мобильная версия - это, как правило, совсем другой сайт и потребуется еще масса усилий, чтобы раскрутить, оптизировать сайт для ПС.
Некоторые компании так и делают, я сталкивался с сайтами жилых комплексов, где в основной версии используются крутые визуальные эффекты, которые никак не уложатся в адаптацию.

Худший ответ:
Очень сильно может повлиять на посещаемость, и мобильные (google, yandex) не будут ваш сайт выводит в поиск мобильных версий.