Как подполковник стал программистом

Андрей Ткаченко увлекся программированием еще в военном училище, но 25 лет посвятил службе в армии. По ее окончании, в 42 года, он решил вернуться к программированию и стал Software Engineer в Intetics. О своем карьерном пути он написал для DOU.

Служба

В мои семнадцать я тяжело представлял, кем хочу быть. Жизнь распорядилась так, что профессию выбирать мне надо было лет 30 назад, когда программирование сильно отличалось от того, каким мы его знаем сейчас. И хотя оно мне нравилось с точки зрения возможностей решения сложных задач, это направление не рассматривал серьезно в качестве будущей профессии. Программисты тогда работали в больших вычислительных центрах в машинных залах на перфокартах, магнитных лентах и барабанах. Это не было так привлекательно и интересно как сейчас :) Тот факт, что мой дед и дядя были военнослужащими, сыграл свою роль, и на семейном совете было решено поступать в военное училище. Свой интерес к программированию я смог реализовать, попав там в группу программистов.

Когда в училище на кафедре программирования появились первые ПК (EC 1840), я почувствовал «кайф», написав в качестве курсовой работы игру «Морской бой», а для сдачи зачета по матанализу — программу для моделирования прыжка с парашютом. Тогда я понял что, возможно, хотел бы заниматься этим в будущем.

Я закончил училище с красным дипломом и мне посчастливилось попасть в Военный научный центр космических исследований (при Харьковском военном университете), который взаимодействовал в том числе и с Национальным космическим агентством Украины. Я был вовлечен в очень интересные проекты, связанные с разработкой системы контроля космического пространства, специальной обработкой информации глобальных навигационных спутниковых систем. Эти проекты требовали как научного подхода, так и умения программировать. Именно там и пригодились не только мои научные знания, но и приобретенные на кафедре навыки программирования.

За 25 лет в армии я дослужился до звания подполковника. Службу проходил в нескольких местах: Военный научный центр космических исследований, Объединенный научно-исследовательский институт Вооруженных Сил, Харьковский университет Воздушных Сил им. Ивана Кожедуба. Также защитил кандидатскую диссертацию на тему «Первоначальное определение орбит космических объектов по радиолокационным и оптическим наблюдениям».

Программирование

Чем ближе было окончание службы, тем четче я понимал, что программирование — это реально то, чем мне бы хотелось заниматься после увольнения. Тем более, что я имел определенный опыт программирования на С++, а слова ООП, STL, паттерны не были для меня пустым звуком. Вместе с тем меня одолевали сомнения: достаточно ли моего опыта программирования, смогу ли я конкурировать с молодыми программистами, получившими современное образование, и которые, с большой вероятностью, лучше знают современные технологии, будет ли мой возраст играть против меня. Тем не менее года за полтора до даты моего увольнения я уже четко знал, что я сделаю все возможное, чтобы стать программистом, и имел более-менее сформулированный план по подготовке.

Чтобы определиться с технологией, я проанализировал рынок и пришел к выводу, что со знанием Java у меня открывается больше возможностей, чем если бы я углублялся в С++. Я понимал, что надо развиваться, и начал углубленно изучать английский, прошел курсы Java в Oracle Academy, начал программировать на Андроиде.

Английский я изучал постоянно (частные уроки, аудиокниги, фильмы, онлайн-курсы), начиная с уровня Pre-Intermediate в 2009 году и заканчивая получением сертификата САЕ в 2016 году.

Хотя во время службы на Java не приходилось писать, поставил себе цель изучить Java до такого уровня, чтобы быть готовым к сертификации SCJP for Java 6, для чего прошел четырехмесячные курсы в Oracle Academy.

Android же для меня был на уровне хобби. Мне просто нравилось писать программы для телефона, которые помогали мне в жизни. Как, например, при изучении английского: мне не хватало функциональности существующих аудиоплееров для изучения языка (нельзя было выделить несколько частей звукового файла и перемещаться между ними, многократно прослушивая каждый). Я написал собственный аудиоплеер, который решил эти проблемы, и даже были идеи довести его до PlayMarket. Всем этим я занимался около года, когда было свободное время.

