Рубріки: ДосвідДумка

Знання нових фреймворків не допоможе: чому розробник без бази ризикує назавжди залишитись черговим «кодером»

Оленка Пилипчак

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

Передаємо йому слово.

Редакція Highload публікує переклад матеріалу.

Переведено бюро перекладів у Києві «Профпереклад».

Переклад від

Жорстока реальність: мені не вистачало базових знань у галузі програмного забезпечення.

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

Або шок, коли повертаєшся до бібліотек, якими користуєшся щодня (React Hooks, Redux, TypeScript) і ледве розумієш, як вони взагалі працюють.

У такі моменти доводиться усвідомити непривабливу реальність — як це сьогодні розробити ПЗ. Технології розвиваються дуже швидко і ми за ними не встигаємо.

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

Тому, коли я ще писав код, то запитав себе: «А чи є більш зручний спосіб освоїти розробку софту?»

Я чотири роки вивчав найкращі методи удосконалення технічних навичок розробника. Я прослухав сотні онлайн-курсів та експериментував з безліччю різних інструментів.

Проаналізувавши свою основну роботу full-stack-розробника і все, що я робив для навчання, я почав помічати деякі закономірності. І щоб дійти рівня сеньйора і прискорити процес навчання, потрібно було виправити таке:

  • я по 14 годин на тиждень «навчався» на Udemy або YouTube (і майже нічого не отримував у відповідь);
  • 80% мого часу витрачалося на перегляд однотипного коду;
  • я викидав велику частину написаного, оскільки за кілька днів все швидко змінювалося.

Мені була потрібна система, яка допомогла б мені поліпшити навички розробника JavaScript та інженера ПЗ.

Щоб побудувати таку систему, я поставив собі такі питання:

  • Що не змінюється у створенні софту?
  • Як перетворити відсутність диплома з комп’ютерних наук з мінуса на плюс?

Мені потрібна була система, яка:

  • допомогла мені зрозуміти конкретні технічні прогалини в моїх знаннях (щоб я міг зосередитися на по-справжньому важливих речах);
  • вибудувала б потужну основу (це зберегло актуальність моїх навичок програмування на багато років вперед);
  • допомогла б мені побачити повну картину та швидше перейти від статусу «кодера» до «інженера ПЗ».

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

У цій статті я поділюся з вами найголовнішими результатами мого дослідження. Ви відразу зрозумієте, як швидко прокачатися до мідла/сеньйора JavaScript. Стаття досить довга, тому скористайтесь змістом, щоб перейти відразу до конкретного пункту:

1. Ви вже в авангарді
2. Знайдіть прогалини
3. Робіть більше з меншою кількістю знань
4. Опануйте базу
5. Вмійте бачити за межами коду

Отже, почнемо. З чого починається зміна способу мислення, яка приведе нас до бажаного результату?

1 Ви вже в авангарді

Хороші новини: якщо ви вже давно пишете код, ви маєте значну перевагу.

За даними 20-го випуску звіту State of the Developer Nation, наприкінці 2021 року у світі було 26,8 мільйона активних розробників ПЗ. Це ±0,34% населення планети.

Не має значення, як ви до цього дійшли.

Можливо, ви самоучка і годинами просиджували над підробітками та курсами. Або ж пройшли навчання у навчальному таборі для програмістів (Bootcamp) та місяцями відточували навички.

Втім, це не так важливо. Ви вже почали цей шлях і ви вже випередили тих, хто ще не кодує.

А тепер порахуємо. Щоб написати код для простенької програми в React, доведеться витратити кілька сотень годин. Ну і на роботі ви напевно бачите сотні та сотні рядків коду.

Ключове слово тут — «інтеграція».

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

Більшість розробників порівнюють себе із сеньйорами в команді. А далі що? Включається синдром самозванця. Люди відчувають дедалі менше впевненості у своїх технічних навичках та перестають розвиватися.

Більшість розробників не бачать тих, хто знаходиться за ними на кривій навчання. І забувають про сотні речей, які вже вивчили.

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

А тепер, коли ми зрозуміли проблему, переходимо до того, як змінити тип мислення переходу на наступний рівень.

2 Знайдіть прогалини

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

Наприклад, англійський флот. 300 років у них були найкращі кораблі та найдосвідченіші моряки. І вони все одно продовжували тонути. Чому?

