Куда расти как разработчику (фронтенд)

Подскажите, пожалуйста. Я работаю фронтенд-разработчиком уже несколько лет, у нас несколько сайтов на cms и основные задачи досточно примитивные: модальные окна, ленивая загрузка изображений и т.п. Т.е. из этого болота jQuery + намазанного сверху js особо необходимости выбираться нет. Но у меня такое чувство, что это тупик, я никак не развиваюсь. Можно схватиться за какой-то фреймворк и учить его, пытаться писать на нём пэт-проект, но меня беспокоит отсутствие у меня достаточных знаний для разработки архитектуры простейших приложений, реализации оптимальных алгоритмой и т.д. Похоже на “ЯП выучила, программировать - нет”.
Куда и как двигаться, какую литературу искать или ментора?
Извините за сумбурное изложение мыслей.

  1. Выбери стек для разработки. Я бы предложил выбрать между react+redux vs angular vs vuejs. Если нет будущих планов или шансов этот стек использовать, то принципиальной разницы нет что выбирать. vuejs легко применить в задачах твоего класса, и проще встраиваем в существующие проекта: т.е. мелкие компоненты, которые можно было бы написать на jquery. Если есть шанс использовать ember (этот обычно используется в руби проектах), то можно и его. react и vue концептуально не сильно отличаются, angular - чуть другого поля ягода: он больше крутится вокруг ООП. Если тебя не окружают люди кто в теме ООП - может быть сложнее понять концепции Angular-а.

  2. Просмотри документацию чтобы прикинуть что библиотека/фреймверк предлагает. Запусти hello-world, и пару проектов-примеров. Попробуй что-то поменять в проекте. Можешь начать с изучения того как работает http://todomvc.com/. У них есть реализация и на jquery и на любом стеке что ты выберешь. Посмотри туториалы по простейшим приложениям.

  3. Попробуй самостоятельно реализовать завершенное приложение. Тот же todomvc без подглядывания в чужую реализацию - хороший вариант старта.

  4. Сделай клон существущего проекта. Тут фишка в том чтобы не заморачиваться с вырабатыванием требований, а сфокусироваться на применении того что узнала о фреймверке.

Прочти Code Complete. Это прекрасная книга описывает аспекты разработки, о которых ты слашала и доагадывалась. На практике никто не применяет полный спект техних, описанных в книге, но от этого не менее полезно знать что эти техники есть.

Общайся. Найти ментора - это идеальный вариант. Задавай вопросы и отвечай на чужие вопросы. Объяснить то что ты думаешь что знаешь другому - лучший способ реально понять вопрос. На любом этапе у тебя появятся вопросы и затыки. Ментор и общение нужно чтобы их разрулить а так же дать тебе наводку на темы о которых ты ясно не спрашивала.

Чего делать не надо

Бросаться на самые новые и свежие темы. Новизна еще не доказала свою состоятельность.
Вестись на очень эмоциальное описание технологий. Прикинь видна ли тебе личная выгода в том что тебе пробуют “продать”.
Читать справочники, алгоритмы, (типа Кнута), алгоритмическую сложность. Это можно подтянуть когда будешь уметь создавать вещь, продукт.
(это уже мой вкус, но считаю важно) вчитываться в комментарии к статьям. 95% их - шлак. Лучше прочти еще одну статью про опыт автора, чем 20 мнений комментаторов.

1 симпатия

Тут зависит и от специфики работы, я тоже делаю модальные окна, только на новом стеке технологий, ничего от фреймворков и ES6 не изменится, если проект имеет однотипную направленность.

То есть заниматься можно тем, что нравится, что бы по кайфу было изучение и пробы нового. Ваши пожелания исполнятся со временем и опытом. Просто сейчас это звучит как желание узнать все стразу. Но нюансов и тонкостей так много и они так быстро меняются, что в книгах такое не написано.

Точно могу сказать, что если вы работаете в мелкой компании, то попытка устроиться на большую “галеру”, даст вам стремительный толчек, сразу появятся стимулы, знаний для прохождения собеседования и потом сразу окунетесь в большую кухню сегодняшний реалий)

2 симпатии

@dmitry, спасибо за развернутый ответ, буду следовать вашим рекомендациям. Из фреймворков думаю попробовать vue, как более дружелюбный по описанию. ООП-окружения , к сожалению, нет, да и обилием версий и Typescript меня Angular отпугивает. Не совсем понятно, сам фреймворк отучивает писать лапшекод?
Книгу обязательно прочту, я попыталась взяться за Совершенный код, но он очень тяжело идёт, может это легче пойдёт.
Ментора искать не представляю как и где, и сколько это будет стоить.

@anatooly, есть желание не “узнать всё и сразу”, а желание развиваться в какм-то направлении, желательно правильном :) За совет о собеседованиях спасибо, хотя для этого очень рано.

Таких не бывает. Только понимание последствий своих действий приводит к отсутствию лапши.

Совсем забыл про этот фактор. Учить тайпкрипт это как учить джаву или C#. Они синтаксически и концептуально во многом похожи. А изучать 2 вещи одновременно - не работает (это когда для тебя и язык нов и фреймверк). Дважды пробовал подобный подход - дважды безрезультатно.

