Как инженеру техподдержки трансформироваться в мобильного разработчика

от автора

Цель статьи: Показать и продемонстрировать кейс как можно перейти в разработку из позиции инженера технической поддержки.

Основные тезисы:

1) Важный пункт статьи – необходимо УЖЕ быть в IT и работать в этом направлении;

2) На данный момент я работаю Application менеджером, но уже поправил пару багов и реализовал несколько фич. Как?

3) Сложности, переживания? Это все профит!

4) GrayLog. Данный инструмент улучшает насмотренность;

5) Изучайте LogCat – это мощный инструмент для первичной аналитики;

6) Подведение итогов и планы на будущее.

Всем привет! Меня зовут Иван, я работаю Application менеджером в Росбанке 2 года. На сегодняшний день тема “быстрого” входа в IT очень популярна, но никто не задумывается о том, что на это нужно закладывать гораздо больше времени, сил, нервов и стараний. Покупая курсы, вам никто не даст гарантию успешного трудоустройства. Можно начинать с малого и не погружаться в “узкое” направление. Например, устраиваться в чат поддержку любого IT продукта, где вы наберетесь опыта в коммуникации, понимании проекта, новые знакомства и т.д.  Достаточно много кейсов, когда из контакт-центра переходили в полноценные аналитики. На предыдущем месте работы у меня как раз-таки был такой коллега.

В данной статье обсудим кейс, когда вы уже в IT и решили заняться Android разработкой. Для успешного начала разговора с боссами) нужно иметь понимание следующих вещей:

  1. Языки программирования:

    • Kotlin — основной язык для разработки Android-приложений в настоящее время;

    • Java — также широко используется, особенно в более старых проектах.

  1. Android SDK и Android Studio:

    • Знакомство с Android SDK и его компонентами (Activity, Fragment, View, etc.);

    • Опыт работы с Android Studio — основной IDE для разработки Android-приложений.

  2. Архитектурные шаблоны:

    • Понимание архитектурных шаблонов, таких как MVP, MVVM. Принцип Clean Architecture.

  3. Работа с данными:

    • Опыт работы с Room;

    • Знание принципов асинхронной обработки данных (Coroutines).

  4. Сетевое взаимодействие:

    • Понимание принципов работы с REST API, HTTP-запросами;

    • Опыт использования библиотеки для сетевого взаимодействия (Retrofit).

  5. Пользовательский интерфейс:

    • Знание основ XML-разметки для создания пользовательских интерфейсов;

    • Опыт работы с RecyclerView, ViewPager и другими UI-компонентами;

    • Понимание принципов адаптивного дизайна и Material Design.

  6. Системы контроля версий:

    • Опыт работы с Git и GitHub для управления исходным кодом.

  7. Тестирование:

    • Знание основ unit-тестирования, инструментов для тестирования (JUnit, Mockito);

    • Понимание принципов TDD (Test-Driven Development). (Будет большим плюсом).

  8. Библиотеки и фреймворки:

    • Знакомство с популярными библиотеками и фреймворками, такими как Hilt, Glide, Paging3.0. Большой плюс это хотя бы верхнеуровневое понимание Compose UI.

  9. Java Core:

    • Принцип работы со строками в JVM;

    • Stack и Heap;

    • Принцип работы Garbage Collector;

    • Многопоточность в JVM.

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

По моему мнению, это крутой опыт для хорошего старта в разработке или, если в вашей жизни сложилось так, что вы работаете инженером технической поддержки. (Это != чат поддержка). Именно навыки инженера позволят адаптироваться и принять новые вызовы.

В чем профит уже находится на позиции поддержки в IT перед началом своего пути? Как минимум с вами можно общаться на одном языке, есть насмотренность и общение с разными командами и профилями. Обычно инженер понимает верхнеуровенево по всем процессам в разработке и видел код со стороны.

Когда у меня было собеседование в Росбанк мы обсуждали Java код. А в нем я себя чувствовал уже весьма уверенно.

Немного расскажу про себя и свой опыт. Начинал со стажировки IT Джуном в компании Metro Cash and Carry, где увлекся Android разработкой. Удалось принять участие в проекте по реализации мобильного приложения по учету оборудования. Это было классическое клиент-серверное приложение. Важный аспект – после успешного прохождения стажировки меня приняли на работу, как специалиста службы поддержки пользователей в офисе. То есть нужно было накатывать ПО, решать вопросы с оборудованием и т.д. Делалось все это через Jira, где я смог изучить Kanban.