Чтобы постоянно поддерживать свои навыки программиста в тонусе, а также понемногу «прокачивать» их, я сам придумывал себе задачи. Так, например, одна из программ, которую я написал, моделировала прохождение Луны по небу в определенную ночь (идея задачи родилась во время одной из ночных рыбалок).

Если я чего-то не знал или не понимал, то приходилось искать ответы на форумах и в книгах. В то время я больше читал книги, привязанные к определенным технологиям. Сейчас же, имея определенный опыт, могу сказать, что и книги, посвященные практическим законам разработки, такие как «Code Simplicity», не менее важны для развития.

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

Работа

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

Тестовые задания были непростыми, но интересными — пришлось поломать над ними голову, но это как раз стимулирует найти решение. Заданий было два. Первое относительно простое, его я делал дома. Это обычная алгоритмическая задача для проверки понимания алгоритмов и структур данных. Для выполнения второго задания меня пригласили в офис. Оно показалось чуть сложнее: помимо знания алгоритмов пригодился опыт программирования и оформления кода. Второе задание у меня отняло часов восемь, но это время вписывается в стандартную норму выполнения. После собеседования меня пригласили на работу.

Когда я начал работать как программист, испытал приятный культурный шок. Контраст между армейскими дисциплиной и принципом единоначалия с одной стороны и душевной обстановкой в компании с другой — был разительным.

Начал я сразу с реальных задач, хотя и самых простых, вроде добавления элемента «Кнопка» в графическом редакторе. В начальный период главной задачей было освоиться с функциональным языком программирования (у заказчика он свой). Язык внутри проекта — Flow. Он закрытый, не open source и используется только у нас. Таких много, их называют DSL-языки, или Domain-specific language. Такие языки предназначены для специфических областей. Также предстояло смириться с тем, что ООП в общепринятом понимании не поддерживается, и разобраться с архитектурой уже написанного кода.

Очень понравилось то, что заказчик учитывает индивидуальные особенности каждого и дает возможность входить в проект в своем собственном комфортном темпе. Лично у меня ушел где-то месяц на «вхождение» в проект (по опыту коллег — в среднем так и происходит). Мне помогло изучение ресурсов по реактивному функциональному программированию (их достаточно много в сети), а также курс «Functional Programming in Scala» на Coursera. Я прошел этот курс немного позже, но считаю его очень хорошим с точки зрения знакомства с функциональным программированием. Сейчас новички проходят тренинговый курс из 10 задач, охватывающих разные аспекты использования языка.

За 3 года я дорос до тимлида одного из подпроектов. И снова свою положительную роль сыграл армейский опыт: навыки управления коллективами оказались востребованы для этой позиции. И, конечно, очень помогает сертификат CAE: такой уровень английского позволяет более-менее свободно общаться с заказчиками.

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

Вывод

Когда я пришел в IT, мне уже было 42 года. Да, были определенные сомнения — тем не менее у меня все получилось и, более того, я продолжаю развиваться и расти. Для сомневающихся я могу сказать одно: пробуйте и будете удивлены, насколько все оказывается проще и легче, чем вы ожидаете. Разумеется, усилия прикладывать придется, но это применимо ко всем сферам, а не только к IT, которое зачастую кажется гораздо более требовательным, чем другие индустрии. Надеюсь, мой пример ясно доказывает, что никогда не поздно поменять что-то в жизни :) Главное, решиться.

Похожие статьи:
[DOU Hobby — рубрика о нетехнических проектах IT-специалистов: творчество, интересное хобби и другие lifestyle-достижения. Если вам есть о чем...
Компания Microsoft никогда не уточняла максимальную стоимость своих ноутбуков серии Surface Book. Как оказалось не зря. На старте продаж...
До вашої уваги дайджест навчальних програм для тих, хто починає свою кар’єру в ІТ. В цьому номері зібрані можливості,...
В Краснодаре совершен первый тестовый звонок с базовой станции 3G+, установленной компанией Ростелеком. Коммерческая...
Как говорится, не ошибается только тот, кто ничего не делает. РМ’ы, увы, ошибаются и делают это с размахом ;) В этой...
Яндекс.Метрика