Подскажите, пожалуйста. Я работаю фронтенд-разработчиком уже несколько лет, у нас несколько сайтов на cms и основные задачи досточно примитивные: модальные окна, ленивая загрузка изображений и т.п. Т.е. из этого болота jQuery + намазанного сверху js особо необходимости выбираться нет. Но у меня такое чувство, что это тупик, я никак не развиваюсь. Можно схватиться за какой-то фреймворк и учить его, пытаться писать на нём пэт-проект, но меня беспокоит отсутствие у меня достаточных знаний для разработки архитектуры простейших приложений, реализации оптимальных алгоритмой и т.д. Похоже на “ЯП выучила, программировать - нет”.
Куда и как двигаться, какую литературу искать или ментора?
Извините за сумбурное изложение мыслей.
-
Выбери стек для разработки. Я бы предложил выбрать между react+redux vs angular vs vuejs. Если нет будущих планов или шансов этот стек использовать, то принципиальной разницы нет что выбирать. vuejs легко применить в задачах твоего класса, и проще встраиваем в существующие проекта: т.е. мелкие компоненты, которые можно было бы написать на jquery. Если есть шанс использовать ember (этот обычно используется в руби проектах), то можно и его. react и vue концептуально не сильно отличаются, angular - чуть другого поля ягода: он больше крутится вокруг ООП. Если тебя не окружают люди кто в теме ООП - может быть сложнее понять концепции Angular-а.
-
Просмотри документацию чтобы прикинуть что библиотека/фреймверк предлагает. Запусти hello-world, и пару проектов-примеров. Попробуй что-то поменять в проекте. Можешь начать с изучения того как работает http://todomvc.com/. У них есть реализация и на jquery и на любом стеке что ты выберешь. Посмотри туториалы по простейшим приложениям.
-
Попробуй самостоятельно реализовать завершенное приложение. Тот же todomvc без подглядывания в чужую реализацию - хороший вариант старта.
-
Сделай клон существущего проекта. Тут фишка в том чтобы не заморачиваться с вырабатыванием требований, а сфокусироваться на применении того что узнала о фреймверке.
Прочти Code Complete. Это прекрасная книга описывает аспекты разработки, о которых ты слышала и догадывалась. На практике никто не применяет полный спект техних, описанных в книге, но от этого не менее полезно знать что эти техники есть.
Общайся. Найти ментора - это идеальный вариант. Задавай вопросы и отвечай на чужие вопросы. Объяснить то что ты думаешь что знаешь другому - лучший способ реально понять вопрос. На любом этапе у тебя появятся вопросы и затыки. Ментор и общение нужно чтобы их разрулить а так же дать тебе наводку на темы о которых ты ясно не спрашивала.
Чего делать не надо
Бросаться на самые новые и свежие темы. Новизна еще не доказала свою состоятельность.
Вестись на очень эмоциальное описание технологий. Прикинь видна ли тебе личная выгода в том что тебе пробуют “продать”.
Читать справочники, алгоритмы, (типа Кнута), алгоритмическую сложность. Это можно подтянуть когда будешь уметь создавать вещь, продукт.
(это уже мой вкус, но считаю важно) вчитываться в комментарии к статьям. 95% их - шлак. Лучше прочти еще одну статью про опыт автора, чем 20 мнений комментаторов.
Тут зависит и от специфики работы, я тоже делаю модальные окна, только на новом стеке технологий, ничего от фреймворков и ES6 не изменится, если проект имеет однотипную направленность.
То есть заниматься можно тем, что нравится, что бы по кайфу было изучение и пробы нового. Ваши пожелания исполнятся со временем и опытом. Просто сейчас это звучит как желание узнать все стразу. Но нюансов и тонкостей так много и они так быстро меняются, что в книгах такое не написано.
Точно могу сказать, что если вы работаете в мелкой компании, то попытка устроиться на большую “галеру”, даст вам стремительный толчек, сразу появятся стимулы, знаний для прохождения собеседования и потом сразу окунетесь в большую кухню сегодняшний реалий)
@dmitry, спасибо за развернутый ответ, буду следовать вашим рекомендациям. Из фреймворков думаю попробовать vue, как более дружелюбный по описанию. ООП-окружения , к сожалению, нет, да и обилием версий и Typescript меня Angular отпугивает. Не совсем понятно, сам фреймворк отучивает писать лапшекод?
Книгу обязательно прочту, я попыталась взяться за Совершенный код, но он очень тяжело идёт, может это легче пойдёт.
Ментора искать не представляю как и где, и сколько это будет стоить.
@anatooly, есть желание не “узнать всё и сразу”, а желание развиваться в какм-то направлении, желательно правильном :) За совет о собеседованиях спасибо, хотя для этого очень рано.
Таких не бывает. Только понимание последствий своих действий приводит к отсутствию лапши.
Совсем забыл про этот фактор. Учить тайпкрипт это как учить джаву или C#. Они синтаксически и концептуально во многом похожи. А изучать 2 вещи одновременно - не работает (это когда для тебя и язык нов и фреймверк). Дважды пробовал подобный подход - дважды безрезультатно.
Попробуй познакомиться с кем-то на конференциях если бывают в твоем городе.
Плюс всегда можешь писать сюда на форум, тут ребята умные - подскажут ответы на вопросы с разных ракусов.
Еще вариант - посмотри на то что предлагают ребята на порталах типа https://dou.ua/lenta/articles/it-schools-rankings-2016/. Анонсы курсов, может кто-то менторит по доброй душе.
Книга годная. Стоит за нее взяться еще в один подход, но позже, раз идет туго.
Звучит так, что ты хорошо справляешься со своей работой. Другое дело, что это со временем становится неинтересным, не бросающим никакого интеллектуального вызова, никаких проблем (разработчику, работа которого – быть в тонусе решения проблем).
Мне хорошо понятно о чем ты говоришь, я был в такой ситуации. Дальнейшие варианты зависят от конкретного человека.
Тебя это устравает
Ведь ты делаешь работу и получаешь за нее деньги. Что еще нужно? Если нет больше никаких амбиций, то делать может ничего и не нужно. Правда со временем твоя ликвидность на рынке труда будет естественным образом падать (ты будешь стоять на месте, а требования к уровню кода и технологий будет расти). В остальном – нет ничего зазорного в том, чтобы делать простые вещи. Как показывает практика, многие разработчики даже простые вещи качественно и профессионально сделать не в состоянии, зато ReactJS
на каждом углу. Даже там, где он не нужен.
Moar!
Если хочешь делать более сложные и крутые штуки (или хочешь получать больше), то нужно поле для работы посложнее. Попробуй поговорить об этом на работе. Узнай, не намечается ли каких-то новых проектов, которые смогут поднять для тебя планку работы. Мне это кажется абсолютно естетсвенным процессом и его не стоит стесняться. Когда ты умеешь печь пирожки, они надоедают и хочется печь пироги, потом – торты, потом – чего еще похуже. Заметь, что работодатель не обязан обеспечивать тебе рост. Его основная забота – решать бизнес-задачи доступными средствами.
Если хочешь сложнее, а работодатель крутит носом, надо уходить, я считаю. Смысла задерживаться на такой работе нет.
Изучать нужно в первую очередь то, что будешь использовать каждый день. Если этим не будешь подкреплять изученное – все забудешь в скором времени (тем более такими темпами развития фронтенда). Мозг так устроен, что выбрасывает все бесполезное. Я, например, столько всего перелопатил, что мне стыдно, ведь я большую часть забыл. ReactJS
, AngularJS
, VueJS
, Python
и Django
, PHP
, Go
, еще куча барахла. Если на чистоту – все это классные инструменты, но должна быть прикладная сфера их применения. Если ее нет, то это почти впустую потраченное время. Технологий очень много, подводных камней в каждой – еще больше. Задач на работе как правило столько, что учить что-то для расширения кругозора некогда. Поэтому так резко может стоять вопрос естественного роста, а не искусственного.
@dmitry, спасибо за подсказку про dou, даже нашла там тему про менторство (кому интересно - https://dou.ua/forums/topic/10445/ ), но складывается впечатление, что там всё печально с этим. Плюс ментору нужно задавать конкретные вопросы, а я не могу их даже сформулировать.
Буду пытаться мониторить курсы там, но мне попадались курсы Кантора, в них больше про синтаксис и меньше - про организацию кода и архитектуру, боюсь, чтобы на всех курсах такого не было.
@xoria, спасибо за ваш комментарий. Вы всё правильно пишете. Неудовлетворённости от простых вещей на работе нет, неудовлетворённость от понимания того, что все крутые штуки проходят мимо, что на конференции сидишь и ничего не понимаешь. Чувствую себя верстальщиком на таблицах, когда все давно освоили флексы и учат гриды. По поводу применения на работе - надо подумать, как это правильно сделать. Не очень люблю работать под давлением и, боюсь, мне будет трудно объяснить, что очередное условное модальное окно делается не за час, а за два дня, потому что оно не на jq, а на %framework_name%, который я только изучаю.
До сих пор ты справлялась с этой задачей (я про текущий топик).
Больная тема на самом деле. Я искал года четыре назад что-то про ахритектуру и организацию кода. Думал что есть “правильный” путь. Сейчас вижу что скорее есть вещи которые в одном случае работают, а в другом нет. Не более, не менее. Обрел свободу, прочитав The Pragmatic Programmer - Wikipedia. Фраза “используй то что работает для тебя” стала для меня открытием.
Научился оформлять код только тогда когда начал смотреть/слушать как люди решают те задачи, с которыми я сталкивался. В этом плане, как выше написали, смена работы будет способствовать смена работы.
А вот тут аккуратнее. Конференции/презентации не являются отражением реального положения дел в программировании. Для многих людей конференция - это не способ донести разумное, доброе вечное. Кто-то выступает из маркетинговых соображений, кто-то рассказывает о том что ему/ей интересно (а не то что важно и имеет значение), кто-то использует как трамплин в своей карьере, а кто-то идет из фрустрации что все еще верстает на таблицах. Разумеется есть идейные люди, но таких единицы. Именно поэтому я писал выше Прикинь видна ли тебе личная выгода в том что тебе пробуют “продать”..