- Алло, це хардкор?
- Алло, це харткот?
- Технічна підтримка, здрастуйте!
Мова, звичайно ж, піде про сайти, вирішенні повсякденних завдань. Але для початку, давайте визначимося з критеріями якості завдань, щоб різниця в підходах була максимальна помітна. Нижчий мінімальний список вимог, актуальний для будь-якого проекту / завдання.
вартість розробки
Ні, тут ми не будемо говорити про ціноутворення, видах контрактів - це окрема історія. Сьогодні я ваш капітан очевидність і з усією відповідальністю заявляю: "Ціна - це критерій номер раз"!
Строки виконання робіт
Гідним продовженням в списку вимог є звичайно ж - дедлайн. Завдання має бути виконана в строк, поки її не реалізували конкуренти або того гірше - ідея морально не застаріла і стала нікому не потрібна. Підсумок один - можна розходитись.
Результат повинен в точності виконувати поставлене завдання в заздалегідь обумовлених умовах. Іншими словами, коректно працювати.
Подальша підтримка коду
Як то кажуть last but not least (останній, але не від цього не менш важливий), і на жаль, найчастіше найбільш недооцінений фактор. А говорить він нам про можливість через півроку / рік, без особливих зусиль, продовжити роботу з проектом і, що не менш важливо, з новими співробітниками / техподдержкой / командою, в загальному людьми, які не брали участь в розробці перших версій. Цей фактор є актуальним для більш-менш об'ємних завданнях, розробка яких, з огляду на витрачених зусиль, термінів і вартості не дозволяє викинути результат в смітник, не замислюючись.
Хардкод "на котиків"
Уявіть, у вас є інтернет-магазин, де всі розрахунки (купони, акції, податки, прайси постачальників, послуги доставки, тощо) ведуться в рублях. І ось з'являється задача перевірити попит на ваш асортимент в найближчих країнах-сусідах, куди найпростіше здійснити доставку. Для цього ціни в магазині повинні бути як мінімум в доларах і євро.
Ви зустрічаєтеся з робочою групою для обговорення деталей технічного завдання. Виявляється система управління вашого магазину не має готових рішень для використання декількох валют і банк не надає дані курсів валют в зручному форматі, що забезпечує багаторазове збільшення термінів і вартості розробки. Що робити, треба поспішати, поки ніхто ще не постачає ці унікальні товари на зарубіжні ринки, адже так важливо опинитися першим.
І ось, умовно кажучи, через два місяці, з новим магазином або допрацьованим старим ви отримуєте:
- Кілька тисяч ретельно задокументованих рядків коду
- Інструкцію з налаштування для адміністратора, користувачів
- Щоденну синхронізацію з кількома банками
- Можливість вказати коригувальні коефіцієнти для будь-якої валюти
- і багато інших дуже важливих і корисних речей
Але, на жаль, чутки про високий попит на даний асортимент розлетілася дуже швидко і ваш магазин встав в чергу з йому подібних, та ще з ціною вище середньої по ринку, тому що з'явилися додаткові витрати на розробку.
Щиро співчуваю, якщо ця історія вам знайома і нагадала про колишні невдачі. Це як раз той самий випадок, де оптимальним рішенням може стати хардкод. А саме, конкретно в даному прикладі досить жорстко, можна сказати прямо "в лоб", прописати курс валюти безпосередньо в коді або максимум з одним єдиним полем для його ручного редагування в міру необхідності, без автоматичної інтеграції.
Суцільна користь і очевидний профіт.
Технічно таке рішення займає на порядок менше рядків коду, завдання виконується в рази швидше, коштує дешевше.
Очевидно для відвідувачів немає різниці, як це працює всередині, якщо вони як і раніше можуть здійснювати покупки.
Подальший супровід, доопрацювання
У цьому весь сенс правильного хардкода - коли його використовують на благо. І як би дивно це не прозвучало, але хардкод може бути дійсно якісним і ефективним рішенням. Якщо ви обмежені за часом або існує ризик, що функція не затребувана, то такий підхід заощадить вам значну кількість сил і засобів. Адже головне - це вчасно відповісти на питання кінцевого споживача, виконати поставлене завдання, виправдати його сподівання.