Все записи

Курсов будет недостаточно: как гуманитарию стать разработчиком

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

b65f7f73c35ff11955ad022374e1a196.jpg

Мне всегда были интересны компьютеры и программы, но, когда думал о смене сферы с гуманитарной на техническую, начинал сомневаться: какой из меня разработчик?

Было несколько попыток начать программировать: пробовал изучать C# и Python, даже собрал калькулятор по учебнику. Но на этом все заканчивалось, не хватало базы и структуры. Будто садят за руль автомобиля без подготовки и говорят: «Едь», — параллельно подсказывая, какую педаль нажимать и какой рычаг дергать.

Сначала изучите низкоуровневую теорию

В интернете я наткнулся на курс Гарварда CS50. Все семестры в открытом доступе на английском языке. Есть и русская озвучка курса 2015 года, однако каждый год программа курса слегка меняется.

Я начал проходить курс по приколу, но потом втянулся: там была именно та вводная, которой не хватало. Мы проходили С, основные алгоритмы и структуры, потом добавился Python. Важно, что была не только теория, но и задачи, ясно дающие понять, с каким видом деятельности придется сталкиваться в будущем. Проверить решения задач можно было в интернете. А в конце курса — проект: игра на Lua, сайт на Java Script, либо мобильное приложение на Java. Но их я уже не делал.

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

Ещё за 5-6 лет до момента обучения, я полностью окунулся в англоязычную среду: поменял язык программ, смотрел youtube-блогеров и стримы, читал блоги. Этот опыт помог быстро адаптироваться к обучению на английском языке. 

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

Мне сильно помогли учебники А.В. Столярова, преподавателя МГУ по компьютерным наукам и программированию. Эти учебники дают более глубокое понимание работы с компьютером и программированию в целом.

Определитесь, что ближе: интерфейс или машина?

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

Я начал смотреть вакансии для бэкенда, чтобы выбрать язык программирования. Выбрал Java — язык требовался во многих вакансиях, плюс он решает задачи, которые мне интересны.

Никуда не спешите 

К учебе подходил вдумчиво и не торопился: читал внимательно, доучивал материал и старался доводить проекты до конца. Начал конспектировать учебник по Java для начинающих на 900 страниц: изучал по 40 страниц в день (Г.Шилдт — «Java. Руководство для начинающих»). А практиковался в решении задач на курсе Java Rush. Параллельно смотрел лекции и читал книгу по алгоритмам и структурам. Изучал фреймворки, которые понадобятся для работы с Java — это в основном Spring, Hibernate («Spring in Action», «Spring 5 для профессионалов», «Java persistence with JPA and Hibernate»). Также в этой сфере никуда без знания SQL, в том же CS50 есть хорошая вводная. Также нужна работа с какой-нибудь реляционной БД, например, PostgreSQL.

На учебниках тоже не останавливался, есть отличные сайты с информацией по этим технологиям (baeldung.com, mkyoung.com) и официальная документация.

Не забудьте про портфолио и pet-проекты на гитхабе

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

Начал я с приложения с реляционной базой данных, в схеме которой был очень простой магазин. Приложение читает по запросу данные и отдает по протоколу SOAP. Затем я поставил второе, которое запрашивает у первого данные, кеширует в Redis и отдает через REST api. Также там была сделана авторизация с JWT Token. 

Начал делать третье, но не успел закончить, оно так и осталось незавершенным. По задумке это было веб-приложение с интерфейсом, в котором есть админка для магазина и она общается по api со вторым приложением. Я уверен, что так можно строить проекты до бесконечности. 

Портфолио залил на гитхаб и подробно описал на английском, как оно работает. Здесь можно посмотреть, как гитхаб выглядел тогда — я его не менял. 

Подготовьтесь к собеседованиям и составьте резюме 

Я откликался на вакансии junior-разработчика на HH, но мне не отвечали. Тогда я начал отправлять резюме напрямую на почту в HR-отделы компаний. Отправил в восемь компаний, мне ответили три, из которых я выбрал Naumen, потому что компания большая и задачи для меня интересные.

Чтобы подготовиться, на ютубе слушал, как составлять резюме: на что смотрят, как проходят тестовые интервью, советы по организации гитхаба с pet-проектами, выписывал примеры. На хабре читал «частые технические вопросы на собеседованиях по Java».

Несмотря на то, что по пути много раз хотелось сдаться и, казалось, что ничего не получится, не стоит сдаваться раньше времени — учитесь, делайте pet-проекты, ходите на собеседования. Главное — упорство и терпение.

Похожие новости

Рабочий день младшего разработчика

Дима пришел в Naumen год назад — на стажировку по разработке. Успешно ее завершил и теперь работает младшим разработчиком в команде Naumen SMP. Он исправляет дефекты, реализует новые фичи, пишет автотесты. А также следит за тем, чтобы задачи разных разработчиков интегрировались бесперебойно и исследует массовые проблемы интеграций.

В работе он придерживается простого правила: небольшие задачи, вроде отчетов или запуска сборок, выполняет сразу по мере появления. Это помогает держать входящий поток под контролем и не накапливать рутину.

Рассказываем, как прошел один из его рабочих дней, наполненный планированием, разработкой фичи и командными встречами.

Как продуктовый аналитик помогает разработке двигаться быстрее

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

Мы попросили Иру, продуктового аналитика в группе AI-решений, рассказать, как она организует эту работу на практике: от подготовки задач и взаимодействия с разработкой до поиска решений, которые позволяют экономить время всей команды и повышают ценность продукта для клиента.

Инструменты ручного тестирования

В работе тестировщика важно иметь под рукой инструменты, которые ускоряют проверки, упрощают рутину и позволяют глубже разбираться в поведении системы. Вместе с Ариной и Катей из команды релизного тестирования SMRM собрали подборку таких инструментов.

Все новости