Тому що  вони не могли точно визначити карту, де знаходяться (точніше, не могли обчислити довготу). Помилки у визначенні географічної широти призвели до загибелі тисяч людей.

Проблему вирішили, коли Джон Гаррісон розробив надійний хронометр. Джон Гаррісон — тесляр-самоучка. На цей винахід у нього пішло близько 40 років.

Як і британські моряки, більшість розробників сьогодні мають доступ до незліченних ресурсів. І все ж, багато хто застряє і перестає розвиватися. Вони не можуть відповісти на одне просте запитання: «На якому технічному рівні я перебуваю?»

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

Найкращий варіант — спочатку зрозуміти, де ви знаходитесь і куди хочете дістатися. Це головний крок у досягненні майстерності. І якщо ви його зробите, то і все інше додасться, головне працювати.

3  Робіть більше з меншою кількістю знань

У чому сенс вправи щодо пошуку технічних прогалин? Показати, яких знань вам не вистачає. Але якщо ви не знаєте, на чому зосередитися і з чого почати, розуміння прогалин вам не допоможе (і може навіть нашкодити).

На цьому етапі більшість розробників починають відволікатися. Вони спираються на «шкільний» менталітет — намагаються вивчити все й одразу одночасно. Пряма дорога до вигорання та дуже короткої кар’єри розробника.

А ось як треба правильно про це думати. Ваша цінність як розробника — не у ваших знаннях. Технології змінюються, як і методи реалізації багатьох речей. Бібліотеки змінюються, базові засоби розробки змінюються і навіть мови змінюються. Якщо ви зосередитеся на цьому, то застрягнете в такому собі «колесі для хом’ячка» і бігатимете по колу.

Коли розробник намагається покращити свої навички, він починає відразу 7 різних онлайн-курсів і бере 3 різних проєкти як підробіток. Якщо й ви зібралися зробити те саме — що ж, успіхів! Ви ніколи не закінчите.

А тим часом на ринку софту важливим є лише одне — здатність виконувати роботу. Видавати на гора чистий код, створювати високоякісний софт. Якість означає жертви. Потрібно перестати запитувати «скільки ще?» і спитати «наскільки глибоко?».

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

Що ж вважається важливим серед технічних навичок? Зараз дізнаємось.

4 Опануйте базу

Давайте ненадовго повернемося у минуле. Пам’ятаєте, як ви зводили піщані замки на пляжі в дитинстві? А за кілька годин поверталися і бачили, що замок змило водою. Ймовірно, ви пам’ятаєте і те, що головною проблемою був  фундамент, основа. Пісок не дуже тримає форму, особливо якщо додати води.

Саме це робить більшість нинішніх розробників. Вони вивчають купу різних інструментів і постійно додають нові знання на дуже слабку базу.

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

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

Розуміння протоколів та супутніх процесів дозволять вам залишитися на вершині за мінімальних витрачених зусиль. Ваша сила — у базових знаннях, а не в нюансах реалізації, які постійно змінюються.

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

Більшість розробників маніакально вивчають останній фреймворк JavaScript, плагін VS Code або GitHub Co-pilot… А тим часом деякі розумні люди звертають погляди в інший бік. І якщо ви хочете досягти успіху в цій сфері, зробіть те саме.

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

І це призводить до наступного пункту.

5 Вмійте бачити за межами коду

Дослідниця Ліндсі Річленд вивчає когнітивні здібності та вміння навчатися на прикладі вивчення математики школярами з усього світу.

У чому різниця між школярами, які успішно вивчають математику, та іншими? Може, вся річ у підручниках? Чи у викладачі? Ви здивуєтеся.

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

А от у тих, хто отримав найвищі оцінки, було дещо спільне. Вони розглядали математику як систему взаємозв’язків. Вони бачили повну картину та вміли вибудовувати правильні зв’язки в оцінці. Звучить знайомо?

На жаль, саме так зараз викладають розробку ПЗ. Дивитися навчальні відео, писати код. І так до безкінечності. Не дивно, що більшість розробників мають проблеми. При вивченні подібних речей ви стаєте повністю прив’язані до коду, з яким працюєте. Щойно вас звідти витягнуть, ви почнете буксувати.

