Після завершення курсу з Front-end, який я веду, мене часто просять дати рекомендації щодо подальших планів. Щоб не повторюватися, я вирішив скласти своє бачення загального рекомендаційного плану розвитку Front-end розробника після базового курсу HTML/CSS/Javascript.
Я не можу гарантувати, що цей план допоможе всім, і точно не варто сліпо йому слідувати, але він напевно може дати кілька ідей для розвитку.
Алгоритми
Для початку є знання, які знадобляться вам рано чи пізно, хоча миттєвого ефекту від них ви не отримаєте. На перших етапах навіть може здаватися, що такі знання не застосовуються в реальних задачах. Але в довгостроковій перспективі їх усе ж краще мати. Йдеться про алгоритми, патерни та стиль коду.
До вивчення: алгоритми, патерни, стиль коду, серія Clean Code.
Багато програмістів приходять до вивчення таких, здавалося б, базових сфер лише через роки кар’єри. У цьому є й позитивні моменти, бо вони вже точно знають, де застосувати ці знання. У них у роботі є проблеми, і вони знаходять розв’язання саме в цих знаннях.
Без «проблеми» ці знання матимуть більш теоретичний характер. Але все ж я раджу якомога раніше почати заглиблюватися в основи. Не перемикати весь вектор розвитку повністю на цю тематику, а просто приділяти 10-15% часу, який ви витрачаєте на навчання, вивченню чогось нового саме з алгоритмів, патернів і так далі.
Ці знання дозволять вам бути універсальним програмістом, коли для вивчення синтаксису й принципів нової мови не доведеться витрачати місяці.
HTTP, клієнт-сервер
Для веб-розробника важливе розуміння принципів взаємодії клієнт-сервер. Основа таких знань — це протокол HTTP і навіть деякі принципи мережевої взаємодії.
Знання цих сфер знадобляться, коли ви зіткнетеся з проблемами завантаження ресурсів, швидкістю завантаження сторінки та під час роботи з AJAX.
Основи Javascript
Це основа вашої спеціалізації, тому треба стежити, щоб нестача знань синтаксису й можливостей мови не ставала перешкодою в задачах, які перед вами стоять.
Потрібно регулярно стежити за появою нових можливостей мови (тоді це був ES6 і далі ES7).
Верстка (HTML, CSS…)
Вам потрібно добре розбиратися у верстці, навіть якщо 90% коду, який ви писатимете, буде JS. Javascript у браузері тісно пов’язаний з DOM, тому без глибоких знань HTML і CSS буде важко.
Корисні вміння: Flexbox, робота з SVG, Canvas, CSS3 анімації та трансформації.
Бібліотеки, фреймворки та інструменти
jQuery — потрібно знати про можливості й обмеження, уміти застосувати jQuery-плагін або написати власний.
Angular — потрібно мати хоча б елементарний досвід створення односторінкового застосунку, те, що у вас уже мало бути після нашого фінального завдання.
React.js — дуже бажано розібратися в принципах роботи, бо саме в цей бік зараз рухається веб-розробка. Бажано також мати хоча б мінімальний досвід створення застосунку за складністю подібного до нашого фінального завдання, але з використанням React.js + Flux (або Redux), хоча без розуміння принципів це марно.
lodash — знання цієї бібліотеки прийде вам на допомогу, коли потрібно буде працювати з даними. Немає сенсу заучувати використання кожної функції, потрібно лише в потрібний момент уміти звернутися до документації й розібратися, яка саме функція бібліотеки вирішить вашу проблему.
node.js — дуже бажано мати хоча б невеликий досвід розробки простих скриптів для node.js, враховуючи, що це лише інше середовище виконання Javascript. В ідеалі це має бути простий сервер (з використанням Express) або програма для роботи з файлами.
Gulp і Grunt — системи збірки для веб-проєктів (працюють за допомогою node.js), важливо розуміти принципи й уміти налаштовувати плагіни та модернізувати функціональність за потреби.
Що робити зараз? Куди йти працювати?
Можу порадити почати з однієї незвичної задачі, тільки одразу попереджаю: вона вимагає чималої самоорганізації. Поставте самі перед собою якусь задачу і реалізуйте її.
Чим ви займаєтеся, окрім вивчення JS? Що вам цікаво? Може, ви вишиваєте хрестиком? Або граєте на музичному інструменті? Спробуйте зробити сайт про своє захоплення, реалізувати його так, щоб код не соромно було показати майбутньому роботодавцю. Такою задачею ви вирішуєте одразу кілька проблем:
- ви робите те, що вам подобається;
- ваш проєкт може бути корисний комусь, крім вас;
- ви набираєтеся досвіду;
Якщо ваше захоплення не дуже підходить для створення сайту про нього, то зробіть сайт для будь-чого. Хоч сайт для спілкування мешканців вашого будинку. Відвідуваність не важлива, важливо — як саме ви його зробите. І стежте за тим, щоб кожен ваш новий проєкт був кращим за попередній.
Далі, залежно від удачі й умінь, у вас є кілька варіантів:
-
стати стажером. І це, мабуть, найкращий варіант. У вас з’являється можливість працювати в команді, вирішувати реальні задачі й розвиватися. Мінус — символічна оплата або її відсутність. Рано чи пізно у вас накопичиться достатньо досвіду, щоб бути цікавим кандидатом для інших компаній, або ж вам запропонують повноцінну роботу там, де ви стажувалися.
-
стати фрилансером. Непоганий варіант. У вас буде можливість працювати з реальними проєктами, але вже без команди. Оплата — від 0 до середньої по ринку. На початкових етапах можна просити замовників надіслати задачу «просто так» і розв’язати її безкоштовно. Думаю, багато хто піде назустріч, а у вас з’явиться ще одна робота в портфоліо, досвід і замовник, який потенційно може дати вам наступний проєкт — уже оплачуваний.
-
спробувати себе в ролі OpenSource-програміста. У світі існує величезна кількість проєктів, які тільки й чекають, що хтось прийде, додасть функціональності або полагодить наявні баги. Почати може бути трохи складно, можливо, до цього ви прийдете, побувши стажером або фрилансером.
Щоб влитися у світ OpenSource, можна спробувати такий план: знаходите на Github цікавий, не дуже популярний і нескладний проєкт, дивитеся, які в нього є проблеми, вирішуєте їх і робите pull request з рішенням. В ідеальному випадку ваш код приймуть, і тепер ви контриб’ютор у відкрите програмне забезпечення, яке створюється такими ж людьми, як і ви. Чим більше ви зробите таких правок, тим більше досвіду у вас буде, тим швидше ви зможете розбиратися у складних проєктах і тим швидше влаштуєтесь на хорошу роботу. Профіль Github такої людини — величезний плюс до резюме.
Не бійтеся писати HR-ам компаній, які вас цікавлять, листи в стилі «Я вчуся і хочу у вас стажуватися». Це дає вам певний плюс — HR-ам не доведеться зацікавлювати вас, ви ж самі до них «прийшли». Не нехтуйте цим прийомом навіть тоді, коли шукатимете наступну роботу.
І головне — якщо ви не бачите, як можна покращити ваш код через день, тиждень або місяць, значить, ви не розвиваєтеся як розробник, отже, потрібно приділяти більше часу навчанню. Успіхів!