Спустя год программирования part-time решил перейти в новую компанию, а именно в Росбанк и заняться полноценной поддержкой только мобильного приложения. Это позволило мне погрузиться в микросервисную архитектуру, изучить финтех составляющее, понять, что такое продуктовая разработка. Это максимально качественно расширило мой кругозор и в желании развиваться, как мобильный разработчик я начал действовать.  Мне потребовалось полгода для качественного понимания микросервисной архитектуры в компании. Благодаря высоким компетенциям сотрудников Росбанка можно было задавать любой вопрос. Решая кейсы, изучая логи можно было увидеть верхнеуровнево принцип работы мобильного приложения.

В желании “пощупать” настоящий многомодульный проект, попробовать “пильнуть” фичу я начал искать выходы на разных руководителей. В этом мне очень помог мой руководитель. Отдельное ему спасибо в этом! Мне удалось попасть на встречу с лидом разработки, где мы пообщались про мой опыт и технологии с которыми удалось поработать. Буквально через несколько дней я получил фидбек о том, что мне готовы дать доступы! Счастью не было предела. Неужели я стал еще ближе к своей цели? Мы договорились, что первое время уделяю внимание только чтению кода. Уже хорошо! Работало это таким образом, что при поступлении нового инцидента пробую изучить связанный с ним модуль, посмотреть, как все работает и попробовать разобраться в причине ошибки. Большой плюс – изучение кодовой базы сразу в нескольких модулях.

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

Излишние переживания

Стоит запомнить важный момент — вы не на стажировке). К слову, многие компании предоставляют такую возможность и это уже отдельная тема для другой статьи. Вернемся к нашей теме. Тем самым, получая задачу, вы будете с ней практически один на один. Это не значит, что про вас забыли и вы не можете задавать вопросы, но суть в том, что на 80% нужно разбираться самим, но результат оправдает все сложности, понимание процесса разработки будет только расти.

Многомодульность

Первоначальная сложность заключается в разборе большого многомодульного проекта. Именно такой Росбанк онлайн. Новичку трудно ориентироваться в таких проектах. В этом есть определенный плюс. Вы думаете это “сборная солянка”? Оказывается, это идеально структурированный код J. Это выглядит как распутывание узлов. Чем больше вы погружаетесь в код, тем больше складывается у вас этот пазл.