Такий тип навчання («мавпа бачить, мавпа робить») ніколи нікого не підніме до рівня сеньйора. Це повна протилежність тому, що має вміти сеньйор. При вивченні програмування як набору інструкцій легко не помітити всю картину цілком.

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

Що таке вміти ознайомитися з межами коду? У розробці ПЗ — не єдиним кодом, як то кажуть. Це означає здатність бачити повну картину та вміння виконувати всі необхідні кроки у своєму коді, щоб приступити до реалізації.

Таким чином ви зможете легко орієнтуватися в повному життєвому циклі на всіх етапах від тестування до інтегрування та розгортання. Ви повинні вміти виконувати роботу на всіх стадіях.

Як вичавити з усього цього максимальний результат

Основні принципи цієї системи вже були випробувані на десятках розробників. Але при впровадженні системи ви все одно зіткнетесь із деякими загальними проблемами. І ось як із ними боротися:

  • Швидкість: «У сеньйорів багаторічний досвід. Навіть якщо я почну реалізовувати ці кроки, навряд чи я швидше дістануся до їхнього рівня». Якщо ви 12 років просто просиджували штани, ви навряд чи станете старшим розробником. Так, досвід має значення, але ви також можете бути ефективними по-своєму, щоб напрацювати цей досвід. Зробіть хоча б половину того, що я порадив вище, і прийдіть до мене за кілька місяців.
  • Нестача часу: «Цілий день пишу код на роботі, на навчання у мене не залишається сил». Коли ви почнете працювати з цією системою, вам знадобиться лише 5 годин на тиждень (і більшу частину цього часу ви витратите на свою штатну роботу).
  • Відкусили більше, ніж можемо проковтнути : «Так, я дуже хочу вийти за свої рамки і піднятися на новий рівень, але в мене стільки всього навалилося в особистому житті, тож я зроблю це пізніше». Відкрити вам страшну таємницю? В нас усіх така ситуація. Завжди є відволікаючі чинники, які заважають діяти. Коли ж настане той самий час, щоб ви нарешті зайнялися найважливішим?

Знаєте, в чому різниця між розробниками, яким вдалося досягти успіху, і тими, хто просто пливе за течією? Я сам розробляю софт вже вісім років і допомагаю ще 110+ розробникам перейти на новий рівень, тож знаю, про що говорю.

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

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

Хороші новини: можна розпочати прямо зараз. Я склав вам список ресурсів на перший час. Дотримуйтесь інструкцій нижче, щоб отримати доступ до них:

  1. Визначте свої технічні прогалин за допомогою нашої  безкоштовної методики технічної оцінки.
  2. Перегляньте навчальний тренінг, як скоріше прокачатися до мідла/сеньйора і покращити свої технічні навички за допомогою системи «5 кроків».
  3. Це перша стаття за 2022 рік (і буде ще). Підпишіться на мій YouTube-канал, щоб отримати всі найслушніші поради та підказки.

Автор: Dragos Nedelcu

Останні статті

Айтівець Міноборони США понабирав кредитів і хотів продати рф секретну інформацію

32-річний розробник безпеки інформаційних систем Агентства національної безпеки Джарех Себастьян Далке отримав 22 роки в'язниці…

30.04.2024

Простий та дешевий. Українська Flytech запустила масове виробництво розвідувальних БПЛА ARES

Українська компанія Flytech представила розвідувальний безпілотний літальний апарат ARES. Основні його переваги — недорога ціна…

30.04.2024

Запрошуємо взяти участь у премії TechComms Award. Розкажіть про свій потужний PR-проєкт у сфері IT

MC.today разом з Асоціацією IT Ukraine і сервісом моніторингу та аналітики згадок у ЗМІ та…

30.04.2024

«Йдеться про потенціал мобілізації»: Україна не планує примусово повертати українців із ЄС

Україна не буде примусово повертати чоловіків призовного віку з-за кордону. Про це повідомила у Брюсселі…

30.04.2024

В ЗСУ з’явився жіночий підрозділ БПЛА — і вже можна проходити конкурсний відбір

В Збройних Силах України з'явився жіночий підрозділ з БПЛА. І вже проводиться конкурсний відбір до…

30.04.2024

GitHub на наступному тижні випустить Copilot Workplace — ШІ-помічника для розробників

GitHub анонсував Copilot Workspace, середовище розробки з використанням «агентів на базі Copilot». За задумкою, вони…

30.04.2024