Всі ми колись були джунами і почиинали свій шлях в IT, не знаючи нічого. Поступово вивчаючи стеки й технології, в деяких випадках, на бойових проектах і реальних задачах вчилися як робити правильно. На той час коли вивчався я, це час IE7-8, ніяких глобальних ліб окрім jQuery не було, навіть Bootstrap з'явився набагато пізніше.
Але навіть я на той час знав і працював з jQuery, не знаючи JS. І коли доводилося стикатися з другими бібліотеками, які були написані без використання jQuery, я вставав в ступор, і переривав весь інтернет з питаннями - як з цим праюцвати?
З того часу пройло вже більше 15 років, але проблеми серед джунів абсоютно не міняються. На багатьох курсах дуже бігло пробігають html, css, js, це якщо говорити про верстальщиків, і відразу переходять на побудову сайтів за допомогою Bootstrap, Tailwind, React. І коли джуни роблять сайти на курсах, здають тести та екзамени, у них нема ніяких проблем, тому що вони реально можуть побудувати простий сайт, використовуючи різні бібліотеки.
Але коли вони приходять в офіс та стикаються з реальними задачами, тоді починаються проблеми. І справа не в тому що мід, або сеньйор не може допомогти джуну. Справа в тому що цієї допомоги потрібно настільки багато, що мідла просто треба знімати з його задач і ставити його, щоб він сидів і навчав джуна. Я не вважаю що це проблема команди, частично це проблема компанії, яка хоче подешевше знайти спеціалістів, але корінь проблеми це навчання ціх джунів на курсах, яких розвелося настільки багато, що буквально 60 річні діди йдуть на них, з обіцянками, що вони будуть заробляти по 5к баксів через рік. Самі ж курси просто вчать людей фреймворкам та біблітекам, які на реальній практиці взагалі не допомагають.
Моя порада абсолютно всім джунам, та людям, які будуть намагатися навчатися, це концентруватися на мовах. Не треба звертати уваги ні на які фреймворки, ні на які бібліотеки, і тим паче не слухати нічого про патерни. Вивчайте мови. Тому що, якщо ви будете добре знати JavaScript, для вас не стане проблемою вивчити Vue.js, або React. Але якщо ви вивчили Vue.js, додали до неї Vuetify та Tailwind, але ви не знаєте основи JavaScript. То на першій ж роботі ви стикнетеся з проблемою, коли вам дадуть задачу, яка не входить в базові принципи тої чи іншої біблітеки, і тоді ви зіткнетеся з проблемою, коли вам буде потрібно вирішувати питання через StackOverflow, або GTP, і не кожна компанія це потерпить.
На моїй практиці роботи в команді, я зустрічав буквально сотні людей, які знають добре, навіть чудово, Bootstrap, React, Vue, але взагалі не розуміють, що відбувається під капотом. Такі люди затрягають в своєму колі зань, та буквально не можуть з нього вийти. Тому що, якщо ти знаєш основи, ти легко вивчиш бібліотеку, але не навпаки.
Тепер що до мідлів
Основна проблема мідлів, та команд середнього розміру заключається в тому, що вони завжди намагаються оптимізувати робочий процес таким чином, щоб завжди використовувати мінімум часу для написання коду. Навіщо писати код, який вже кимось написаний? Тим паче, якщо ти використовуєш бібліотеки, то скоріш за все інший розробник, який теж знає цю бібліотеку зможе з ней безпроблем працювати, правда?
В деяких випадках, коли у тебе є чітке розуміння кінцевої задачі, та коли проект робиться під ключ, і більше ти до нього не будеш повертатится, то так. Але в більшості випадків, ринок зараз заточений на довгострокових стартах, і один й той самий код, може переписуватися і доповнюватися по декілька разів. І навіть якщо в початковій задачі у вас не було ніяких сумнівів в використанні тої чи другої ліби, то в наступних задачах у вас може появитися кейс, який не покриває та чи інша біблітека, вам доведеться її або доповнювати, або повністю переписувати. Що може за собою понести переробку половини проекту, і проста задача може тривати тижні.
Зрозумійте, я зараз не виступаю проти всіх бібліотек, я не говорю про якийсь moment.js, чи lodash. Я маю наувазі Vee Validate, Vuetify, Bootstrap, Nuxt Auth, та тому подібні. Тобто бібліотеки, які вам надають цілі кейси для використання. Відмовившись від них, ви звісно втратете час, але здобудете свій код, який вподальшому зможете таскати з проекту на проект, змініючи логіки під потреби кейсу.
Базовий приклад це плагін для вибору телефону vue-input-phone, це крутий селект, який через 2ip визначає ip користувача, та дає змогу автоматично ввети частину номеру. Але через тиждень, вам може надійти таска де замовнику потрібно ввести кастомну маску, для деяких країн, а цей плагін має свою маску, і він вже інтегрований в багаьох модулях, він стилізований. Вам доведеться, буквально відключати внутрішню обробку подій плагіну, та писати свою. На виході ви напишите 60% коду цього плагіну, і вам доведеться застосувати костилі, щоб через event bus передавати події в середину. Як результат, гівно в коді, костилі, то 60% коду який взагалі не використовується. І нічого цього б не трапилося, як би ви відразу написали свій селект зі своє валідацією.
Моя думка проста. Використовуйте інструменти, monent, lodash, vueuse, ether.js, та інші. А будь які бібліотеки можна використовувати тільки тоді, коли ви точно знаєте задачу, і точно знаєте, що ви використовуєте.