Здравствуйте! Меня зовут Игорь, сейчас мне 45 лет, и я старший программист в IT-компании среднего размера. Хочу рассказать вам мою историю про то, как я стал программистом 5 лет назад. Родился я в Тамбове в 1972 году, отучился в обычной школе, а потом течением жизни занесло меня в медицинский колледж, который я по семейным обстоятельствам не закончил. К тому времени СССР развалился, пришлось срочно искать источники дохода, и я начал работать в таксопарке. Таксистом я проработал 90-е, 2000-е и начало 10-х, к тому времени женился, обзавелся тремя детьми и таксовал уже на личной машине, а не на машине таксопарка. Таксовать с каждым годом было все труднее из-за демпинга и конкуренции. Перепробовал все таксопарки и агрегаторы, работать приходилось по 11 часов в день, а в месяц чистыми получал 45 тысяч, из которых сам тратился на бензин и автосервисы, оплачивал ДТП. К этому добавим и ненадежных клиентов, которые отменяли вызов и отказывались за него платить.
И к 2012 году я понял, что содержать семью таксистом больше не могу, и стал искать новые способы заработка. Мой выбор пал на профессию программиста, поскольку на рынке имеется избыток вакансий и гигантский дефицит программистов, и это было самым удачным решением в моей жизни. Начал в 2012 году я с платформы и языка 1С как самой простой точки входа на рынок. Начал с книги Радченко «Практическое пособие разработчика» и «Настольной книги 1С: Эксперта по технологическим вопросам». 2 месяца сидел дома и учил, потом устроился во франчайзи 1С на 55 тысяч в месяц и стал стремительно расти. По будням работал, по выходным совершенствовал свои навыки и практиковался дома. Поработав полгода во франчайзи, мне подняли зарплату до 85 тысяч в месяц, и я понял, что это мало. Хотелось купить Volkswagen Touareg и что-нибудь жене аналогичной модели, но в кредиты влезать желания не было. Тут на форуме mista мне подсказали, что можно стать ИП и уйти из франчайзи, оказывать консультации. Так я и поступил. Работать приходилось и по субботам, но от 1С разработки была хорошая отдача: в 2013 году мой месячный доход составил в среднем 140 тысяч.
Но я к тому моменту понял, что не хочу всю жизнь заниматься 1С, и начал по воскресеньям учить C++ и Java. По C++ я читал Бьёрна Страуструпа «Язык программирования C++», а также параллельно усиленно учил английский и читал «Accelerated C++: Practical Programming by Example». По Java читал «Thinking in Java», а также «Java Concurrency in Practice». Также я наконец-то обновил компьютер, купил себе два больших монитора, поставил Debian 7 (Wheezy) и начал практиковаться в разработке на этих языках. Технологии разработки многопоточных приложений на C++ и memory barriers были освоены за неделю. К тому времени я очень привык к редактору Vim с плагинами, но понял, что он не очень хорошо подходит к Java. Для Java решил использовать NetBeans. За полтора месяца были освоены все популярные дизайн-паттерны, Spring Framework, ORM (Hibernate). Это было очень интересно и захватывающе. Еще я выучил по видеоурокам гибкие методологии разработки Agile.
Я разместил на одном из городских сайтов свое резюме с указанием всего опыта и самостоятельно освоенных знаний, и уже через 4 дня мне предложили должность разработчика C++ на 210 тысяч руб. в месяц на проекте, связанном с анализом изображений и видео. На нем я проработал 2 года. В течение этих 2 лет мой e-mail ежедневно заваливали предложения HR-менеджеров перейти работать в другие компании, включая удаленную работу. Затем предложили перейти в один интересный проект писать на Scala и Java, и я согласился. Здесь я работаю до сих пор. Мой месячный доход вырос до 315 тысяч, и это еще не предел. Я очень доволен тем, что ушел из таксистов в программисты. Это самая подходящая для меня работа, я прихожу на работу с хорошим настроением и делаю то, что развивает мир и приближает будущее. В офисе есть настольный теннис и аэрохоккей. Проводятся корпоративы и хакатоны.
Scala и функциональное программирование — мое новое увлечение. В отличие от классической императивной парадигмы, где состояние внешних по отношению к функции переменных может быть в любой момент изменено, в Scala побочные эффекты сведены к минимуму. Функциональное программирование более эстетично и правильно, там не принято писать процедурные циклы. Вместо этого используются такие абстракции, как поток данных, filter, reduce, map, рекурсия. Также программа на функциональном языке идеально подходит для распараллеливания. Гонки и deadlock-и здесь исключены, потому что ни один сегмент данных не модифицируется дважды одним потоком или разными потоками. Очень жаль, что в России наблюдается такой дефицит Scala разработчиков. Во многом в этом виноваты сами разработчики, которые не хотят в свободное от работы время заниматься обучением коллег и новичков. Я же понимаю, насколько важно функциональное программирование для развития экономики, поэтому уже год преподаю Scala на курсах от нашей компании при одном из технических ВУЗ-ов, а с 2018 года буду преподавать еще и Haskell. Haskell — сугубо академический чисто функциональный язык и, к сожалению, сейчас менее популярен, чем Scala, но за ним будущее.
Каждый студент сейчас должен уметь использовать основные монады: IO, Maybe, [] (список), Either. Это позволит ему найти работу в будущем и избавить экономику от перекосов и дефицита кадров.
Подытожим. Я не жалею, что стал программистом в уже немолодом возрасте. Профессия таксиста из-за автоматизации имеет слабые перспективы. К тому же, технический прогресс в последние годы замедлился из-за того, что в мире нарастает волна дефицита программистов при избытке постоянно незакрытых вакансий. Поэтому каждый хороший программист уже сегодня должен помогать другим осваивать новую современную профессию будущего. Прежде всего помогайте представителям самых обычных профессий. Едете в такси, идете на родительское собрание в школу или едете в поликлинику — так возьмите с собой книги, подарите книги по Java, Scala или C++ таксисту, врачу, школьному учителю, расскажите о важности вашей профессии и дефиците кадров в ИТ-компаниях вашего города. Сантехник отремонтировал кран — заплатите ему и подарите ему еще книгу Шилдта «Java 8. Руководство для начинающих (6-е издание)». Общайтесь с людьми, показывайте людям сайты ИТ-компаний и убедите их, что незакрытые вакансии есть всегда. Этим вы сможете сделать мир лучше. А 40-летним мужчинам и женщинам я скажу так: не бойтесь ничего менять в вашей жизни и активно осваивать новую профессию. Стать программистом никогда не поздно, помните!
Автор: мастер слога