Как стать Ruby on Rails программистом: история Стаса Мехоношина
Первые шаги
Когда я учился в школе, меня всегда тянуло к компьютеру, было интересно как он работает. И выбор будущей профессии был очевиден - “Я хочу быть программистом”. На тот момент я, даже, особо не понимал, что такое программирование. Уроки информатики дали некоторое понимание, но не более, так как писать программы, которые складывают числа в командной строке было не очень то интересно.
В 11 классе я увлекся Delphi, в течение года писал небольшую программку для обработки текстов, и вот тогда я окончательно понял что мне это интересно.
В университете первые года 3 я больше интересовался системным администрированием, и даже устроился работать в универ техником в Лаборатории сетевых технологий. Это была уникальная возможность неплохо прокачаться в компьютерных сетях, серверном железе и, конечно, в Unix системах. И хоть всё это было далеко от программирования, но дало неплохую базу, которая весьма полезна, особенно когда ты разрабатываешь, к примеру, web-приложения.
Настоящее программирование
Как и большинство студентов, в университете я программировал в основном на Java или .Net. В свободное время я также занимался PHP, и именно оно дало мне первую оплачиваемую работу. Мы делали книжный интернет-магазин на 1С-Битрикс. Платили мне тогда 10к рублей за парт-тайм работу. Можно было работать из дома, когда мне удобно, главное было вовремя и качественно выполнять задачи. Но минусы у такой работы также были: мне не у кого было учиться. Никто не мог проверить мой код, подсказать как лучше реализовать фичу и какую книгу почитать.
Через год такой работы с PHP, мне надоела эта технология. Захотелось чего-то более “взрослого”, как мне тогда казалось, и я начал параллельно изучать Ruby. В то же время я знал на базовом уровне Java SE/EE, и поставил себе цель после окончания 3-го курса найти работу на Java или Ruby.
Так вышло, что тем летом ни одна Java-компания в нашем городе не хотела брать на работу стажера/джуниора, все предлагали подождать до осени. Но мне дико хотелось начать работать во “взрослой” компании и учиться у профессионалов, и я попал в Evrone.com на должность стажера. Вот так все завертелось, и с тех пор я больше никогда не возвращался к Java :)
Сложности
Пожалуй, самым трудным в работе программиста является то, что тебе нужно постоянно учиться. Предела совершенству нет, и чем больше ты узнаешь, тем сильнее понимаешь как много ты не знаешь. Поэтому необходимо очень много читать, экспериментировать и думать. Идеально, если у тебя есть старший товарищ, который может объяснить и подсказать в сложной ситуации. К сожалению у меня не было такого товарища, и все знания приходилось получать по крупицам исключительно самому, путем проб и ошибок. Недостаточно просто прочитать книгу о новой технологии, перед ее использованием. Необходимо узнать все best-practices, чтобы не тратить время на заведомо неудачные подходы.
Менторство
Когда я заканчивал магистратуру в университете, мне предложили поработать парт-тайм преподавателям. Нужно было вести программирование у студентов 1-3 курсов. Денег за это платили мало, в сравнении с моей зарплатой на тот день, но я согласился в первую очередь из интереса к новому виду деятельности. Во мне еще было свежо то ощущение, когда тебе не у кого спросить совета в непонятной ситуации, и я хотел помочь ребятам, которые реально хотят научиться программировать и стать профессионалами.
Позже, в одной из компаний где я работал, мне также довелось побыть ментором, это снова освежило ощущение важности менторской деятельности. Когда ты помогаешь другим людям, то, во-первых, учишься сам, а во-вторых, получаешь “то самое” ощущение плюса в карму. Поэтому я и решил попробовать себя в роли ментора mkdev.
Автор статьи составит индивидуальную программу обучения, поможет научиться эффективно использоваться Ruby on Rails, реализовать MVP для стартапа Нанять
Вопросы
Какой совет дашь новичкам, который редко встречается или считается необычным, спорным?
Не нужно забивать на фундаментальные вещи. Часто студенты, учась в университете, увлекаются модными технологиями, фреймворками и не уделяют должного внимания фундаментальным вещам, таким как алгоритмы, математика, низкоуровневое системное ПО. Хорошая фундаментальная подготовка позволит быстрее освоить любую “модную” технологию.
Как ты сохраняешь свои навыки актуальными? Как постоянно растёшь и становишься лучше как разработчик?
Я всегда работаю над своими pet-projects. Стараюсь пробовать на них все то, что не удается использовать на основной работе. Некоторые проекты вырастают во что-то реальное, некоторые не выходят за пределы ноутбука, но в любом случае они дают опыт и новые знания.
Топ 3 книжек для новичка
Топ 3 сайта/рассылки/источника-инфы на которые должен быть подписан каждый разработчик
Фото рабочего стола
В данный момент рабочего стола у меня нет, работаю где придется. Виртуальный рабочий стол выглядит примерно вот так:
Об эффективности обучения у Стаса и остальных менторов mkdev мы рассказывали в цифрах подписчикам нашей рассылки. Получить отчёт об успехах наших учеников ты можешь, подписавшись через эту форму: