Всем привет, прошу сильно не ругать за длинно-пост и прочитать до конца по возможности. Буду рад любым советам.
Суть:
Работаю в небольшом городе России 200+ населения, в веб студии, зарплата для своего региона достаточно высокая, 50 000р.
У себя на работе стек HTML, CSS, JS + PHP на уровне создания тем, модулей под WP, Opencart, Modx, ....другие cms.
Т.е по сути работа достаточно галлерная, но интересная в плане заказов, интересные фичи, верстка. В компании только cms, таких "гигантов как Symfony и Laravel" нет, да и в принципе душа лежит не лежит к бэку, нравится именно фронт и клиентская часть.
К самой работе притензия одна - нет роста, а если нет роста - не растет и зарплата.
К сожалению на весь город 2 вакансии Реакта и Вью, PHP в роли WP и Битрикса, и пару вакансий C# middle+ и сеньора джавы. + остальное это студии с меньшим количество зарплаты(раза в 2). Сам студент( еще 1,5 года учиться), поэтому релокейт в крупный город пока не светит. Пытаюсь уже месяц выйти на удаленку и соскочить с студии, но фронт джунов - очень мало вакансий на удаленку, больше требуют мидлов. Либо - прошел на 2 собеседования, но не понравилось то, что та же галера что у меня, т.е помощи и вопросов не дождешься, проблемы так же решаются через стак, подсказать пишу ли говнокод или нет - некому.
Как пытаюсь решить проблему:
На работе за 2 года поднял скилы на хороший уровень, спокойно работаю с нативным js + jquery. Но сам понимая что стагнирую плотно сел за пет проекты, в качестве либы\фрейма взял react, сейчас подсел на next. В бэк сильно не лезу, поэтому в качестве бэка беру пока что сервисы вроде firebase. Спокойно сделал пару проектов вроде сервисного центра с авторизацей, пагинацией, фильтрацией, drag-n-drop и прочими приблудами - в целом было сложно, но стак, тостер и гугл решают все проблемы.
Что не получается:
Критическая проблема в том что я не вижу правильной архитектуры. И это прям выбивает из колеи.
Пример: делаю spa сервисного центра, делю на компоненты, на страницы. Далее узнаю что обращаться к api(именно создание логики) напрямую из компонента - не тру, для этого создают отдельную папку и туда пихают апи деля его на логические структуры, например апи с запросом к клиентам, апи с запросом к сломанным девайсам и тд. Окей. Переписываю.
Далее гуглю дальше, понимаю что прокидывать пропсы через все приложение не тру, для этого существует контекст, создаю контекст, оборачиваю в него в него все приложение, и далее беру напрямую. Опять переписываю "всё" приложение.
И вот таких моментов 1000 и 1 поиск по гуглу и стаку. Всё собирается по крупицам. Это не говоря о том что я только что узнал что есть такие вещи как интерцепторы, записывание определенных ключей в env, и еще куча примеров. Всё отрывками, и очень скомкано.
Вопрос: есть ли на ютубе каналы, или хорошие книги, которые будут показывать как всё таки правильно делать архитектуру для таких примеров, и как не наступать в говнокод? Рассазывают почему именно так, а не иначе? Про паттерны проектирования, про ООП вообще молчу, так как не понимаю как это применяется. Из паттернов применял пока только observer, и то на уровне mobx и под его либой.
Что тут сказать, могу предложить курсы, где рассказывают про архитектуру (в тех же learnJavascript в продвинутом реакте было это, или в hexlet).
Можно почитать хорошие книжки, Мартина советую чистый код и чистую архитектуру. Про общие подходы и про дизайн чего то более сложного у Клепмана в высоконагруженных приложениях можно много чего интересного найти)
Можно найти ментора с которым поделать вместе свои пет проекты)
Станислав Макаров, Я думаю пока я джун, будет выстрелом в ногу лезть очень глубоко в CS? Наверное все таки фронт, а потом уже устроившись на работу качать себя дальше.
можно я просто впихну своё мнение?
Считаю, что фриланс, даже тот же upwork может помочь с поиском интересных заказов. Да, в одном месте будет иногда гореть, но иногда будут крайне интересные проекты. Особо популярны сейчас всякие современные JS штуки там
Дмитрий Баскаков, Я думаю ТС в принципе фриланс не будет пригоден, так как для фриланса нужен хотя бы зрелый мидл, иначе просто деньги будет на ветер выкидывать, и времени тратить овер прайс. Лучшей тактикой всё таки будет поиск работы удаленной, где будет умный ментор(миддл\сеньор) который будет тыкать носом в плохой код, и говорить почему плохо, а почему хорошо. Часто такое бывает в продуктовых компаниях, а аутсорс это больше про тяп-ляп и в продакш.
Ну и само собой можешь со мной позаниматься как минимум за час расскажу о принципах проектирования и введу в курс дела, как максимум при постоянных занятиях сделаем пару проектов по всем нормам хорошего тона)
И вот таких моментов 1000 и 1 поиск по гуглу и стаку.
Вообще, то что все это у вас проходит на практике - это большой плюс.
После того как что-то сделано неправильно, а потом переделано - это означает, что в памяти и в понимании почему неправильно плохо, оно отложится лучше, чем если где-то один раз почитать и забыть.
Продолжай делать как делаешь. Много практики, много гугления. Можно смотреть чужой код, но тут проблема в том, что чужой код, для того чтобы понять его смысл, нужно не посмотреть, а хорошо вникнуть, а это время. Поэтому надо выбрать 1-2 опенсорс проекта и с ними разобраться, там уже изнутри, будет понятно где архитектура хорошая (и почему и для чего сделано было так), а где "исторически сложилось" или "срочно надо было заделать".
А вообще, я считаю, что работа в вебстудии, это самое лучше (пока), что случалось со мной случалось в плане прокачки скилов, задач полно, разнообразные. Постоянно новые решения. И с опытом, когда решаешь похожие задачи начинаешь видеть лучшие решения, как улучшить, как не гавнокодить в очередной раз.......
Просто некоторые вещи приходят с опытом......
Тут понимаешь, нету как такового дельного совета, качай скилы, пока есть возможность. И на удаленку в Москву или еще куда.
Тебе пока наверное лет 20, может чуть больше, семьи своей нету? Тогда совет, который я бы дал себе двадцатилетнему.....
Забей на телочек, забей на гулянки, самообразовывайся. Учи английский, учи одну-две технологии, фреймворка и стремись выйти на ЗП в раза три больше чем сейчас. Сложно будет, сложно отказаться от девок, от гулянок, но оно потом все оправдается.....
Потом и девчата появятся и деньги, и все-все что нужно......
Извини за разброс мыслей.... мне еще работать сейчас....
Думаю стоит попробовать поискать решение вашей проблемы в социально-процессной плоскости.
На работе за 2 года поднял скилы на хороший уровень, спокойно работаю с нативным js + jquery. Но сам понимая что стагнирую плотно сел за пет проекты
А что говорят на этот счёт люди, принимающие решение в вашей веб-студии? Если никто не использует инструменты, которые вы считаете эффективными, почему бы вам не быть первым?
Совет может быть немножко вредный, раз вы только начинающий в реакте и вообще в разработке, но вреден он будет скорее для веб-студии, а не для вас.
Тема такая проскальзывала - у компании явный задел на прибыль, 90% работы идет на upwork и сарафанное радио + старые клиенты, поэтому только CMS. Потому что, прибыль течет рекой, насчет архитектуры никто не заморачивается, качество кода никого не волнует. В первую очередь прибыль, и визуал, а далее все по новой) По этому и понял что хочу развиваться с команде программистов более высого уровня, иначе просто утону в болоте
Самый верный и правильный вариант - качнуть себя настолько, насколько возможно для pre-джуна. Сделать пет проект, довести его до ума, с ним идти на hh и долбиться на каждую вакансию.
Лучшей вакансией будет - а) продуктовая компания, где идет менторство джуна(код ревью, помощь с проблемами, обучение и тд) б) компания где не мчаться с бешенной скоростью что бы закрыть таску хоть бы как, лишь бы работало. Таких компаний не так много на рынке, поэтому нужно будет искать.
А пока что к сожеланию вывод такой - сейчас на джуна накидывают работу мидла, поэтому в проекте где новичок должен делать логику вроде "условный рендеринг в зависимости от данных сервера", вывод модалки -> человек пишет говно-архитектуру и приложение как мотылек умирает, так как не расширяемо.
Попробуй начать ходить по собесам в поисках дистанционных вакансий в своем стеке на позицию мидла. Как вариант даже лучше пойти в аутстафинговую компанию, там за пару лет можно пройти через несколько разных проектов и изнутри изучить и процессы, и архитектуру и вариации стека и пр. Параллельно можно читать книжки, смотреть ролики про архитектуру и далее развиваться в этом направлении.
Оффлайн отходит на второй план, сейчас многие компании научились в онлайн, что вообще снимает вопрос о географии.
На среднесрочную перспективу качай инглиш хотя бы до B2, тогда тебе откроется еще и зарубежный аутстафф с чуть более другими рейтами. :)