- Мобильная разработка в СберТехе: разговор на бегу
- Java Developer: от Hello World до собственного клиент-серверного приложения
- Длительность
- Уровень
- 1 поток – набор закрыт
- 2 поток – набор закрыт
- 3 поток – набор закрыт
- Стоимость участия:
- Обучение на программе состоит из двух частей:
- В рамках программы вы познакомитесь с:
- Программа переподготовки подойдет:
- Цель программы
- Актуальность
Мобильная разработка в СберТехе: разговор на бегу
— Чем занимаетесь в компании?
В СберТехе я занимаюсь мобильными разработками под платформу Android. Полтора года принимаю участие в создании двух приложений: Мобильный Банк Европа и Sberbank IR. Назначение первого приложения будет понятно тем, кто пользуется приложением Сбербанк Онлайн. А Sberbank IR — это приложение для инвесторов.
За время работы в компании пришлось столкнуться со многими техническими задачами. Пожалуй, самые интересные из них — внедрение архитектуры Clean Architecture и технологии RxJava в обоих проектах, а также работа с code review и мотивирование команды применять его на практике. Например, архитектура Clean Architecture подразумевает разделение приложения на слои, что удобно при масштабировании и тестировании приложения. А технология RxJava удобна при работе с многопоточностью и при обработке последовательностей событий.
— Какое рабочее окружение используете? Фреймворки, другие сторонние продукты?
На работе — Windows 10, а дома — Ubuntu. В среде разработки мы используем Android Studio и Intellij idea. В code review используем инструмент Upsource от JetBrains.
— Какую профессиональную литературу вы бы могли порекомендовать?
Могу порекомендовать «Чистый код» Роберта Мартина и «Совершенный код» Стива Макконнелла: каждый программист должен прочитать эти книги, осознать и применять в работе эти принципы. По алгоритмам посоветую «Алгоритмы. Построение и анализ» Томаса Кормена, в изучении Java и Android поможет официальная документация. Кроме чтения литературы также советую проходить курсы Coursera и Udacity.
— Есть ли какие-то отличия в работе с IT банка и обычного коммерческого разработчика ПО?
Компанию прежде всего отличает предметная область — банковская, финансовая. Тонкости этой предметной области осваиваются уже походу участия в проектах. В штате компании есть много аналитиков, которые более глубоко владеют знаниями в области финансов и всегда готовы подсказать и научить, так что освоение материала происходит довольно быстро. А вот с точки зрения разработки особых различий я не вижу.
— Банковское ПО, а тем более мобильное приложение, неразрывно связано с вопросами безопасности, скоростью и высоконагруженными системами. Как решаются подобные задачи? Насколько интересно работать именно над этими тремя аспектами?
Высокие нагрузки и скорость — это скорее вопрос к серверным разработчикам. Я разрабатываю клиентское приложение. Но вот безопасность мобильного, особенно банковского приложения, — это действительно очень важно. Конечно, мы очень серьезно прорабатываем этот вопрос. Например, в Android-приложении мобильного банка для Европы встроено решение от Лаборатории Касперского.
— Много legacy-кода, старые языки программирования, трудная поддержка проектов — это о разработке в СберТехе или всего лишь миф о банковском IT?
Многое зависит от проектов. Те проекты, с которыми мне приходилось работать, содержали широко используемые и поддерживаемые языки программирования, библиотеки и код. Например, основной язык программирования – это Java. Для тестирования используются JUnit и Mockito. Используется RxJava.
— Каким должен быть специалист, чтобы стать сотрудником СбеТеха? Что у него должно быть за плечами: красный диплом, научная работа, сотни коммитов в open source проектах? Или, может быть, бэкграунд экономиста?
Если это разработчик, то он должен хотеть и любить программировать. Очень важна базовая подготовка по алгоритмам и структурам данных, по языку программирования, на котором он собирается разрабатывать, и по конкретной платформе. Если такие навыки есть, но нет опыта работы в реальном проекте, то специалист, в том числе и выпускник вуза, может претендовать на позицию младшего разработчика. Участие в open-source проектах всегда приветствуется, но не является обязательным критерием отбора.
Но главное для ИТ-специалиста — постоянно развиваться, изучать новые подходы, библиотеки, средства, потому что прогресс не стоит на месте.
— Чем занимаетесь в СберТехе?
Я руковожу разработкой iOS приложений в рамках двух очень интересных проектов: Мобильный Банк Европа и Сбербанк для Инвесторов. Заботимся о том, чтобы пользователям было приятно и удобно работать с нашими приложениями.
Сейчас мы активно работаем над приложением для инвесторов Сбербанка, в котором полностью меняем UI и улучшаем UX, поэтому плотно взаимодействуем с нашей UI/UX командой. Конечно же, мы не забываем о качестве наших продуктов, поэтому до отправки приложения в релиз проводим циклы тестирования и багфиксинга. В этом нам помогает команда QA. Надеемся, что наша работа будет по достоинству оценена пользователями в AppStore.
— Какие задачи решаете?
- Управление командой iOS разработчиков
Взаимодействие с другими командами, участвующими в процессе разработки (аналитики, QA, UI/UX)
Составление и распределение задач по участникам команды, контроль их исполнения
— Есть ли какие-то отличия в работе с IT банка и обычного коммерческого разработчика ПО?
Я не вижу принципиальных различий. Можно отметить только незначительные особенности процессов и ПО, которые используются для ведения жизненного цикла проекта. Но это связано с тем, что нашим основным заказчиком является банк, потому процессы максимально синхронизированы.
В нашей компании есть множество приятных бонусов, которые выгодно выделяют СберТех на фоне других. Например, отличный офис и удобная локация, возможность персонализировать время работы, отличный социальный пакет и отсутствие строгого дресс-кода (последнее меня приятно удивило при устройстве на работу).
У нас нет проблем с ПО и техникой: мы работаем на последних конфигурациях «железа» и лучшем софте. Одним словом, все сделано так, чтобы работать было приятно и комфортно.
Внутри компании постоянно проводятся мероприятия, направленные на расширение кругозора сотрудников, причем принять участие в них может любой желающий: будь то разработчик, аналитик или менеджер.
Самое главное — все наши проекты направлены на удовлетворение технологических нужд Сбербанка и его клиентов, поэтому мы работаем над действительно интересными проектами.
— Банковское ПО, а тем более мобильное приложение, неразрывно связано с вопросами безопасности, скоростью и высоконагруженными системами. Как решаются подобные задачи? Насколько интересно работать именно над этими тремя аспектами?
Именно вопрос безопасности мобильных приложений волновал меня при трудоустройстве в СберТех. А два других аспекта не очень коррелируют с разработкой мобильного приложения.
Безопасность мобильного приложения – это, в первую очередь, исключение потенциально опасных ситуаций, когда пользователь может потерять конфиденциальные данные или, сам того не подозревая, попасть на уловку мошенников.
Так, в одном из проектов нам пришлось попрощаться с поддержкой кастомных клавиатур (Custom Keyboard Extensions) и появившимся в iOS 9 SFSafariViewController, который позволяет просмотреть веб-станицу, не покидая приложения. К сожалению, данные возможности могли бы привести к потере данных или фишингу.
Также мобильное приложение, как и любой клиент, должно выполнять некоторые функции «щита» для сервера. Ведь поломка клиента не так печальна, как попадание вредоносных данных или кода на сервер. Мы написали замечательный валидационный модуль, который проверяет переданное значение на запрещенные символы и попытку SQL-injection. Мы произвели некоторую магию с сертификатами, так что, можно считать, что мы защищены от MITM-атак. Конечно же, все это было бы бессмысленно без реализации проверки устройства на JailBreak. Кстати, именно в СберТехе я узнал много нового о том, как можно обезопасить мобильное приложение.
— Много legacy-кода, старые языки программирования, трудная поддержка проектов — это о разработке в Сбертехе или всего лишь миф о банковском IT?
В контексте мобильной разработки это скорее миф. Конечно, легаси-код присутствует, но он либо поддерживается и актуализируется, либо пишется новый поддерживаемый и тестируемый код. На текущем проекте мы пишем на Swift 3.0.
— Какое рабочее окружение используете? Фреймворки, другие сторонние продукты?
Наша команда использует XCode, так как это нативная и понятная для любого iOS разработчика среда. Мы стараемся по минимуму использовать фреймворки и сторонние библиотеки: лучше ведь переиспользовать свой код. Правда, очень важно, чтобы было что переиспользовать.
Наиболее известные сторонние библиотеки, которые мы применяем в приложениях — RestKit и Alamofire/AFNetworking. Мы также обращаемся к библиотекам наших подрядчиков, если необходимо производить интеграцию с какой либо АС этого подрядчика.
— Какую профессиональную литературу вы бы могли порекомендовать?
Лично мне кажется, что книги успевают устареть еще до их выхода, поэтому советую начинающим разработчикам изучать разработку под iOS по лекциям Paul Hegarty из Stanford University, которые можно найти в iTunes U. Всю остальную информацию советую черпать из официальной документации Apple. Там можно получить самые актуальные данные по последнему iOS SDK.
— Каким должен быть специалист, чтобы стать сотрудником СберТеха? Что у него должно быть за плечами: красный диплом, научная работа, сотни коммитов в open source проектах? Или, может быть, бэкграунд экономиста?
На мой взгляд, наличие обширного портфолио, красного диплома или научной работы необязательно. Человек должен быть целеустремленным, трудолюбивым и сообразительным. Для нас главное то, как он ведет себя в коллективе, как работает, его образ мышления.
Даже если у него не очень много опыта, но при этом он готов обучаться и совершенствоваться в профессии, — такому тут всегда будут рады.
Источник
Java Developer:
от Hello World до собственного клиент-серверного приложения
Длительность
Уровень
1 поток – набор закрыт
2 поток – набор закрыт
3 поток – набор закрыт
Стоимость участия:
49 500 рублей при участии в проекте «Цифровые профессии»
(99 000 стоимость без участия)
Сегодня Java-технологии – основа успеха всех крупных преуспевающих ИТ-компаний, которые видят себя лидерами будущего. Чтобы создать сложную банковскую систему, написать сервис для поиска авиабилетов или прослушивания музыки, работать с системами для обработки больших объемов данных, которые приносят пользу всему человечеству и бизнесу, необходимы специалисты Java Developеr!
Обучение на программе состоит из двух частей:
- одномесячный онлайн-интенсив из электронных курсов, на котором вы осваиваете базовые навыки программирования и работы с данными с поддержкой от специалистов СберУниверситета;
- трехмесячное обучение в формате вебинаров под руководством высококлассных преподавателей-разработчиков, интересными домашними заданиями, персонализированной обратной связью, реальными командными и личными проектами!
В рамках программы вы познакомитесь с:
- различными структурами данных в Java и деталями их реализации на практике,
- основами языка программирования Java, его синтаксисом, концепциями объектно-ориентированного программирования,
- обработкой данных на языке SQL,
- подключением к БД из кода приложения несколькими способами (JDBC, Hibernate, Spring Data),
- сервером приложений Tomcat,
- популярным фреймворком Spring (IoC, Dependency injection, Spring Security, Spring Data),
- шаблонами проектирования,
- декомпозицией задачи на подзадачи,
- GitFlow и Codereview.
Программа переподготовки подойдет:
- желающим начать свой путь в ИТ: мы дадим нужные знания и умения по Java-технологиям, чтобы вы смогли сделать первые шаги навстречу карьере мечты;
- программистам и ИТ-специалистам, желающем переквалифицироваться на Java-разработчика.
На программе вы научитесь работать с одними из самых востребованных в Java-разработке инструментами и технологиями: Intellij IDEA, Apache Maven, Gradle, Git, JDBC, Spring, Apache Kafka.
Вебинары проходят 2 раза в неделю вечером в нерабочее время, поэтому обучение легко совмещать с работой. Мы не набираем больших групп, чтобы каждый слушатель мог получить ответы свои вопросы во время занятий, личную обратную связь на домашние задания и проекты!
Вы будете работать над выпускным проектом, для которого есть два варианта выбора темы:
- взять тему, заранее подготовленную преподавателями;
- согласовать собственную тему, например, связанную с работой слушателя.
Реализовать выпускной проект можно как лично, так и в команде, например:
- систему управления обучением (Education Management System);
- систему управления функциями (FaaSj);
- электронный магазин (e-shop).
Функционал выпускного проекта:
- Основная серверная часть, база данных, сервисы-заглушки для эмуляции взаимодействия с другими системами.
- Логирование сервисов, unit-тесты, документирование кода.
- Cинхронное взаимодействие осуществляется через REST.
- Асинхронное взаимодействие осуществляется через Apache Kafka.
- Взаимодействие с базой данных через Spring Data.
Цель программы
Получить компетенции, связанные с формализацией и алгоритмизацией поставленных задач, написанием программного кода с использованием языка программирования Java, языка определения и манипулирования данными SQL, оформлением программного кода в соответствии с установленными требованиями, работа с системой контроля версий Git, проверкой и отладкой программного кода на Java, необходимые для старта карьеры в сфере Java Development.
Актуальность
На программе вас ждет множество практической работы, каждый вебинар будет сопровождаться домашним заданием. Курировать программу будет опытный преподаватель, действующий Java-разработчик Сбербанка. Программа завершится командным проектом, в процессе которого вы получите реальный опыт разработки микросервисного приложения в команде вместе c GitFlow, Codereview. В целом, вы познакомитесь с востребованным языком программирования Java, поэтому программу можно использовать как отправную точку в освоении других объектно- ориентированных языков.
Решение задач по темам:
- Разработка простых Java-программ
- Типы данных и арифметические выражения
- Структуры выбора
- Математические функции, символы и строки
- Циклы
- Методы
- Одномерные массивы
- Многомерные массивы
- Рекурсия
Решение задач по темам:
- Объекты и классы
- Объектно-ориентированное мышление
- Наследование и полиморфизм
Решение задач по темам:
- Язык манипуляции данными в MS SQL (SQL DML)
- Новое в стандарте и реализациях языка SQL
- Типы данных
- Продвинутые задачи по типам данных
- Язык определения данных в MS SQL (SQL DDL)
- Вопросы оптимизации
Инструменты разработки, Quality Assurance, IO, Исключение в Java, Вложенные классы, Обобщенное программирование, Java Time API, Сериализация, Функциональное программирование, NIO
Инструменты разработки, Quality Assurance, IO, Исключение в Java, Вложенные классы, Обобщенное программирование, Java Time API, Сериализация, Функциональное программирование, NIO
Реляционные БД в Java, Потоки Java, Executors, WebServer на Java, Основы Front-End, Сервлеты, Servlet API, Spring Framework, Spring Framework, Spring MVC, Spring Boot, Spring AOP, ORM
Реляционные БД в Java, Потоки Java, Executors, WebServer на Java, Основы Front-End, Сервлеты, Servlet API, Spring Framework, Spring Framework, Spring MVC, Spring Boot, Spring AOP, ORM
Spring Security, Spring Data JPA, Message System, Базовые понятия архитектуры ООП, Шаблоны проектирования, Основные шаблоны
Spring Security, Spring Data JPA, Message System, Базовые понятия архитектуры ООП, Шаблоны проектирования, Основные шаблоны
Источник