valery-bashkatovvalery-bashkatov

Валерий Башкатов

iOS-разработчик · Приложения · Старший (Senior)
От 250 000 ₽ · Не ищу работу
Опыт работы: 11 лет и 9 месяцев
Регистрация: 23.11.2016
Последний визит: 4 дня назад
Местоположение: Россия, Воронеж
Профессиональные навыки: Разработка под iOS · Swift
Войдите, чтобы посмотреть контакты пользователя

Опыт работы

  • Юду
    Москва
    Ведущий iOS-разработчик
    Февраль 2017 — Декабрь 2019 (2 года и 11 месяцев)

    На первом этапе занимался доработкой старой версии приложения, которой на тот момент было уже 5 лет. Учитывая множество пластов, которые были в коде со всеми разнообразными предпочтениями прежних разработчиков, это было психологически-сложный опыт в плане разбирательств что и где искать).

    На тот момент приложение было в основном на Objective-C, новые фичи писали уже на Swift. Из запомнившегося значимого - реализиация нового способа получения-оплаты задания, именуемого Сделкой без риска. Функция требовала доработку всех основных флоу и экранов приложения.

    Где-то через полгода стартовал всеми ожидаемый проект разработки новой версии приложения. Вся клиентская часть делалась полностью с нуля на последней версии Swift. Новую версию выпустили в 2018 году. И это было и есть главное достижение на этой работе. Дальше уже шли хоть иногда и крупные доработки по бизнес-задачам различной тематики.

    Что касается архитектуры и пр., то сразу учли жесткие связи и кашу в старом приложении, и остановились на паттерне VIPER, но кастомизировав. Кастомный, потому что отказались от R, реализовав переходы на основе координаторов. Так же решили максимально придерживаться чистоты и понятных связей, поэтому SOLID, DI, насколько можно. Полный Protocol-Oriented Programming и дженериказация.

    Про объем кодовой базы приложения и сложности связей в нем - в какой-то момент проект просто перестал компилироваться с непонятной ошибкой. Историю поиска решений и выходу из ситуации тимлид рассказал на CocoaHeads (там же показаны некоторые наши архитектурные подход): https://www.youtube.com/watch?v=vq_PM1DTpIk#t=14m18s

    Что по технологиям и инструментам?

    - Внешние и внутренние связи - CocoaPods

    - Автоматизация, пре- и пост-экшены: Generamba, Sourcery, SwiftGen, SwiftLint, SwiftyMocky, самописные скрипты.

    - Сбор аналитики и крашей: AppsFlyer, Fabric, Firebase.

    - Сетевое взаимодействи: для HTTP-запросов самописная, в чем-то по интерфейсу схожая с Alamofire прослойка. Небольшая часть на сокетах под Socket.IO.

    - База данных Realm.

    - UI и вот это вот все. Сториборды - нет, верстка ячеек в ксибах - да. Из интересного - задумка дизайнеров добавить красивые анимашки. Выбрали библиотеку Lottie (https://github.com/airbnb/lottie-ios). И снова немного офтопа, доклад по теме от нашего на тот момент дизайнера: https://www.youtube.com/watch?v=6wfChHTXeqs

    - Ну и стандартный набор из карт GoogleMaps, соцсетей для авторизаций.

    Само приложение: https://apps.apple.com/ru/app/youdo-работа-курьеры-уборка/id560999571

  • Кватро Про
    Москва
    iOS-разработчик
    Июнь 2016 — Январь 2017 (8 месяцев)

    Участие в разработке iOS-клиента корпоративного мессенджера.

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

    Первичной целью была работающая демонстрационная версия продукта, выпущенная в сжатые сроки. Цель была достигнута. Дальше пошла стабилизация приложения, разработка нового заявленного функционала.

    По технологиям.

    - Управление внешними зависимостями - Carthage.

    - Весь код был документирован, что давало не только возможность использовать Quick Help в Xcode, но и создавать внешнюю документацию с помощью Jazzy.

    - Язык разработки - Swift. Сначала версии 2.2, после - выполнил миграцию кода проекта и задействованных внешних библиотек на 2.3. Переход прошел достаточно плавно, в итоге мы смогли перейти на Xcode 8. Перевод на Swift 3 пока не производился, так как является существенно более сложным и рискованным из-за гораздо большего числа предстоящих изменений и возможных проблем, связанных с этим.

    - Графические интерфейсы преимущественно в Storyboard, позиционирование элементов через Auto Layout.

    - Сетевое взаимодействие. Alamofire для REST-запросов, собственная библиотека для работы с протоколом поверх WebSocket. На бекенде работала связка Elixir + Phoenix, которая общалась с клиентами по WebSocket посредством своего протокола. Сначала были рассмотренны существующие библиотеки под iOS на предмет их подключения, но по итогу анализа они были либо слишком сырыми, либо плохо разработаны в плане оптимизации работы в многопоточном режиме, либо не были слишком гибкими для случаев, если потребуется доработка. Поэтому решено было написать свою, что и было сделано (доступна на моем Гитхабе).

    - Хранение данных. Изначально было два варианта - привычный Core Data или же Realm, который как раз на тот момент выпустил версию 1.0.0. В итоге выбор пал на Realm, о чем не пожалели, потому что очень понравился.

    - Шифрование. На проекте активность по полноценному шифрованию пока в планах, но на будущее была разработана бибилиотека для работы с RSA-алгоритмом: генерация ключей, шифрование/дешифрование, подпись/валидация, получение ключа в виде данных, PEM-строки и т. д. (либа доступна на Гитхабе).

    Для проекта были написаны как вышеупомянутые библиотеки Phoenix и RSA, так и некоторые другие. Они и остальные мои открытые разработки доступны на Гитхабе: https://github.com/valery-bashkatov

  • Самообучение (параллельно с основной работой)
    Москва
    Разработчик под iOS
    Январь 2015 — Июнь 2016 (1 год и 6 месяцев)
    Разработкой под iOS для себя, в качестве интересного мне дела занимаюсь с 2014 году. Сначала это было на уровне чтения технической литературы и статей по теме. Знакомство с возможностями новой для меня системы, средой разработки, языком программирования и в целом подходами. С 2015 года перешел к практике, начал писать всякое разное, разбираться с базовыми вещами и нюансами разработки под iOS и средой Xcode. Чтобы закрепить полученные знания, завел тематический сайт: http://valery.bashkatov.org, который иногда и самому помогает как справочник с выжимкой и ссылками на полезные источники по определенным вещам. На деле в основном использовал возможности SDK для разработки графических интерфейсов (UIKit), анимаций и прочее. Имеются навыки создания графических интерфейсов как в Interface Builder, так и программно, то же и с позиционированием через Autolayout-констреинты. Есть опыт работы с сетевыми технологиями фреймворка Foundation, форматами XML и JSON, технологиям конкурентного программирования (GCD, NSOperationQueue). Знания в части Core Data теоретические. Все свои разработки писал на Swift, с синтаксисом и особенностями Objective-C знаком на уровне понимаю, но не хотелось бы с ним иметь дело все время.
  • Глоубайт Консалтинг
    Москва
    Старший разработчик ETL
    Апрель 2012 — Июнь 2016 (4 года и 3 месяца)
    Участие в разработке одного из крупнейших хранилищ данных в стране для банка ВТБ24. Я вошел в команду проекта в качестве старшего разработчика на ранней стадии, когда в банке было несколько разрозненных мини-хранилищ в разных базах данных, в основном на СУБД Oracle. На первом этапе производился анализ существующих баз данных для выделения сущностей и фильтрации из них необходимых в новом централизованном хранилище. В результате, нужные сущности были перенесены "as is" в хранилище на основе СУБД Teradata. Для создания ETL-процессов был выбран SAS SAS Data Integration Studio. Мое участие заключалось во взаимодействии с командой аналитиков для анализа объектов в базах данных и разборе имеющейся существующей бизнес-логики, а также реализации потоков и процессов загрузки данных. На втором этапе была произведена очистка, оптимизация и перевод в удобоваримый для Teradata формат алгоритмов расчета витрин. Для нужд бизнес-пользователей, по их требованиям и для их задач было создано достаточно большое количество новых витрин различной сложности. Из-за серьезно увеличившегося объема данных было принято решение перевести ETL-процессы измерений и фактов на инкрементальный режим загрузки, с учетом асинхронного прихода данных из различных источников. Переход на инкрементальную загрузку значительно снизил время построения витрин и отчетов, а также нагрузку на систему. Но при этом сложность разработки ETL-процессов кратно увеличилась, даже с учетом написанных для облегчения работ трансформов. Результатом данного этапа было состоявшееся, централизованное хранилище данных. Реализованы ключевые отчеты банка, для внутренних нужд, для правления и отправляемые в ЦБ. Мигрированы данные поглощенного банка ТКБ в хранилище ВТБ24. На данной стадии в мои обязанности входили все работы по созданию, оптимизации и разворачиваю на сервере потоков ETL-процессов. Ревью и консультация младших разработчиков. Участие в выработке общих решений по разработке, выборе способа решения известных проблем. Сейчас хранилище дорабатывается под новые требования заказчиков, по больше части состоящие из новых отчетов. Мое участие во всех этапах по разработке, тестированию и внедрению функционала ETL-процессов.
  • Разработка и внедрение систем электронного обучения, Moodle и других веб-приложений для образования
    Воронеж · От 10 до 100 сотрудников
    Старший разработчик Oracle
    Март 2011 — Апрель 2012 (1 год и 2 месяца)
    Разработка и сопровождение модулей информационной системы для нефтедобывающих компаний. Создание логической и физической структур хранения данных, программирование сложной PL/SQL-логики обработки информации (в том числе со сложными математическими вычислениями), оптимизация и переписывание неэффективных запросов. Разработка аналитических отчетов. Взаимодействие с Java-разработчиками по вопросам эффективной работы с базой данных, помощь в написании SQL-запросов. Обучение новых сотрудников работе с базой данных, участие во внутренних технических семинарах.
  • Газпроектинжиниринг
    Воронеж
    Разработчик Oracle
    Октябрь 2009 — Февраль 2011 (1 год и 5 месяцев)
    Поддержка и доработка системы документооборота Lotsia PDM Plus. Участие во всех шагах процесса создание отчетов по требованиям заказчика: - сбор требований о необходимых данных и способе их отображения - анализ модели базы данных для выборки необходимой информации - написание SQL-запросов, PL/SQL-кода, создание дополнительных объектов в базе (таблиц, представлений, типов и т. д.) - создание графических шаблонов отчетов и кода (VBA) клиентской части. Доработка и оптимизация уже существующих отчетов и форм системы документооборота. Создание плагина (VBA) для выгрузки данных из файлов AutoCAD в систему документооборота.
  • Работа на яркой стороне в отличной компании
    Воронеж · Более 5000 сотрудников
    Администратор биллинга, разработчик Oracle, C#-программист
    Апрель 2008 — Сентябрь 2009 (1 год и 6 месяцев)
    Сопровождение и администрирование биллинга (веб-интерфейсы, "толстый" клиент, база данных) сторонней разработки: общая настройка работы, первичная проверка патчей, локализация ошибок и последующее взаимодействие с разработчиками в плане их исправления, установка обновлений. Создание дополнительного PL/SQL-функционала и объектов базы для автоматизации и упрощения своих задач. Полный цикл создание отчетов в среде Crystal Reports: сбор требований, написание запросов, рисование шаблонов форм. Программирование на C# приложений для автоматизации рутинных задач, выполняемых при обслуживании клиентов компании: поиск информации, формирование договоров и других шаблонных документов.

Высшее образование

  • ВГУ

    Воронежский государственный университет
    Воронеж · 732 выпускника
    Математический
    Сентябрь 2003 — Август 2009 (5 лет и 11 месяцев)