Цель — WEB Full-stack. Сносный ли план обучения для новичка?

Вводные данные:
- Парень, 22 года.
- Учусь в колледже, заочно первый курс.
- После окончания первого курса, хочу начать работать.
Кто уже работает в сфере WEB разработки, подскажите как вам мой план обучения? Может что-то лишнее или
наоборот, чего то не хватает?
61914b6e7f951456900434.png
UPD : запутался в терминах
  • Вопрос задан
  • 2524 просмотра
Решения вопроса 1
vabka
@vabka Куратор тега Веб-разработка
Если бы это был вопрос "хороший ли это роадмап для asp net разработчика", то я бы сказал, что это отличный роадмап (за исключением питона, php, фриланса, и в принципе порядка изучения).
Многое можно учить параллельно (английский)
Что-то можно отложить (копание в алгоритмах)
Ну и на счёт источников знаний не уверен - те же "Грокаем Алгоритмы" уж слишком для маслят книга.

А вот по девопсу я что-то не вижу тут ничего.
Для девопса важно:
1. Понимать, как устроен процесс разработки. В идеале ещё и уметь писать код
2. Уметь работать с ci/cd системами. Gitlab, Azure devops, Jenkins, Teamcity
3. Уметь работать с git
4. Уметь работать с линуксовой консолью, и с линуксом в целом
5. Шарить за docker и k8s
6. Понимать, что devops - это набор практик, а не должность.
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
@bestann
Я училась хорошо, но из знаний тебе действительно понадобится математика (развитое логическое мышление) + английский, это отмечено правильно. В остальном много лишнего и уводящего не в ту степь. Работала в телефонии, но тоже пришлось перейти в DevOps, т.к. нет перспектив. В итоге по жизни приходилось учить кучу всего НЕНУЖНОГО (например разные телефонные станции, на что ушло много времени). Если бы сразу удалось на Linux устроиться, не потеряла бы 15 лет. Поэтому пишу тебе о том,что действительно понадобится. Не трать время не ненужное, и так учить надо ОЧЕНЬ МНОГО. Нужен широкий кругозор.

Установи дома операционную систему Pop!_OS (на основе Ubuntu) и привыкай работать в Linux. Поставь там qemu, kvm, git, ansible, docker, docker-compose. Тебе будет достаточно виртуальных машин для изучения материала. Ansible на самой машине как контрольная управляющая нода, а настраивать им виртуалки.

Поставь VSCode Insiders Edition. В нем хорошо работать с кодом. Там плагинов много. И для редактирования yml файлов Ansible, Kubernetes), для Dockerfile, и для программирования потом пригодится.

Поставь Obsidian. И пиши всю документацию там, собирай там все свои знания! Приучай себя делать конспекты и переводы. Формат написания - Markdown, как раз тот, в котором программисты README.md пишут. https://obsidian.md/ (ставится на разные ОС)

Чтобы не учить лишнее, пишу, что учить:
Хорошо знать Linux - Уильям Шоттс - Ок, найди книгу RHCSA8 Sander van Vugt (даже на русском есть,думаю, умеешь искать), подготовься и сдай экзамен RHCSA, дает хорошую базу по Linux. Также есть его видеокурсы, я по ним готовилась. (тоже достанешь). Второй хороший автор Andrew Mallet. Практикуйся на виртуалках CentOS8 (у них проблема с поддержкой с нг, но можешь и нестабильный релиз использовать,тебе же не в продакшн). За рубежом сейчас альтернатива — Rocky Linux. На виртуалках посмотришь как работать с менеджером пакетов yum/dnf, на Pop!_OS - c apt.
На русском по Linux курсы Кирилла Семаева на Youtube.

Ansible — управление конфигурациями. Подготовка к экзамену RHCE8 (он после RHCSA), те же авторы (книги есть). У Andrew Mallet досконально разбирается Ansible, можно одновременно с Linux учить,потому что он там и линуксовые команды grep и прочие использует для анализа файлов конфигурации. Очень хороша родная документация на сайте Ansible. Также качай примеры ролей на Ansible Galaxy.
На русском курсы Астахова на Youtube.

Git — тут что найдешь. Он есть в составе Kubernetes База от Слерм, материалов достаточно. Цикл статей почитай тут https://css-tricks.com/creating-the-perfect-commit..., 7 и 8 часть скоро выложат. Но для начала поищи видеокурсы на русском (все есть). Надо видео посмотреть, чтоб нагляднее было, потому что сначала непонятно как это ты работаешь вроде в одной папке, но можешь находиться в разных ветках.

Gitlab — Как вариант завести аккаунт на Gitlab.com и там пробовать. И смотри файлы .giltab-ci.yml и сопутствующие включаемые файлы через include самого Gitlab. Узнай как включать переменные, якоря, extends, needs, правила rules, needs (кстати сейчас можно без stage только через needs), разницу между кэшами и артефактами.
Jenkins, teamcity используется, но Gitlab у нас чаще... Учи то что чаще используется. Ты не сможешь все инструменты освоить физически. Как устроишься, будешь осваивать имеющееся на работе.

Docker — так же можешь изучить дома. Курсов хватает. Также попробуй в docker-compose запустить несколько контейнеров.

Также ты должен знать хотя бы как устанавливать MySQL (про другие бд потом можно расширить), добавлять базы, бэкапить, заводить пользователей, давать права.

Попробуй установить Nginx + php-fpm + mysql (или MariaDB) - например, чтоб заработала википедия простая BookStack. Локально пропиши имя сайта и проверь как работает, бэкапь базу, потом все удали и восстанови. https://www.bookstackapp.com/

Kubernetes — сложно без базы указанной выше, но можешь подписаться на youtube канал Слерма,у них же есть периодически бесплатные курсы с возможностью практики. Дома можно только minikube, если ресурсов мало. Это факультативно, даже первые 4 пункта.

По языкам программирования. Хотя бы освой bash в Linux. Python или Go — можно намного позже, это уже для программистов.Для тебя это будет плюсом.но в довесок. Иначе ты до профессии девопса будешь долго идти, а вернее до пенсии)) Сейчас спрос очень большой!!!

Итак, резюмируя: Linux (+bash), Ansible, Docker, git —must have, Gitlab, SQL - желательно. Сети — очень зависит от работы. Главное, понимать что такое ip-адреса, dns, маска, шлюз, понимать как настраивать файрвол и сетевые интерфейсы в Linux, понимать что включить (какой параметр), чтобы Linux начал маршрутизировать трафик.
Kubernetes, Terraform — это уже уровнем выше.

Далее штудируешь вопросы к собеседованиям (тоже есть в интеренете),причем некоторые вопросы особенно часто задают на собесах (сама недавно собесы проходила). Проходишь 10-15 собеседований и прокачиваешься, записывай все задаваемые вопросы и готовься после каждого собеса к следующему. Могут дать и тестовое задание, если на джуна. Попроси время на выполнение.

Тут расти и расти до бесконечности.

Извини за нескромный вопрос: почему ты в 22 года только на 1 курсе колледжа заочно? Это даже не вуз.
И что за краткий курс школьной математики? Ты в школе не учился что ли?
DevOps — это непросто, поэтому надо хорошо понимать, какая у тебя база, потянешь ли ты.

UDP. Только увидела.
Если цель не DevOps, а web fullstack, то может твой план подойдет больше. Но тоже надо иметь ввиду, что FullStack — это много. Иди сначала фронтенд-разработчиком. Если хочешь учит востребованное, то JavaScript, для фронденда фреймфорк vue.js или react. Если хочешь быть бэком, надо уже хорошо знать базы данных помимо самого языка программирования. Из популярных так же JavaScript (node.js). Python и Go так же популярны. И если уж учить, то Go, а не C#.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега IT-образование
software engineer
Все очень плохо.
А теперь подробнее.

1. Рекомендую почитать несколько статей о том, что такое девопс инженер, потому что понятие девопс методологий и девопс инженера - кардинально различаются.

2. У вас очень много книг. Это неплохо. Но у вас вообще не вижу практики. Это плохо.
Есть заметка, что "неплохо бы иметь второй проект", но даже нет идей что за проект.
Какой-то пет проект, который вы будете писать не потому, что у вас есть идея, которую вы хотите воплотить в цифровом виде, а просто потому что "нужно пет проект для портфолио"?
Так это не работает, точнее такой пет-проект будет больше похож на непонятно кому нужную курсовую, которую вам не будет интересно развивать, искать варианты реализации понимая какой результат вам нужен. С другой стороны девопс не может существовать отдельно от проекта...

3. Вообще нет критичных для девопса технологий и практик, а именно - все что касается администирования. Девопс инженер, как позиция, это больше про администрирование, а не про разработку. Да, это про администрирование того, что нужно в разработке и нужно разбираться в том, как работают разработчики, но все же основные навыки именно инженера - автоматизация инфраструктуры для сборки и работы приложений.

