Співбесіда
Суботній ранок розпочався не з духмяної кави, а з наполегливого, ритмічного грюкання у двері. Ігор відчинив, сподіваючись побачити кур’єра з піцою. Натомість на порозі вималювалися двоє молодих парубків у випрасуваних, мов на храмове свято, білих сорочках та строгих темних штанях. На грудях у кожного висів акуратний пластиковий бейдж. У одного було написано «Брат Данило», у іншого — «Брат Артем». В руках вони тримали стос лискучих брошур, а на їхніх обличчях сяяли посмішки такої чистоти, яку хіба в ангеликів на іконах побачиш, або у розробників, що вчора успішно закрили спринт без жодної баги.
— Здорові будьте, добрі люди. Мир вашій хаті! — хором вигукнули вони.
— Доброго здоров’я, — привітався Ігор, інстинктивно перевіряючи, чи не намагаються йому збути якихось диво-ножів чи каструль.
— Чи маєте ви хвилиночку, аби поговорити про Творця Нашого, праведного Брендана Айка? — лагідно запитав Брат Данило.
Ігор кліпнув очима.
— Про кого?
— Про чоловіка, який всього за десять вечорів сотворив цей світ, — благоговійно підхопив Брат Артем. — Світ динамічної типізації, де всяке творіння може стати об’єктом, якщо щиро в це увірувати. Ми з громади «Свідків Сьомого Скролу». Скажіть, чи замислювалися ви коли-небудь, куди відійде ваш State, коли цей тлінний світ розмонтується?
Ігор спробував був зачинити двері, але Брат Данило м’яко, проте впевнено притримав їх носком нового, хоч і вкрай непрактичного кросівка Yeezy.
— Стривайте, друже наш. Ми бачимо, що на чолі вашому лежать тіні втоми. Ваші очі... ви ж користуєтеся темною темою в редакторі, чи не так? Шукаєте світла, але ховаєтеся в сутінках. Скажіть, чи вірите ви в Single Source of Truth?
— Хлопці, та я ж сисадмін, — спробував відхреститися Ігор. — Моя віра — то кручена пара, синій екран та золота заповідь: коли щось працює, краще його взагалі не чіпати.
Брат Артем лякливо зойкнув і тричі перехрестився жестом дуже схожим на стрілочну функцію () => {}.
— Отринь ці єресі, брате! Синій екран — то кара за гріхи синхронного коду! Схаменися, чи готовий ти постати перед Великим Event Loop? Коли настане Судний День, і стек викликів переповниться, куди полине душа твоя? До тихих вод мирного Garbage Collector чи до пекла нескінченного рендерингу, де плач, скрегіт зубовний та вічний undefined is not a function?
Брат Данило простягнув Ігорю брошуру. На обкладинці красувався щасливий чоловік, що сидів на хмаринці з макбуком, а довкола нього порхали пухкі пампушки у формі логотипів Bun. Заголовок повідомляв: «Пробудіться! Версія 1.3.14 уже зійшла на землю».
— Ми принесли тобі Благу Вість, — тихо мовив Данило. — Не треба каратися в кайданах жорстких типів серверних мов. Прийми в серце своє React, і він полегшить ярмо твоє. Бо сказано в Писанні від Дена Абрамова: «Прийдіть до Мене, всі втомлені та обтяжені важкими фреймворками, і Я заспокою вас через Virtual DOM».
— Але ж... — Ігор відчув, як його потроху затягує цей дивний діалог. — React — це ж просто бібліотека...
Обидва місіонери враз зблідли, мов полотно. Брат Артем зашепотів молитву:
— Отче наш, що єси в node_modules, нехай святиться ім’я твоє npm, нехай прийде царство твоє production, нехай буде воля твоя як на localhost, так і на сервері...
— Не гніви Бога хулою, хлопче! — суворо промовив Данило. — Це все від Angular — лжепророка, що спокушає люд безневинний складною структурою та двостороннім зв’язуванням! Не піддавайся спокусі диявольській. Покайся в гріху використання var!
— Ну... в школі на інформатиці грішив колись... — забелькотів Ігор, раптом відчувши себе останнім грішником.
— Очисти ж душу свою через let та const! — вигукнув Артем. — Бо var веде до розпусти областей видимості та hoisting-у у пітьму кромішню!
Брат Данило ступив крок уперед, заглядаючи Ігорю самісінько в душу крізь його ранкове, ще не продране як слід око.
— Повідай нам відповіді на три питання, і істина відкриється тобі. По-перше: що є для тебе this?
— Це... ну, вказівник на поточний об’єкт... — невпевнено пролепетав Ігор.
Місіонери переглянулися з журливою посмішкою, сповненою жалю до блукаючої душі.
— Наївний джуніор! this — він мінливий та багатоликий, мов той політик, що змінює погляди відповідно до настроїв електорату! Він приймає ту подобу, в контексті якої його викликають! Він — ілюзія, що вислизає від розуму непосвячених, аж поки вони не причастяться таїнством .bind().
— Добре, — зітхнув Ігор. — А друге питання?
— Чи віруєш ти у святі замикання? Чи віриш, що функція здатна пам’ятати своє лоно, навіть коли творець її вже покинув цей тлінний стек?
— Нехай буде — вірю.
— Воістину! — зрадів Артем. — І третє питання, найважливіше. Чи готовий ти прийняти хрещення святим npm install? Чи згоден впустити до свого репозиторію десять гігабайтів залежностей заради однієї-єдиної кнопки «Поділитися в соцмережах»?
Ігор поглянув на брошуру. На звороті був надрукований алгоритм розгортання бінарного дерева на JavaScript. А у футері дрібним шрифтом припис: «Пожертвуйте зірочку на GitHub проєкту нашому, і закомплітяться асинхронні запити ваші».
— Знаєте що, колеги, — мовив Ігор, поволі відступаючи. — У мене там інший мітинг. Треба бігти.
— Ми залишимо тобі документацію, — лагідно посміхнувся Брат Данило, акуратно вкладаючи брошуру Ігорю в долоню. — Почитай на дозвіллі специфікацію ECMA, вірш 262. Там знайдеш відповіді на всі питання. І пам’ятай: якщо на твоєму шляху трапиться Redux — не бійся мудрості його, бо через муки й тернії з бойлерплейтом ми находимо істинний дзен управління станом.
Вони чинно вклонилися й почали поволі спускатися сходами, зазираючи до сусідніх осель.
— Наступної неділі ми завітаємо з пастирем! — гукнув знизу Брат Артем. — Він повідає тобі про TypeScript! То як Закон Божий, тільки з інтерфейсами та суворими типами! Тобі сподобається!
Ігор зачинив двері на всі засуви й замки. Сів на ослінчик у передпокої. Глянув на лискучу брошуру. На розвороті всміхнений Брендан Айк тримав на руках маленького, наляканого програміста. Тяжко зітхнувши, дістав телефон, відкрив браузер у режимі «інкогніто» і тихенько, щоб ніхто, крий Боже, не побачив, вбив у пошук: «Як відцентрувати div без клятого CSS Grid». Йому раптом так закортіло повірити в диво.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів