Розрив між основами веба і новими технологіями

286

Від автора: вчора я розмовляв з другом, який хоче змінити посаду у своїй компанії, і я поскаржився йому про те, що бачу останнім часом: «Я не можу знайти front end розробника джуніора, в основному на WP, Foundation, CSS, JS. Не знаю в чому справа, у всіх шукачів немає «базових знань». Вони можуть писати React або іншому JS фреймворку, можуть створювати сайти через систему шаблонів в WP, але коли я кажу, що мені треба щось поправити безпосередньо в CSS, у відповідь я бачу пусті погляди… ну, або щось на чистому JS, у відповідь нічого.»

В мережі повно навчальних курсів і ресурсів по front end, але опитавши безліч «випускником» таких курсів, розумію, що люди не розуміють важливості CSS і JS. А адже в веб основа всього полягає саме в цих знаннях.

Звичайно, всього не запам’ятаєш за 12 тижнів навчання, але основна проблема – захоплення індустрії новинками, останнім і найкращим SPA фреймворком, а також презирство до CSS і «старим» підходам.

Захоплення новинками

Наша індустрія захоплена новими підходами. Чим ще можна пояснити постійний біг від старого і постійне «зробили заново» ще новіше, краще і складніше? Кожен раз ми говоримо, що це зробить архітектуру чистішим, більш абстрактною, і кожен раз ми винаходимо заново техніки, відтворюємо баги, і заново знаходимо всі винятки, при яких нам доводиться повертатися до старого жахливого кодом.

Це не говорить про те, що код не потрібно переписувати, або про те, що щось нове не може бути краще, а скоріше говорить про те, що ми стаємо жертвами блестяшек та ідеї ідеальної абстракції. Кожна нова архітектура ідеальна, поки не стикається з вимогами реального світу. На жаль, люди досить неакуратні, і все наше ПО побудовано для вирішення людських проблем. У кожної справжньої програмі погана абстракція, милиці і нові компроміси.

Ця гонка за постійними переробками і фокусом на останньому і кращому часто викидає старі вирішення тих же проблем, які нам потрібно вирішити. Все закінчується прийняттям нових інструментів для вирішення зовсім не тих проблем, просто тому що вони нові.

Одержимість останнім і самим новим SPA фреймворком

Публікуючи новини по front end розробці, я кожен день бачу цю проблему в поточному SPA. Я читаю величезна кількість різних статей про різних технологіях, і скажу вам, майже все в світі JS пишуть про одне або іншому фреймворку, як про абсолютно новою і унікальною інновації. Всі інструменти чудові, але всі вони побудовані для вирішення конкретних завдань за допомогою схожих основ, а також оптимізовані під різні випадки.

Розповім трохи про React, останні пару років про нього дуже часто говорять…

Не зрозумійте мене неправильно, я люблю React. Це феноменально потужний інструмент, що не просто дозволяє, а й робить простим створення тих інтерфейсів, про яких я і думати не смів, коли починав працювати в веб-розробці. Але коли приходять нові розробники, всі бачать цей хайп навколо React і думають, що тільки так треба писати JS. Зробити новий веб-застосунок? Використовуй React! Оновити і мігрувати старий сайт? Проведіть міграцію з допомогою React!

Це згубний підхід до технологій! Не слухайте мене, послухайте одного з найвідоміших розробників React, Dan Abramov! Коли Cory House опублікував звіт про недоліки React, Dan відповідав більше всіх:

Розрив між основами веба і новими технологіями

Це тільки частина, але відкритість Dan’а змусила Cory відповісти:

Розрив між основами веба і новими технологіями

Зрозуміло, що у Dan немає ілюзій про ідеальності React. Він знає ті компроміси, на які пішли розробники! Але більша частина спільноти так агітує за використання SPA фреймворків для вирішення будь-яких завдань і зовсім забуває про те, що ці інструменти розроблені для вирішення конкретних проблем. Так, це дивовижні інструменти, в них зручно працювати, але найчастіше вони абсолютно непридатні для вирішення інших проблем.

Прославляючи фреймворки, ми перестаємо помічати рішення, які більше підходять для вирішення безлічі цих проблем.

Знецінення CSS

В індустрії є тенденція принижувати HTML і CSS, кажучи, що це не справжня розробка. Думаю, так сталося через піднесення логічного мислення над графічним і просторовим… CSS і HTML – це ієрархічні, графічні та просторові відносини, а JS зосереджений на логіці.

Чим хороші логічні мови/вираження так це тим, що вони можуть охоплювати інші типи відносин… що дозволяє виражати просторові відносини мовою логіки. Однак наша індустрія часто неправильно розуміє той факт, що якщо за допомогою виразу можна записати щось більш велике, то вираз на цій мові завжди буде краще.

Не той випадок!

Якщо в якості прикладів взяти математику і фізику, то вся часто зовсім навпаки! Тут навіть якщо ви почнете з логічної моделі, ви часто намагаєтеся знайти просторову або графічну модель.

Причина в тому, що ці просторові моделі часто інтуїтивні і компактні для вирішення проблем, а також дозволяють отримувати довгострокові відомості, які ми потім ретельно назад переводимо на мову логіки.

CSS дає нам неймовірно потужний фреймворк для вираження графічних і просторових відносин, найчастіше вкрай складних!

Збереження складності

Ця думка привела мене до одного з моїх базових тез у розробці складність зберігається. Будь-яка проблема, яку ви намагаєтеся вирішити, має певну складність, яка повинна десь враховуватися.

Існує безліч способів, але спосіб з прикладу полягає в складності вираження графічних і просторових відносин. Величезна складність полягає в тому, що різні елементи на сторінці пов’язані один з одним просторово. Так цими елементами ще й маніпулюють, переміщують і зіставляють з іншими елементами. Ця складність має десь враховуватися, і з допомогою CSS браузер робить велику частину роботи за вас!

Розрив між основами веба і новими технологіями

Що потрібно робити?

Я не хочу сказати, що нам не потрібно використовувати або не навчати людей новим інструментам. SPA фреймворки типу React, Angular, Vue і Ember дозволяють створювати неймовірно потужні інтерфейси, яких не могло бути пару років тому. Ці інструменти провели переоцінку можливостей у вебі.

Думаю, що нам потрібно відмовитися від SPA еліти і підкреслити важливість основ і вибору відповідних інструментів для вирішення проблем.

Творці цих фреймворків рідко говорять про те, що їхнього дітища підходять для всього, але ми, як індустрія, підняли їх популярність до такого ступеня, що нові розробники повністю пропустили основи і подумали, що ці складні ланцюжки інструментів – єдиний хороший спосіб вирішення проблем.

Якщо всі наші нові розробники будуть зневажливо ставитися до CSS, ми закінчимо приблизно 2000 рядків, намагаючись наново винайти position: absolute;.

Якщо всі подумають, що в SPA можна писати тільки HTML та php, це приведе до занадто складної архітектури, багів і повільним блогах, маркетинговим сайтів і до решти, що вже було вирішено з допомогою старих способів.

Нам потрібно серйозно поговорити про те, які навички ми чекаємо в індустрії, а також про те, для чого ми тренуємо нове покоління. Добре пропустити людину через швидкий навчальний курс, але в сьогоднішніх навчальних курсах є великі прогалини того, що індустрії потрібно найбільше. Не думайте, що хтось через 8 або 12 тижнів зросте до бажаного рівня, але ми повинні хоча б направити людей.