[Перевод] Как я стал Android-разработчиком в 40 лет
Начинать карьеру разработчика ПО в сорок лет не поздно.
Однажды мне кто-то сказал: «Если в 35 лет ты всё ещё программист, то начинай искать другие варианты на вторую половину своей карьеры. Молодое поколение наступает на пятки, и скоро ты устареешь».
И действительно, в 35 лет я начал задумываться над тем, что делаю. Моя ситуация была другой. Тогда я не был программистом, а работал в руководстве. В то время я скучал о своём прошлом программиста на C++.
Первые несколько лет моей карьеры были посвящены разработке на C++. Однако после перехода на руководящую роль мои навыки программирования заржавели. Моя повседневная работа состояла из совещаний, PowerPoint и Excel и, разумеется, из кучи писем. Читал я код раз в недели или месяцы, не говоря уже о его написании.
В 39 лет я переехал в другую страну. В этой новой стране мои навыки управления больше не были актуальными. На руководящие должности компании предпочитали брать людей с местным опытом работы.
У меня была возможность сменить карьеру и работать на другой обычной работе, не требующей технических знаний. Но я люблю программирование. Я хотел вернуться к тому, с чего начинал. Поэтому я прошёл несколько собеседований по C++.
К своему стыду, я даже не прошёл предварительной проверки по написанию кода. Меня охватило уныние.
Я даже не был уверен, что хочу снова вернуться к C++. Эти вакансии по C++ для разработки встроенных систем включали в себя работу с оборудованием, а не обычную разработку ПО, которая мне была интересна.
Учитывая то, что больше я не владею C++, что мне хочется делать?
В то время главной актуальной темой была мобильная разработка, особенно для iOS. Но чтобы освоить iOS, нужны MacBook и iPhone. У меня не было ни того, ни другого. К тому же, пришлось бы слишком много вложиться, а я был не уверен, что попаду в эту сферу.
Тогда у меня имелись ноутбук с Windows и телефон Samsung S2. Я увидел, что на подъёме находится разработка для Android. Хотя Android не был самой активно используемой ОС, всё больше и больше людей покупали телефоны с Android, в том числе и я.
Поэтому я выбрал Android. Вот и всё.
Зная цель моего обучения, я должен был теперь найти нужные ресурсы.
- Благодаря Google комплект разработки Android Studio полностью бесплатен! А для регистрации в Google Playstore достаточно единовременного платежа в $25!
- Я купил несколько книг, которые мне удалось найти. Тогда их было не так много, потому что Android пока оставался новинкой.
- Лучше всего было то, что в Интернете обнаружилось много обучающих ресурсов, справок по коду и так далее. Также я смог подписаться на обучающие рассылки. Изучение разработки стало намного более доступным, чем в прошлом! Им мог заняться любой!
Что же дальше? Приступаем к кодингу!
Я создал несколько мелких приложений и опубликовал их в Store. Мне довелось прочувствовать всё от начала до конца, то есть я знал, что необходимо для проектирования, разработки, тестирования и выпуска в публичный доступ.
Пойми, что хочешь изучить, и сделай это!
Хотя я мог учиться и работать самостоятельно, мне было известно, что я никогда не ускорюсь в своём обучении до нужного темпа, если не буду работать с коллегами-разработчиками для Android. В идеале мне хотелось работать в компании, занимающейся разработкой для Android.
Благодаря опубликованным мной приложениям я попал на собеседование в растущую компанию, занимающуюся мобильной разработкой. Это была поистине золотая возможность.
Я знал, что недостаточно опытен для сениор-разработчика. Поэтому я согласился на ту должность, которую мне могли предложить, ведь так я получу возможность работать и учиться. Меня устраивает быть джуном, если это даст мне прекрасную возможность учиться.
К сожалению, я провалил последний этап интервью. Это было сокрушительное поражение для меня.
Что я сделал дальше? Я написал компании письмо, где поблагодарил её за предоставленную возможность.
Но на этом я не остановился, и спросил, захотят ли они принять меня в качестве стажёра. Я сказал, что готов даже работать и учиться бесплатно, за возможность повысить свои навыки.
Наконец, я дождался ответа. Меня позвали не на должность стажёра. Это была должность тестировщика QA мобильных приложений.
ДА! Меня это полностью устраивало. Пусть я не смогу кодить, зато буду тестировать работу. Смогу общаться со специалистами и учиться у них. К тому же мне будут платить за тестирование. Это лучше, чем быть стажёром без оплаты.
Я буквально кричал от радости.
Обучение ускоряется, если попасть в нужную среду.
Моя цель стать разработчиком для Android исполнилась на 50%, когда я получил работу в компании мобильной разработки. Не было никаких гарантий, что я добьюсь остальных 50%. Мне придётся совершенствовать свои навыки разработчика и быть готовым к появлению возможности.
К сожалению, время играло против меня. Мне приходилось работать по восемь часов в день тестировщиком QA. Я завидовал тем, кто работал разработчиками, потому что они могли учиться во время работы. Это лучше всего, но у меня такой роскоши не было.
Тем не менее, сама по себе работа в компании мобильной разработки стала большим плюсом. У меня появился доступ к обучающим ресурсам компании. Это сильно мне помогло в выяснении того, на что стоит сделать упор в обучении.
Лучше всего было то, что теперь у меня появилась связь со специалистами в этой сфере. 95% из них были младше меня. Возраст ничего не значил, важем был их опыт в этой сфере. Я крайне уважаю их навыки и знания, их готовность делиться. Я столь многим им обязан!
Я обучался и писал код в свободное от работы время. Это было непросто, но давало удовлетворение. Постепенная учёба и ощущение того, что я двигаюсь в нужном направлении — это прекрасно. Моя миссия заключалась в том, чтобы стать разработчиком для Android.
На этом этапе мне нужно было постоянно демонстрировать свой прогресс в обучении, и в то же время тщательно выполнять свои обязанности в отделе QA. С регулярными интервалами я показывал руководителю отдела разработки для Android то, чего достиг, и проверял, буду ли я готов, когда откроется вакансия разработчика.
Спустя шесть месяцев меня перевели на должность разработчика. Я официально стал разработчиком для Android! Пусть джуниором, но разработчиком!
Чтобы хорошо учиться, нужно сделать это частью своей работы.
Когда я стал разработчиком для Android, мне было сорок лет. И это не конец моей миссии, а только начало.
Я был совершенно счастлив, потому что мог кодить столько, сколько хотел. Мои рабочие часы — это часы кодинга. Я учился во время работы. Я разрабатывал в паре со специалистами и учился у них. Я должен был читать их код, а они должны были читать мой. В то время я существенно ускорил освоение разработки для Android.
Я мог удовлетвориться этим уровнем. Но я знал, что у меня не так много времени, как у других, ведь я старею. Мне необходимо больше, чем просто учиться.
С благословления моего руководителя, который в то же время был моим техлидом, я начал писать в блог. Чтобы начать, мне понадобилось какое-то время, потому что я думал, что никому не захочется читать его. Я не специалист. Что, если написанное мной не будет отвечать стандарту? Или просто окажется неверным?
Тем не менее, я заметил, что легко забываю изученное. Поэтому моя цель была проста: я писал блог для себя. Это больше походило на заметки по обучению. Если никто не будет их читать, то, по крайней мере, я с лёгкостью смогу вспомнить то, чему учился.
Я уделил время записыванию своего обучения, делая возможность вспомнить его как можно более простой. Для каждого из своих уроков я рисовал диаграммы, прикладывал пример работающего кода. И всё это для того, чтобы с лёгкостью вспомнить то, что я учил.
К моему удивлению, нашлись люди, читавшие мой блог. Нашлись люди, писавшие благодарственные отзывы. Их сообщения сильно мотивировали меня продолжать писать в блог.
Но самое важное было то, что находились и люди, несогласные со мной. Признаюсь, иногда я ощущал, что мне как будто нужно защищаться. Но именно некоторые из таких ответов позволили мне понять, что существуют разные мнения.
Иногда я был совершенно неправ. Иногда, хотя я и не был неправ, я не понимал точку зрения собеседника. Всё это возможности учиться. Это делало моё обучение более полезным. Всё это было путём к улучшению навыков разработчика для Android.
Когда мы делимся, то узнаём больше всего, но только если хотим этого.
Спустя более чем четыре года разработки для Android я достаточно хорошо освоился в ней. В то время я был сениор-разработчиком. Кроме разработки я занимался менторством у джуниоров.
Не могу сказать, что знаю всё о разработке для Android, но лучше разбираюсь, как получать и находить информацию, обладаю лучшим интуитивным понятием того, что хорошо и плохо. Кроме того, разработка для Android тоже продолжает развиваться, так что многому нужно учиться. Я получаю от этого удовольствие.
Я могу остановиться на том, где нахожусь сейчас, и успокоиться. Мне нравится моя должность, мой код и моя работа. Однако я по-прежнему делал вклад только в одиночку. Моя степень влияния распространялась только на то, что я мог сделать сам. К тому же я задавался вопросом, этим ли я хочу заниматься следующие десять лет своей жизни?
Поэтому когда появилась возможность, я решил двигаться дальше. Я подал заявление на должность ведущего разработчика, отвечающего и за iOS, и за Android. Я получил её, несмотря на то, что не очень хорошо знал iOS.
Понимание того, что я знаю не всё, за что отвечаю, заставляло испытывать дискомфорт. Но именно это чувство дискомфорта стимулировало меня учиться и расширять мои знания. Поэтому я приступил к изучению iOS.
Не думаю, что смог бы освоить iOS так же хорошо, как Android. Однако обучение помогло мне более широко увидеть сферу мобильной разработки. Оно помогло разобраться, в чём хороша разработка для Android, а в чём она отстаёт.
Пока мы не узнали, что хорошо и что плохо, мы выучили недостаточно. Продолжайте учиться.
Перенесёмся в современность. После моего вступления на путь разработки для Android прошло более семи лет. Изменилось очень многое.
Теперь я руководитель отдела мобильной разработки и отвечаю за совместную работу мобильных команд и архитектуру. Наряду с технической должностью я должен участвовать в различных задачах руководства.
Я снова вернулся на этап, когда у меня не так много времени писать код и учиться во время работы. Но мне всё равно нравится моя работа и она всё ещё достаточно техническая по своей природе, просто на более высоком уровне технических деталей.
Чтобы принимать правильные технические решения высокого уровня нужно обладать и основательным техническим пониманием низкого уровня. Чтобы иметь его, мне недостаточно полагаться на своё обучение в прошлом, я должен продолжать учиться. Надеюсь, я не повторю историю, случившуюся со мной ранее.
Таков мой небольшой рассказ. Даже в сорок лет не поздно браться за карьеру в разработке ПО.