Привет! Меня зовут Виталий. В 2016 году я работал инженером в Huawei, занимался пусконаладкой DPI-платформ, техническим дизайном, архитектурой, поддержкой. Занимался крупными проектами. Получил много опыта, фактически поднял большой пласт пакетных сетей в разных уголках России. Я понимал, что сильно углубляюсь в сферу телекоммуникаций: знания у меня чересчур узконаправленные, а это опасно для будущей карьеры.
Надо было что-то менять — начал искать, чего мне хочется. Даже подумывал бросить IT и заняться деревообработкой 🙂 Вот несколько работ, чтобы вы понимали, что серьёзно подумывал:
Кухня: фанера, брус. Экономия пространства.
Kid working table. Ash+oil/wax. Countertop looks as huge cutting board. Другие работы можно посмотреть у меня в инстаграме.
В итоге я понял, что мне не хватает творческой реализации. Вспомнил, что с отличием окончил физико-математический факультет («математические методы защиты информации» в Дальневосточном федеральном университете), что изучал программирование и 12 лет потратил на работу в IT. Решил, что потерять это всё — плохой путь. Если хочется что-то создавать, можно совместить творчество с программированием, по пути добирая недостающие знания.
Java я никогда не любил, он ассоциировался с серыми фреймворками из 2000-х, которые тормозят, и ты вместе с ними тоже начинаешь тупить. Но я тогда попал на курс JavaRush, который хорошо зашёл. Там графика в стиле «Футурамы», интересный интерфейс, а обучение проходит в формате комикса — читаешь истории и выполняешь задания. Привет Капитану Боброву!
Так я заинтересовался философией и историей этого языка. Потом посмотрел на TIOBE-рейтинг и понял, что у Java есть и огромное прошлое, и будущее. Это целая экосистема с гигантским сообществом и документацией. Ещё понравилось, что язык больше направлен на бэкенд, чем на фронтенд, — стало понятно, почему UI в нём не очень.
Понял, что JavaRush мне мало, — надо что-нибудь ещё поизучать. Пошёл гуглить. Конечно, мне начали подсовывать контекстную рекламу.
Я увидел, что есть некий GeekBrains, который ещё и Mail.ru Group. Посмотрел отзывы — они были противоречивые, а курс стоил недёшево — 150 тысяч рублей. Но особых альтернатив не было — только разные «курсеры», которые выдают сертификаты на английском. Но я подумал, что там получу разрозненные знания, а такие мне не подходили.
В GeekBrains меня привлекло, что это университет с программой, где одно логически вытекает из другого. У меня были свободные деньги — оплатил, пошёл учиться.
Просто в Брюсселе с женой, поддержавшей идею поступить в GeekBrains 🙂
Обучение
Начало курса несколько раз переносили, потом началась подготовка, которая была так себе. Но со стартом обучения сомнения, порождённые плохими отзывами о GeekBrains, отпали. По большей части из-за крутых преподавателей.
Расскажу, что мне понравилось.
- Курсы «Введение в Java» и «Java. Уровень 1» вела Александра Лютикова — отличный преподаватель. Всё рассказывала так, как нужно новичкам: заботливо отвечала на все вопросы, даже самым дерзким из нас.
- Разработку игр на фреймворке libGDX вёл Алексей Кутепов. Вдохновил меня на идею проекта, которым занимаюсь по сей день!
- Курсы «Java. Уровень 2» и «Java. Уровень 3» читал Александр Фисунов, сейчас он декан факультета. Очень крутой чувак. У него стопроцентный бэкграунд программиста. Он говорит — и одновременно пишет код на Java, а в Paint с помощью графического планшета быстро рисует логическую схему своих мыслей. Отвечает на все вопросы: любой сложности, по любой теме. Поэтому информация усваивается легко и бесконечно. С Александром мы до сих пор поддерживаем связь.
Спойлер: проект, который я делаю, мы начинали с Александром. И он познакомил меня с художником, который рисует мне спрайты и выступает геймдизайнером. Всю боль мы переживаем вместе.
- Курс по HTML/CSS. Преподаватель Алексей Кадочников — верстальщик от бога. Я много интересного для себя почерпнул: как правильно делать, куда смотреть, если что-то «пованивает», какие есть крутые фреймворки. Я не люблю фронтенд, но этот курс показал, что зря.
- «Командную разработку на Java» вёл Денис Волненко. Шикарно! В технологиях Java EE и Java SE он как рыба в воде. Всё рассказывал, всё показывал, на любые вопросы отвечал. Некоторых ребят даже взял к себе на работу. По мощности сравним с Александром Фисуновым, хороший человек 🙂
- «Подготовка к собеседованию», «Java Enterprise» тоже вёл Денис — было хорошо. Очень много давал нам делать самим и думать головой тоже учил. Вёл себя профессионально, но в целом не церемонился и ни с кем не носился.
- Был факультативный курс «Операционные системы», вёл сисадмин из Mail.ru. Он много повидал в суровом продакшене. Без комментариев, огонь в огне!
Конечно, были и недостатки.
- Курс «Алгоритмы и структуры данных» был слабенький, преподаватель читал по методичкам — не хватило глубины. А ведь это основа, на мой взгляд.
- «Разработка сетевого хранилища на Java» был отвратительным. У нас произошёл серьёзный конфликт с преподавателем. Человек готовил сэмплы кода дома и показывал, как презентацию: читал, что там написано. Иногда очень дерзко отвечал. Из-за хамства мы начали жаловаться на него и добились, что вместо него пришла Александра Лютикова. А его самого уже уволили, если не ошибаюсь.
- Курс «Архитектуры, паттерны и шаблоны проектирования» вёл Дмитрий Зинкевич — рассказывал не так хорошо, как мог бы. Есть прекраснейший сайт — refactoring.guru, там изображены все дизайн-паттерны в виде инфографик в едином стиле. Мне кажется, он немного копипастил оттуда и с открытых источников.
- «Компьютерные сети» вёл Максим Акинин. Не очень понравилось: многое было по методичке, а на занятиях это скучно. Я до этого семь лет занимался сетями и знаю: можно лучше.
- Не в курсе, что сейчас, но четыре года назад методички в GeekBrains были ужасны. Копипасты из популярных книжек, форматирование не то, ошибки. Сначала я оставлял очень много фидбэка — потом забил.
Я не стажировался. Участвовал в командной работе, которую вёл Денис Волненко, но мне не было интересно. Я хотел разрабатывать что-нибудь интерактивное, а у Дениса были BI-системы, сайты, интернет-магазины. А я, когда пишу сайты или что-то подобное, чувствую себя библиотекарем. Поэтому я просто приклеился в той активности к группе людей — сделал им дизайн базы данных и помогал тестить.
Общее мнение о GeekBrains и советы студентам
GeekBrains, как и любой университет, даёт общее понимание и время, чтобы человек подумал и копнул глубже. Если хотите добиться чего-то исключительного, то нужно понимать базовые принципы. Как устроена Java-машина и сборщики мусора, какие там алгоритмы и так далее.
Поэтому читайте книги — Шилда, Эккеля. Больше книг! Серьёзно относитесь к фундаментальным знаниям, которые дают на курсах. Важно понимать, как всё работает, а не какой метод делает сортировку.
У меня были однокурсники, которым было неинтересно. Они не понимали, зачем на рабочую машину устанавливать Linux. Зачем разбираться в устройстве процессоров и компьютерных сетей. Они говорили: «Мы хотим просто писать программы, какой-нибудь фронтенд». Ну, это тоже вариант, и такие люди нужны.
Применяйте знания, ищите реализацию в проектах, которые вам искренне интересны. Мы как-то собрались с ребятами сделать игру, вдохновившись курсом по разработке игр на libGDX. Но чего-то потом разогнались, и поэтому я уже 2 года сам этим занимаюсь 🙂
О моей игре на libGDX
Мой проект — игра-аркада. Космический корабль собирает космонавтов, главная задача — выжить. Его атакуют аномалии, он может собирать всякий лут. А механика там как у обычного пакмена. Только без стен и привидений — всё это заменено, космос же.
Когда я представил проект Алексею Кутепову, он сказал, что это лучшее, что было за всё время, и интересно посмотреть, во что оно превратится. Я продолжил разрабатывать, исследовать libGDX. Всё-таки фрейм вот-вот настолечко отстоит от низкого уровня. Ниже только OpenGL. С другой стороны, он поддерживает работу с Box2D, на котором было сделано немало культовых игр (например, Limbo).
За месяц сделал всё, что мог. Сбросил игру Саше Фисунову. Спустя время он говорит: «Ты там скидывал игру, моей дочке нравится, есть продолжение?» Я: «Блин, нет… Давай вместе?» И он согласился.
Спустя четыре месяца Саша накинул немного своих наработок кода, сделал первоначальную структуру. Мы с ним вместе создали документ, в который все идеи накидали. Стали разрабатывать. Через полгода Саше стало не хватать времени и он отошёл от проекта — я продолжил один. Сейчас у меня сотни страниц документации и дизайнов.
Потом пришёл дизайнер — мы вместе работаем до сих пор. Иногда приглашаю друзей поупражняться: выписываю маленькую задачку, на которой можно сфокусироваться. У нас есть трекер в Bitbucket — там всё по веточкам.
Проект идёт туго, потому что это инди. Здесь очень сильно вкладываешься эмоционально. Инди-игры наглядно демонстрируют состояние команды. Это не коммерческий проект, где тебе скидывают тикеты. Если я реализую что-то классное через механику и общую идею, то дизайнер тоже не хочет ударить в грязь лицом. Поэтому бывает так, что мы два месяца пишем, а потом на квартал уходим — читаем литературу о том, как правильно 🙂 Затем возвращаемся.
Сейчас в игре накопилось около 18 000 строк кода, порядка 160 уникальных спрайтов и где-то 80 разных звуков — их пишет профессиональный звукорежиссёр. Готова механика, эстетика, практически реализована функциональность, осталось доделать логику. Потом нас ждёт настройка игрового баланса. Там около 600 конфигураций, которые влияют на игровой мир, — и мы пока не знаем, как всё правильно сделать.
Работа над игрой — та ещё задачка, вкладываешь в неё много души и времени. Шлифуешь и полируешь, как в старые добрые времена, когда работал с деревом.
Трудоустройство после GeekBrains
Сейчас я не работаю программистом и в жизни не написал ни строчки продакшн-кода. Я технический менеджер. Если найду время, могу стать менеджером, который руководит разработчиками. Так что для меня GeekBrains сработал в другую сторону. Программирование помогло научиться общаться с разработчиками. Я понимаю, как они думают, их релизные циклы, методы, подходы, ну и язык, на котором они пишут.
Изначально я хотел стать программистом и шёл к этому. На момент окончания GeekBrains работал в «МегаФоне» экспертом по пакетным сетям. Ходил на собеседования в разные компании на позицию разработчика — в EPAM, в Яндекс и другие.
В офисе Яндекса в СПб
Но однажды пришёл на собеседование на позицию Java-разработчика, а взяли меня техническим менеджером. И залип — такая вот история. Уже два года работаю в девелоперской компании dxFeed в Питере. Мы предоставляем рыночные данные институциональным брокерам в разных странах. У меня есть знания во всех сферах IT, поэтому я там связываю много вещей.
Компания небольшая, порядка 50 человек, но в своём сервисе мы тягаемся с Reuters и Bloomberg. Хотя у них сидят этажи людей в нескольких странах, хе-хе. Работы много, она плотная, интенсивная и требует высокого уровня ответственности и отдачи. Пока мне это подходит.
Пара слов о планах
Хочу доучиться менеджменту — и уже нашёл себе подходящий курс. Что касается проекта: судя по текущей скорости разработки, через год игра выйдет в Google Play. Так что ждите после релиза новую статью с детальным разбором, картинками, кодом и всем вот этим! Надеюсь, какой-нибудь новый супервирус плотоядных бактерий не нарушит мои планы 🙂
Хотите больше историй с факультета Java-разработки GeekUniversity? Вот они!
- «Моя цель — глубоко погрузиться в вопросы Java-разработки». Сергей Миненков — о своём не самом простом опыте перехода из программирования для 1С в разработку на Java
- «Иногда за сутки я спал один час в метро перед работой». Из белорусской типографии — в московские тимлиды.
- Первая работа в IT с переездом в Москву: как это бывает. Опыт собеседований, тестовых заданий, учебных проектов и трудоустройства в международную компанию.
- Где нужен Java и как его преподают в GeekUniversity. Интервью с деканом факультета Java-разработки Александром Фисуновым.