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

Вскоре у меня появился собственный персональный компьютер. После того, как я дважды облажался с ОС, мне сказали, что если я хочу, чтобы все работало правильно, я должен это исправить. Мои родители всегда поощряли мое любопытство и не жалели ни хлопот, ни средств для моего саморазвития. Они также научили меня решать проблемы, с которыми я сталкивался сам. Так я открыл для себя мир ОС.

После этого я нашел странный диск с Mandrake Linux, и мама с папой разрешили мне его купить. Той же ночью я удалил Windows со своего компьютера, и там смог поселиться удивительный пингвин. В тот момент я влюбился в Linux, потому что он был очень простым, и у меня была возможность сделать все по-своему.

Я был частью фэндома журнала «Хакер» (крупнейший российский печатный журнал о программировании и безопасности данных — прим. переводчика) и завсегдатаем их форума. К тому времени я знал Perl и писал на нем, но совершенно не понимал C. Будучи учеником средней школы, я также изучал Python и создавал простые веб-сайты CGI. Я тоже интересовался PHP, но мы долго не могли найти общий язык.

Я пошел в профессионально-техническое училище, чтобы наверстать упущенное в учебе, и вокруг было много таких, как я. Раньше мы вместе писали мини-программы, чтобы делать домашнюю работу было веселее. В то время я тоже начал работать фрилансером и получил свои первые настоящие задачи. Я улучшил свои знания C, что позволило мне двигаться дальше и изучать новые похожие языки.

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

Было время, когда я очень увлекался пиратскими серверами некоторых популярных MMO-игр и помогал команде с техническими проблемами. Мне пришлось декомпилировать игровые клиенты и анализировать сетевые пакеты, чтобы догнать разработчиков игры. Задачи были действительно сложные и разноплановые, от исправления ошибок до создания дополнительного контента для игр и античит-систем. Из-за этого я продвигался в резком темпе. В этот момент я понял суть C++ и начал играться с Java.

На втором курсе колледжа какая-то компания упомянула в своих соцсетях, что им нужны разработчики. Я отчетливо помню, как я нервничал. У меня не было коммерческого опыта, я был студентом. Я прошел собеседование на Java-разработчика, устроился на работу и начал интенсивно работать и учиться. Рискуя забегать вперед, скажу, что работая в этой же компании, я получил два диплома: бакалавра и магистра. Так как в команде была только молодежь, включая меня, мы росли вместе.

Работаю в Цитрониуме уже более 5 лет. Я начинал как стажер, а через некоторое время стал лидом бэкенда. Я невероятно благодарен своей компании и коллегам, с которыми я рос и продолжаю расти сейчас. Здесь мы проводим встречи, посвященные некоторым конкретным темам, а также новостям отрасли, и перенимаем лучшие практики, чтобы позже внедрить их в нашу повседневную жизнь.

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

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

Мне всегда было очень весело помогать другим и давать подсказки о том, как все должно работать. Наставничество помогает мне расширить кругозор и углубить знания в областях, с которыми я, возможно, никогда не сталкивался. Это позволяет тем, кто учится, продвигаться вперед, а мне — развиваться профессионально. И я всегда на седьмом небе от счастья, когда узнаю что-то новое!

Можете ли вы дать совет, который обычно считается спорным?

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

Как вы поддерживаете свои навыки, чтобы быть актуальными? Как вы растете и становитесь лучше как разработчик?

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

Если я вижу статью, я сохраняю ее в Instapaper и оставляю там на некоторое время. Затем, когда я управляю своей очередью непрочитанных, я читаю статью и выделяю важные вещи. Таким образом, я резюмирую интересные для меня статьи.

Ваши лучшие 3 книги для новичка?

Я читал много нехудожественной литературы. Если мы говорим о программном обеспечении в целом, я бы порекомендовал следующие книги:

  • Брюс Экель — Мышление на Java
  • Брайан В. Керниган, Деннис М. Ритчи — Язык программирования C
  • Эндрю Хант, Дэвид Томас — Прагматичный программист: от подмастерья до мастера

Ваши 3 лучших сайта/новостных бюллетеней/источников информации, которые должен прочитать каждый разработчик?

Я настоятельно рекомендую всем не читать информационные бюллетени и группы в социальных сетях, поскольку они в основном действуют как белый шум и делают вашу ленту новостей невозможной для чтения. Читайте Hacker News и там вы всегда найдете что-то полезное.

Фото вашего рабочего места

Это статья mkdev, написанная Ринат Мухамедгалиев. Вы можете нанять Рината в качестве своего личного наставника по Java.