Попробуй познакомиться с кем-то на конференциях если бывают в твоем городе.

Плюс всегда можешь писать сюда на форум, тут ребята умные - подскажут ответы на вопросы с разных ракусов.

Еще вариант - посмотри на то что предлагают ребята на порталах типа https://dou.ua/lenta/articles/it-schools-rankings-2016/. Анонсы курсов, может кто-то менторит по доброй душе.

Книга годная. Стоит за нее взяться еще в один подход, но позже, раз идет туго.

1 симпатия

Звучит так, что ты хорошо справляешься со своей работой. Другое дело, что это со временем становится неинтересным, не бросающим никакого интеллектуального вызова, никаких проблем (разработчику, работа которого – быть в тонусе решения проблем).

Мне хорошо понятно о чем ты говоришь, я был в такой ситуации. Дальнейшие варианты зависят от конкретного человека.

Тебя это устравает

Ведь ты делаешь работу и получаешь за нее деньги. Что еще нужно? Если нет больше никаких амбиций, то делать может ничего и не нужно. Правда со временем твоя ликвидность на рынке труда будет естественным образом падать (ты будешь стоять на месте, а требования к уровню кода и технологий будет расти). В остальном – нет ничего зазорного в том, чтобы делать простые вещи. Как показывает практика, многие разработчики даже простые вещи качественно и профессионально сделать не в состоянии, зато ReactJS на каждом углу. Даже там, где он не нужен.

Moar!

Если хочешь делать более сложные и крутые штуки (или хочешь получать больше), то нужно поле для работы посложнее. Попробуй поговорить об этом на работе. Узнай, не намечается ли каких-то новых проектов, которые смогут поднять для тебя планку работы. Мне это кажется абсолютно естетсвенным процессом и его не стоит стесняться. Когда ты умеешь печь пирожки, они надоедают и хочется печь пироги, потом – торты, потом – чего еще похуже. Заметь, что работодатель не обязан обеспечивать тебе рост. Его основная забота – решать бизнес-задачи доступными средствами.

Если хочешь сложнее, а работодатель крутит носом, надо уходить, я считаю. Смысла задерживаться на такой работе нет.

Изучать нужно в первую очередь то, что будешь использовать каждый день. Если этим не будешь подкреплять изученное – все забудешь в скором времени (тем более такими темпами развития фронтенда). Мозг так устроен, что выбрасывает все бесполезное. Я, например, столько всего перелопатил, что мне стыдно, ведь я большую часть забыл. ReactJS, AngularJS, VueJS, Python и Django, PHP, Go, еще куча барахла. Если на чистоту – все это классные инструменты, но должна быть прикладная сфера их применения. Если ее нет, то это почти впустую потраченное время. Технологий очень много, подводных камней в каждой – еще больше. Задач на работе как правило столько, что учить что-то для расширения кругозора некогда. Поэтому так резко может стоять вопрос естественного роста, а не искусственного.

2 симпатии

@dmitry, спасибо за подсказку про dou, даже нашла там тему про менторство (кому интересно - https://dou.ua/forums/topic/10445/ ), но складывается впечатление, что там всё печально с этим. Плюс ментору нужно задавать конкретные вопросы, а я не могу их даже сформулировать.
Буду пытаться мониторить курсы там, но мне попадались курсы Кантора, в них больше про синтаксис и меньше - про организацию кода и архитектуру, боюсь, чтобы на всех курсах такого не было.

@xoria, спасибо за ваш комментарий. Вы всё правильно пишете. Неудовлетворённости от простых вещей на работе нет, неудовлетворённость от понимания того, что все крутые штуки проходят мимо, что на конференции сидишь и ничего не понимаешь. Чувствую себя верстальщиком на таблицах, когда все давно освоили флексы и учат гриды. По поводу применения на работе - надо подумать, как это правильно сделать. Не очень люблю работать под давлением и, боюсь, мне будет трудно объяснить, что очередное условное модальное окно делается не за час, а за два дня, потому что оно не на jq, а на %framework_name%, который я только изучаю.

До сих пор ты справлялась с этой задачей (я про текущий топик).

Больная тема на самом деле. Я искал года четыре назад что-то про ахритектуру и организацию кода. Думал что есть “правильный” путь. Сейчас вижу что скорее есть вещи которые в одном случае работают, а в другом нет. Не более, не менее. Обрел свободу, прочитав https://en.wikipedia.org/wiki/The_Pragmatic_Programmer. Фраза “используй то что работает для тебя” стала для меня открытием.

Научился оформлять код только тогда когда начал смотреть/слушать как люди решают те задачи, с которыми я сталкивался. В этом плане, как выше написали, смена работы будет способствовать смена работы.

А вот тут аккуратнее. Конференции/презентации не являются отражением реального положения дел в программировании. Для многих людей конференция - это не способ донести разумное, доброе вечное. Кто-то выступает из маркетинговых соображений, кто-то рассказывает о том что ему/ей интересно (а не то что важно и имеет значение), кто-то использует как трамплин в своей карьере, а кто-то идет из фрустрации что все еще верстает на таблицах. Разумеется есть идейные люди, но таких единицы. Именно поэтому я писал выше Прикинь видна ли тебе личная выгода в том что тебе пробуют “продать”..

1 симпатия