Сколько я учился
Поняв, что время — это ограниченный ресурс, я не стал искать новую работу в сфере продаж, а решил стать самой крутой домработницей, которая целый день учит программирование и готовит жене еду. Я наткнулся на книжку "Питон для детей" и решил, что если дети могут, то чем я хуже? Разумеется я не додумался зайти на hh.ru и посмотреть, а нужен ли кому-то программист Python в моем городе. Как выяснилось, нет. Но это я узнал после трёх месяцев зубрежки. А еще позже я узнал, что этот язык категорически нельзя изучать первым, т.к. он имеет динамическую типизацию и внутри скрыто много основ, которые нужно знать обязательно! Если вдруг кто-то решит изучать Python, рекомендую youtube канал ItPropaganda. Здесь всё изложено очень вдумчиво и подробно. Лектору надо было быть преподавателем! На hh.ru я заметил, что требуется много верстальщиков, и я переключился на Web. Неважно, с какой стороны запрыгнуть, но я хочу на этот поезд, подумал я! Это заняло следующие три месяца. Именно тогда я понял, что практика — это самое полезное в обучении. Новая информация вылетала быстрее пули. Поэтому после каждого нового ролика или книги я старался все это повторить и что-то даже записать. Лучшими учителями в верстке для меня были: От неё было больше всего пользы. Практика нереальная. Точно не помню, но бесплатный интерактивный курс я проходил около двух недель. А потом купил платный, но только ради Flex верстки.- Foxford | WEB-программирование для школьников 8-11.
Как устроился на работу.
Прошло полгода домашнего обучения, и я решил, что пора. Отправил резюме в несколько компаний на должность младшего инженера-программиста и ждал ответа. Через пару дней мне ответили, и я очень волновался. Я сдал тест (он был скорее психологический) и заполнил стандартный бланк, в котором указал опыт в различных IT-направлениях (уровень технического английского, знания языков, умение работать с git, linux и тд), в графе желаемая заработная плата я указал 5 000 рублей. Мне было все равно, сколько я буду получать, я готов был платить им сам, лишь бы меня взяли на работу. Оказывается данная компания практиковала набор студентов, взращивала их под себя и оставляла на постоянной основе. На собеседовании мне запомнилась фраза «до 35 лет ты должен брать, впитывать, а потом отдавать». Меня взяли с испытательным сроком в один месяц с зарплатой в 15000 рублей. Этот месяц был самым лучшим в моей жизни, я достиг желанной цели и узнал, что стану папой. В первый день на работе я узнал, что мне нужно самому собирать свой компьютер, операционная система будет linux (вы знаете где кнопка super в linux?), а моим первым проектом будет создание микросервиса на языке java, который будет работать по протоколу Radius. Сказать, что я был в шоке от ВСЕГО, это ничего не сказать. Я закидывался глицином быстрее, чем Усейн Болт бежал стометровку (шучу, конечно).Через какие сложности прошел
Аглийский
Недостаточный уровень знания английского языка. Когда вы начинаете работать программистом, вы понимаете, что на русском языке ответов на ваши вопросы практически не найти. Проблема еще в том, что вы не знаете, как именно нужно гуглить (но не переживайте, с опытом все придет). Яндекс поменял на Google.
Взял за правило слушать английский, пока иду по улице, а именно «Английский по плейлистам»:
Это тонны часов практики, и вам больше не нужно искать какие-то другие источники для обучения. Я за год посмотрел около 400 уроков.Фреймворки
Если у вас нет большого опыта в программировании, фреймворки (hibernate, spring) — это камень, о который можно разбиться и потерять веру в себя. Это новые уровни абстракции, паттерны проектирования, бины, singleton, фабрики настолько непонятны, что ты даже не понимаешь, с чего начать. Я помню как сильно смеялся, что фреймворк "Spring" настолько сложный, что для него придумали свой фреймворк "Spring Boot"
Я постараюсь задать вам вектор:
- Если вы не знаете Java, то не смотрите следующие пункты, основы это все! Я проверял^ бесполезно лезть в дебри, учитесь на JavaRush.
- Азы Java web-разработки. Для этого подойдет курс очень талантливого парня, которому сейчас года 22-23. Он настолько классный, что я специально нашел его в контакте, и даже хотел съездить в Казань и пройти у него курсы. cсылка, так же ссылка на github всех проектов
- Что нужно для работы с БД, замечательно рассказывает этот товарищ
- Ну и из свежего — канал let's code. Качество, подача, актуальность — все на высоте! Рассказывает про Spring Boot.
Linux (операционная система), Git (система учета версий).
Для меня работа в командной строке казалась чем-то сверхъестественным. Оказалось, что в мире программирования веб-интерфейсы не в почете: true-программисты должны все делать через терминал. Linux — это бесплатная операционная система с открытым исходным кодом, и подавляющее число программистов работает на ней (MacBook имеет те же команды). Git — это система контроля версий вашей программы, стандарт всех программистов.
Тут я могу порекомендовать для изучения git вот такой вот интерактивный сайт.
Расширение на Google Chrome - Octotree — это что-то типа total commander для GitHub.
Ну и поставить себе Linux: он правда классный, я выкинул Windows на помойку!
Не рекомендую javabegin. Когда надо было быстро выучить Spring в, сдуру купил его курс. Объяснение отвратительное. Мне показалось, что он не знает о чем говорит, просто нашел английский tutorial и запилил видеокурс.
Резюме:
Программирование — это огромный мир, который дарит интересную жизнь. Да, первое время тяжело, да сложно, но это только сначала. Я упрямо шел вперед, и вот уже год работаю full stack программистом, удвоив свою зарплату, выучив такие языки как Java, Python, Kotlin, Typescript, JavaScript; такие фреймворки как Spring и React. Переписал старое самописное хранилище большого проекта на Redux, создал микросервис на Spring Boot. Сейчас веду проект на Spring4, который еще и на XML. А если смог я, сможете и вы. Главное — видеть огромную цель впереди и идти к ней, не боясь неизвестности, а старания обязательно окупятся. Ну и если кому-то интересно, пишите, буду продолжать свою историю. Темы могут быть такими:- Паттерны проектирования (реальные примеры, когда может пригодиться тот или иной паттерн).
- Виды аутентификации, авторизации.
- OAUTH2.0 на Spring Boot.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