🔥

Тред (Осип Фаткуллин)


Про мой путь в IT. Может быть это звучит как-то несерьёзно, но не получится рассказать как я пришёл в разработку, не рассказав про то как я разрабатывал плагиныдля сервера Minecraft.

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

Чтобы поддержать моё стремление, мне купили книжку "Как ребята программировали игру "Африка" на языке Паскаль". Я не понимал ничего, что там объяснялось про "переменные", "процедуры" и "функции", поэтому просто открывал главу в конце и переписывал код к себе.

Если код работал, я радовался, если не работал - ждал папу с работы, чтобы он исправил ошибки компиляции. И каждый раз он говорил: "посмотри, тут же красным написано где у тебя ошибка". Так я научился важному навыку - читать и понимать ошибки компилятора :)

Я не понимал Pascal и мне не нравилось программировать, но всё поменялось в 9-м классе, в 2011 году, когда друг позвал меня играть в Minecraft :) Сначала мы играли на публичных серверах, но потом загорелись идеей сделать свой сервер, где сделаем всё так как нам нравится.

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

Это была не единственная проблема. - Домашний ноут не вывозил нагрузку, когда к нам подключалось больше 5 игроков - Хотелось чтобы у нас был свой сайт, лаунчер и клиент, как у настоящих больших серверов - Хотелось делать что-то необычное, чего никто не делал

Чтобы решить проблему с железом, решили арендовать машинку. Выбор пал на "дедик" в Hetzner. Стоило это около 2000р. по курсу того времени. Мы с друзьями скидывались и несколько месяцев нам удавалось платить за аренду.

Началось познание мной Linux'а. После нескольких "окирпичиваний" сервера и писем в службу поддержки, чтобы они помогли мне всё починить, я научился не доводить сервер до состояния когда до него невозможно достучаться по SSH.

Где-то месяц я настраивал машинку чтобы на ней можно было запустить наш сайт и сервер. Благодаря этому периоду, я научился не бояться консоли и Linux'а. Ещё один навык, который был мне не раз полезен.

Проблему с железом решили, а вот сделать что-то уникальное оказалось гораздо сложнее. Публичных плагинов не хватало чтобы реализовать наши идеи и был вариант либо писать самим, либо искать кого-то кто за деньги запакует наши идеи в плагины.

Тогда я решил, что стоит попробовать написать плагин самому. Я начал читать "Head First Java" и так увлёкся, что проторчал за компьютером всю ночь. Учить Java было безумно интересно и тогда я понял, что мне нравится программировать.

Кстати, сервер мы пытались запустить несколько раз, но ни разу не дошли до релиза. И этому опыту я тоже благодарен. Многие задачи были как во "взрослых" проектах. Например мы начали использовать Redmine и Asana потому что нужно было как-то отслеживать задачки.

Тогда же я проводил свои первые "собеседования", которые обычно ограничивались парой вопросов типа "покажи скрины карты которые ты строил?", "сможешь если будет нужно скинуться на аренду сервера?" :D

От постоянных неудач я перегорел и решил, что больше ну буду пытаться делать свой сервер. Но зато могу писать плагины, тем более что это мне нравится.

Так я написал свой первый большой проект - RPGInventory и опубликовал его на площадке для продажи плагинов по цене 7.5 USD за копию.

А потом я прочитал "Clean Code" дядюшки Боба и понял как же плохо написан мой плагин. Любая попытка внести изменения подтверждала это. Изменяю код в одном месте - ломается в четырёх других. Обилие статики, неявные зависимости и сильная связанность не давали развивать плагин.

Что в этом случае делать? Конечно же всё снести и написать заново! Так я решил в 2015 году. Превью нового плагина я выпустил в январе этого года :D Писать без знаний об архитектуре и тестах оказалось гораздо проще. RPGInventory я написал за пару недель.

Что-ж. Я затянул тред, поэтому теперь кратко. Как-то я попробовал писать на Groovy. Мне понравились Closure и лаконичность (после Java), но не понравилось, что многое в Groovy неявно. Тогда мой выбор пал на Kotlin, который сохраняет и краткость, и явность.

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

Если пока вы читали тред у вас было чувство, что это всё игрушки и баловство, посмотрите на "оффер" который прилетел недавно мне в Discord :D Оплата по пятницам раз в две недели, от 1890$ до 3360$ в месяц в зависимости от количества рабочих часов)
notion image

Осип ФаткуллинОсип Фаткуллин