В работе над проектом мне очень помогло знание “Чистой архитектуры” (https://apptractor.ru/develop/chistaya-arhitektura-na-android-i-ios.html). Вы лишний раз не будете “тыркать” вашего синьора помидора и «повзрослеете” 😀 в его глазах.

Многозадачность

Для всех это очень спорная затея т.к. переключение от одной задаче к другой может сопровождаться потерей эффективности. В данном случае помогает Agile. По началу мне сложно было переключаться от задач поддержки к разработке, но в скором времени я подключил Kanban доску (это одна из методик, которая может быть использована в рамках Agile. Это визуальная система управления задачами, которая помогает командам отслеживать прогресс и оптимизировать рабочие процессы) и грамотно распределил свои обязанности. Эффективность не страдала, качество постепенно росло.

Реакции ребят на 3 линии

Постепенно с каждой решенной задачей мои компетенции в Android разработке росли. Я начал реализовывать инструкции для коллег из поддержки по решению кейсов Android. Написание инструкций помогло передать более расширенные знания коллегам тем самым, некоторые задачки решались гораздо быстрее. Среди повседневной рутины поддержки было очень клево решать проблемы по мобилке. Когда я разбирал кейсы я не задумывался, как это работает внутри. Благодаря пониманию что происходит “под капотом”, решение и передача на другую линию поддержки ускорилось. Я заметил, что мои инструкции повлияли на коллег и они стали использовать их как шаблон для решения кейсов.  

Передача знаний

Большой бонус во всей этой затеи заключается в том, что при разностороннем видении проблемы, используя призму разработки Android можно структурно понимать, как решить сам корень проблемы. При передаче знаний коллегам компетенции команды растут, тем самым растет качество анализа проблемы. Чем больше мы знаем о самой причине возникновения проблемы, тем больше информации можно передать аналитикам, а в некоторых случаях даже помочь им. J

Выходите из зоны комфорта

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

Ставьте себе цели. Изучайте новые технологии и библиотеки. Трекайте свой прогресс и проходите мок-собеседования. Это позволит вам выйти на новый уровень. Крайне рекомендую использовать, например, Yougile. Очень удобная доска, сделанная по аналогии с Trello. (https://ru.yougile.com/)

Во вторник мне нужно прочитать 4 статьи и написать конспект. Клевый лайфхак – вы можете их загонять в chat-GPT и попросить кратко составить тест, который вам нужно будет пройти. Вы закрепите свои знания. Этот подход обучения достаточно простой и эффективный.  

Ребята, самое главное — повторяйте пройденный материал хотя бы раз в неделю. Выписывая ключевые аспекты, к вам приходит понимание, осознание, а само закрепление — через постоянное повторение пройденного материала.

Не старайтесь заучить, необходимо понять. @Гуру разработки.

Не просто так ходят слухи, когда работаешь Android разработчиком, и в целом, на любой другой должности, то забываешь, как проходить собеседования)

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

Как Graylog может помочь при изучении разработки под Android?

  1. Отладка приложений:

    • При разработке Android-приложений вы можете использовать Graylog для сбора логов из вашего приложения. Это поможет вам отслеживать ошибки и исключения, которые происходят во время работы приложения.

  2. Анализ пользовательского поведения:

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

Пример: поиск по уникальному идентификатору пользователя без указания стримов, чтобы найти и отследить всю активность клиента в последние 2 дня.

После поиска — открывается панель сообщений. Сообщения состоят из раскрываемых блоков, которые содержат полное тело сообщений. Чтобы проанализировать конкретные стримы-сервисы — к примеру, «account-app и finance-api» (для анализа продуктов клиента) — указываем их в поле «Select streams…» либо выбираем в выпадающем списке. 

Почти у каждого сообщения есть traceid — по которому можно найти более детальную информацию, где могут храниться ошибки. В поисковую строку пишется traceId:ae1376d85e2a6826, ставится период времени, стримы указывать необязательно.

Посмотрите сколько тут разных исключений и ответов от сервисов. Более подробно:

Graylog — это мощный инструмент для работы с логами, который может значительно помочь начинающим разработчикам. Это отличная возможность увеличить насмотренность. Вы спросите: «Так инженер технической поддержки постоянно работает с логами!». Все верно. Но если сфокусировать свое внимание и рассматривать данный инструмент не как устройство для поиска ошибок, а как визуализацию действий пользователя, то станет наглядно понятнее, что происходит при клике и переходе в разные флоу в самой мобиле.

Я проводил эксперимент и смотрел за своими логами в момент тестирования приложения Росбанк онлайн. Весьма занимательно и очень полезно.

LogCat — это инструмент, используемый в Android-разработке для отображения логов и сообщений от приложений и системы. Он является частью Android Studio и предоставляет разработчикам возможность отслеживать и отлаживать поведение приложений в реальном времени.

Основные функции LogCat:

  1. Отображение логов:

    • LogCat показывает сообщения, которые генерируются приложением и системой Android. Это могут быть сообщения об ошибках, предупреждения, информационные сообщения и отладочные данные.

  2. Уровни логирования:

    • LogCat поддерживает различные уровни логирования, которые помогают фильтровать сообщения:

    • Verbose: Все сообщения, включая отладочные.

    • Debug: Сообщения отладки, полезные для разработки.

    • Info: Общая информация о работе приложения.

    • Warning: Предупреждения о потенциальных проблемах.

    • Error: Сообщения об ошибках, которые могут привести к сбоям.

    • Assert: Сообщения для проверки условий.

  3. Фильтрация и поиск:

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

  4. Отладка:

    • Разработчики могут использовать LogCat для отладки приложений, добавляя логирование в код с помощью методов, таких как Log.d(), Log.i(), Log.w(), и Log.e(). Это позволяет отслеживать выполнение кода и выявлять проблемы.

  5. История логов:

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

Когда к нам в поддержку поступает инцидент, мы можем запросить собрать логи с мобильного приложения. Они сохраняются в текстовый файл. Очень удобно отслеживать какие ручки были “дернуты” пользователем и в каком флоу могла возникнуть ошибка. Очень удобно, что сразу есть Response id (traceId) и его можно вставить в graylog, и увидеть ошибку развернуто.

Подведем итоги:

1) Технологии и библиотеки, которые приведены выше — обязательно нужно понимать целиком в том числе, как работают под капотом. Особенно Java core;

2) Нужен четкий план в Backlog. Пройдитесь по технологиям выше. Для того, чтобы выявить основные проблемы, попросите ChatGPT составить по каждой отдельной теме тест;

3) Проявляйте инициативу. Все зависит только от вашей мотивации;

4) Не бойтесь общаться с руководством и доносить свои планы на будущее;

5) Работая узконаправленно — вы прокачиваете компетенции инженера!

6) Учеба — никогда никому не вредила.

В целом, если у вас есть базовое представление и опыт в программировании (большой бонус – это ведение своих pet проектов на git, вот пример моя ссылочка J https://github.com/Intense-m9) на момент прочтения статьи, то уже сейчас инициируйте свое знакомство с лидом разработки и вперед!  P.S Даже если свободных вакансий нет — это не значит, что для вас не найдется задачки.

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


ссылка на оригинал статьи https://habr.com/ru/articles/857154/