Меня зовут Виталий Хмелёв, с 2019 года я работаю в команде Аndroid-разработки в Lamoda, а до того почти семь лет проработал здесь же программистом 1C. В этой статье хочу поделиться своим опытом и дать некоторые советы, которые, я надеюсь, помогут, если вы тоже задумываетесь заняться разработкой на Android.
Как я попал в программирование
Я учился в универе по айтишной специальности, немного поработал системным администратором, а после универа устроился WEB-разработчиком в строительную компанию. Но работы было немного, а вот в соседнем отделе, который занимался 1С-разработкой, было задач предостаточно. Я начал постепенно им помогать и в итоге стал работать с этим языком.
В 2012 году я пришёл в Lamoda в отдел 1С-разработки и остался в нем на целых 7 лет. В самом начале моей работы все процессы товародвижения были автоматизированы на 1С. На нём же работала наша собственная фотостудия. Это всё входило в одну большую конфигурацию, основанную на решении 1С: Комплексная Автоматизация. В ней же были бухгалтерия и кадровый учёт.
Постепенно какие-то части стали выводить из состава большой конфигурации. Первой стала фотостудия, которую переписали на PHP. Затем в компании начали внедрять Microsoft Dynamics AX, и товародвижение и бухгалтерия перешли на нее. Кадровый учёт переехал в отдельное готовое решение 1С: ЗУП.
Но одновременно с этим происходило расширение компании, открывались новые филиалы в странах СНГ, и в большинстве из них кадровый учёт и бухгалтерия велись на 1С, а поддержкой занимался наш московский отдел 1С-разработки. Большая часть задач решалась удаленно, но как-то раз я даже ездил в командировку в Казахстан для внедрение проекта в филиале.
Карьера складывалась успешно — почему же я решил заняться чем-то другим?
В нашей команде в Lamoda мы старались писать на 1С качественно и применять современные подходы. Ориентировались на рекомендации самой компании 1С и на то, как написаны базовые конфигурации.
Мне нравилась моя работа. Хотелось глубже погружаться в разработку, профессионально расти в программировании. Я читал книги, статьи, но из-за особенностей самого языка 1С, и среды разработки, многие концепции для него просто неприменимы. По сравнению с другими популярными языками — PHP, Java, С — 1С достаточно простой, и в нем много чего нет.
Была и еще одна вещь, которая мне не нравилась. В 1С нельзя быть просто разработчиком. Ты должен хорошо разбираться в тех областях, которые автоматизирует 1С — это в основном бухгалтерия, налоговый учет, расчет зарплаты, плюс ещё какие-то части бизнеса, которые реализованы на этом языке в компании. Мне это всё было не очень интересно, так как мне больше нравилось именно программирование.
Я не знал, как я буду развиваться дальше, если останусь в 1С. У меня были основные сертификации (несколько Профессионалов, Специалист по платформе 1С). Следующая ступень — сертификация как Эксперта 1С. Экзамен там достаточно сложный, и либо мне надо было начинать готовиться к нему, либо уходить в какую-то другую сферу.
В итоге я признался себе, что да, мне нравится 1С, но не настолько, чтобы идти с ним до уровня Эксперта =)
Как я выбирал, в какую область перейти?
У 1С есть большой плюс — высокая востребованность разработчиков. Практически в любом городе России можно найти себе работу. Мне хотелось выбрать новую область тоже достаточно популярную, чтобы пусть не в каждом городе, но в крупных городах были вакансии — причем не только в России, но и на Западе.
Хотелось выбрать мощный язык, не нишевый. Чтобы можно было использовать удобную среду разработки — в 1С с этим не очень. Есть решение 1С:EDT, которое позволяет приложить некоторые дополнительные усилия и пользоваться не встроенной средой (Конфигуратором), а Eclipse. Однако в 2018 году мы посчитали его достаточно сырым и неподходящим для каждодневной разработки, поэтому в Lamoda мы продолжали писать в Конфигураторе.
Мобильная разработка показалась мне очень перспективной областью (и я не поменял свое мнение до сих пор). Осталось выбрать между Android и iOS, что было достаточно легко, потому что я уже имел опыт разработки на Java в институте и писал небольшой личный проект для Android еще в 2011 году. Поэтому я решил, что проще будет восстановить и углубить знания именно в этой сфере.
Подготовка к переходу — самообучение
Я начал активно учить теорию, на которую ушло чуть больше года. Занимался сам после работы и в выходные. Изначально я был настроен очень серьезно, выбирал такой темп, чтобы не перегореть и довести план до конца.
Сразу решил, что платные курсы проходить не буду, но старался, чтобы мое самообучение было достаточно структурированным. Начал с курса Гугла, потом добавил ютуб курсы от Яндекса и Mail.ru, плюс книги (в основном по Java). Конечно, изучал официальные гайды по Android от Google — их много, они качественные и постоянно обновляются. В какой-то момент Google официально рекомендовал Kotlin как язык для разработки под Android. Я понимал, что работать буду, скорее всего, на Kotlin, и добавил его в свою программу обучения.
Что касается практической стороны обучения, то сначала я делал только учебные приложения, которые не несли особой полезной нагрузки. Но когда уже неплохо освоил теорию, понял, что нужно разработать полноценное законченное приложение, которое я смогу показать на собеседовании. Ведь я собирался устраиваться на работу, не имея опыта в этой области. Мне было необходимо показать, что я что-то умею.
Я начал разрабатывать свое приложение. Мне хотелось, чтобы у него была какая-то практическая польза, поэтому я решил сделать приложение для друга, который увлекался коллекционированием наклеек на спортивную тематику. Потом к одному приложению добавилось второе. В итоге друг был доволен, а у меня появился законченный проект на гитхабе, ссылку на который я прикладывал к своему резюме.
Переход на новое (?) место работы
Найти хорошее место работы, не имея опыта по новой специальности, казалось непростой задачей. Я сразу подумал о том, чтобы попробовать перейти в команду Android-разработки внутри Lamoda. Мои руководители по 1С-разработке могли дать рекомендации, что должно было помочь.
Хотелось узнать, как вообще выглядит Android-разработка в Lamoda. Я установил и изучил приложение компании как пользователь, но хотелось больше узнать про техническую сторону. В Lamoda есть TechTalks — встречи внутри компании, где разные команды выступают с докладами о том, чем они занимаются, какие технологии используют. Они открыты для всех желающих, и я стал слушать доклады команды Android-разработки. После внутренних выступлений специалисты с этими же докладами идут во “внешний мир”. Вот, например, запись того доклада, что я слушал, но уже с конференции Mosdroid. Из докладов я узнал, какие у них в принципе задачи, а заодно стал изучать именно те технологии, которые используются в компании — это помогло мне в дальнейшем с переходом.
В июле 2019 года, через год с небольшим после начала изучения Android, я решил, что готов работать в новой области. Написал письмо тимлиду Android-разработки, прошел техническое интервью, и меня взяли в команду. И уже с августа 2019 я работаю как Android-разработчик.
На новом месте
Офис остался прежним, но многое, конечно, сильно изменилось. В первую очередь некоторые технические вещи. Среда разработки — основной рабочий инструмент, и очень важно, чтобы она была удобной. Android Studio по сравнению с Конфигуратором 1С — небо и земля. Ощущение, что ты просто летаешь над проектом, в котором очень быстро можно найти все, что нужно, разобраться, как и что работает.
Я переходил в новую область во многом потому, что хотел развивать навыки программирования на мощном современном языке. Переход в Android полностью оправдал мои ожидания. Наша команда пишет новый код только на Kotlin, Java нужна для доработки уже написанного. Мне Kotlin очень нравится, у него приятный синтаксис, и он не такой многословный, как Java. Также язык молодой, и сделан с учетом современных паттернов программирования.
Совершенно новым для меня оказался принцип работы по дизайну. В 1С разработке дизайн — дело десятое. Об удобстве интерфейса для пользователя заботится сам разработчик, так, как он это понимает. И вся аудитория тех, кто увидит твои формы, отчеты и обработки, по сути, ограничена сотрудниками собственного отдела кадров и бухгалтерии.
У наших Android-приложений, наоборот, очень большая аудитория, и дизайн здесь очень важен. Поэтому им занимаются специалисты, совместная работа с которыми оказалась для меня интересным новым опытом.
Android-разработка относится к фронтенду, в ней ты максимально близок к конечному пользователю и максимально далек от реальных бизнес-процессов. Бэкенд присылает уже обработанные данные в удобном формате, которые нужно в приятном виде показать пользователю. Поэтому практически нет необходимости разбираться в предметной области, можно больше заниматься самим программированием, чего я и хотел.
Мне нравится, что в нашей команде организована постоянная работа с техдолгом. Мы регулярно занимаемся рефакторингом старого кода, переписываем с Java на Kotlin. Это погружение в чистое программирование, когда нет необходимости думать даже про дизайн: берешь старый legacy код, и переписываешь его в удобный, быстрый, легко читаемый, в соответствии с современными подходами. Привычка сразу задумываться о качестве и удобстве кода, которую я получил еще в команде 1С-разработки, сильно помогла мне здесь.
По чему из 1С-разработки я скучаю больше всего, так это по хорошей подробной документации полностью на русском языке =) И русскоязычному профессиональному сообществу в интернете. В Android в 9 случаях из 10 ответ на какой-то вопрос есть только на английском. На английском я читаю пока что медленнее, чем на русском, и времени на то, чтобы в чем-то разобраться, уходит больше.
Кратко: как перейти в Android из какой-то другой области?
- Изучить теорию. Либо на платных курсах, сейчас их достаточно много. Либо заниматься самообучением. Есть хорошие бесплатные вводные курсы от Google и целые плейлисты на ютубе . Объем теории большой (посмотрите, например, на эту дорожную карту), но если это ваше — вам будет интересно.
- Написать свое демо-приложение, которое можно будет приложить к резюме. Опыта коммерческой разработки у вас нет, но будущим работодателям нужно хоть как-то оценить ваши навыки. Приложение даст им возможность это сделать. Код нужно выложить в открытый репозиторий, например, на GitHub.
- Хорошо подготовиться к техническому интервью. Первые два пункта нужны, чтобы вас позвали на собеседование, но потом его нужно еще пройти =)
- Готовиться я советую по телеграм-каналам. Есть хорошие каналы отдельно для подготовки к общим IT-вопросам, вопросам по Android и по Java. Там разбираются все основные вопросы, которые задают на собеседованиях. Многие из них и мы в Lamoda задаем кандидатам. Сейчас я сам принимаю участие в собеседованиях, и когда видно, что человек подготовился — это всегда создает хорошее впечатление.
Эти три пункта должны помочь найти первую работу в Android.
Если у вас появились какие-то вопросы — буду рад ответить на них в комментариях!
Автор: Виталий Хмелев