Про мой путь в 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$ в месяц в зависимости от количества рабочих часов)
Осип Фаткуллин