P.S. Вижу, что топик поменялся с DevOps на Web full stack - в таком случае мой ответ более нерелевантен, но возможно из-за него топик и поменялся =)
Ответ написан
2ord
@2ord
По-большей части DevOps - это сисадминство, сопрягать и настраивать (в основном скрипты и языки) различное ПО и ОС, умение интегрировать облачные сервисы и строить системы для разворачивания ПО. Это не столько инженерия программирования, сколько умение разбираться в зоопарке технологий и практик. Что-то типа инженера-механика, мастера на все руки. Как верно замечено другими - автоматизация инфраструктуры (для ИТ-предприятий).
Упор нужен на знание инструментария ОС, комп. сети, информационную безопасность. Чтобы понимать как строить системы из готовых компонентов.
C# будет скорее всего лишним, а вот Питон очень понадобится и не раз.
Шаблоны проектирования - для общего образования, чтобы понимать откуда ноги растут.
Нужно знать что как работает DNS, HTTP и прочие протоколы. Как интегрировать различные облачные сервисы, строить системы для разворачивания ПО и пр.
SQL - не столько сам язык, как о том как оптимизировать план запроса к СУБД, резервировать и восстанавливать данные, реплицировать и другие функции DBA.
Веб-разработка, теория компиляторов и алгоритмы - скорее не надо. В случае необходимости всегда можно открыть книгу, статью или видео в интернете и дополнить свои знания.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Какой то странный план не относящийся к девопсу
Ответ написан
Комментировать
Shiroganari
@Shiroganari
Fullstack Junior Developer
Если Вы планируете после первого курса работать, то план определённо следует переработать, потому что у Вас просто не хватит времени, чтобы изучить всё то, что указано в плане.
Так же я у бы убрал несколько пунктов в принципе: C#, Python.

На вашем месте я бы сделал упор на пункте, который под номером 7.
HTML, CSS, PHP, JS, React JS, TypeScript - это как раз-таки те навыки, которые будет ожидать от вас работодатель на позиции Fullstack.
Если вернуться к моменту о том, что времени у вас не много, то PHP я бы тоже убрал из этого списка. За оставшееся время лучше сделать упор в чём-то одном: Front или Back.

Пункты English, Computer Science, Software Engineering, Algorithms & Data Structures, Databases можно изучать параллельно с Web, но бОльшая часть времени всё равно должна уходить на Web. И не просто на изучение теории, а на практику.

Поясню всё вышенаписанное.
Если вы всё-таки пойдёте по тому плану, который у вас в данный момент, то после первого курса вы никуда не устроитесь. Гарантирую.
На крепкое изучение только всего того, что вы указали в пункте Computer Science, по-хорошему должно уходить несколько лет. А учитывая, что опыта в программировании у вас нет, то этот материал будет даваться Вам очень тяжело. При этом вы не будете становиться ближе к своей цели устроиться на работу. Отсюда пойдёт потеря мотивации и веры в собственные силы.
А после Computer Science у Вас как бы ещё 5 пунктов впереди, на изучение которых вам понадобится не меньше времени :)
Безусловно, все эти пункты очень и очень важны для хорошего специалиста, но отталкиваясь от Вашей цели и Вашего уровня, для Вас на данном этапе это будет просто-напросто неэффективная трата времени.

Резюмируя.
Советую изучать в такой последовательности:
1) WEB (HTML, CSS, JS, React JS)
2) Английский
3) Базы данных
4) Алгоритмы и структуры данных

И уж только после того, как начнёте работать и получать боевой опыт, можно будет взяться за тот же Computer Science и Software Engineering.
И да, советую сделать Linux своей основной рабочей системой.
Ответ написан
Комментировать
Вы на работу хотите в 40 лет устроиться?)
Ответ написан
Комментировать
GreyCrew
@GreyCrew
Full-stack developer
Слишком размазываетесь по технологиям, если хотите стать фуллстеком, то выберите два или один язык (js) и в нем развивайтесь.

а) первый пункт

1) Тут я вижу у вас javaRush - выкидывайте, оно вам не нужно
2) Операционные сети и системы, по книге читать не вариант, просто установите себе любую linux систему и юзайте терминал. По ходу дела будут вопросы и затыки - гуглите.
3) Сети и языки программирования, вы правда считаете что вам не хватает сухих академических знаний в колледже?
===========
б) второй пункт

1) Software engineering это явно надо читать будучи уже работая джуном, пока нет примеров в голове, вам это будет явно лишнее
2) python/С# вы уж определитесь...

По факту можете сразу начать с веб разработки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы