Мобильная разработка в СберТехе: разговор на бегу

в 9:40, , рубрики: мобильная разработка, Программирование, работа в сбертехе, разработка в банке, разработка мобильных приложений

Мобильная разработка в СберТехе: разговор на бегу / Хабрахабр

@font-face{font-family:'Fira Sans';font-style:normal;font-weight:400;src:url(/fonts/0/FiraSans/hg-FiraSans-Regular.eot);src:local("Fira Sans"),local("FiraSans-Regular"),url(/fonts/0/FiraSans/hg-FiraSans-Regular.eot?#iefix) format("embedded-opentype"),url(/fonts/0/FiraSans/hg-FiraSans-Regular.woff2) format("woff2"),url(/fonts/0/FiraSans/hg-FiraSans-Regular.woff) format("woff"),url(/fonts/0/FiraSans/hg-FiraSans-Regular.ttf) format("truetype")}@font-face{font-family:'Fira Sans';font-style:normal;font-weight:500;src:url(/fonts/0/FiraSans/hg-FiraSans-Medium.eot);src:local("Fira Sans Medium"),local("FiraSans-Medium"),url(/fonts/0/FiraSans/hg-FiraSans-Medium.eot?#iefix) format("embedded-opentype"),url(/fonts/0/FiraSans/hg-FiraSans-Medium.woff2) format("woff2"),url(/fonts/0/FiraSans/hg-FiraSans-Medium.woff) format("woff"),url(/fonts/0/FiraSans/hg-FiraSans-Medium.ttf) format("truetype")}

(function(){'use strict';var f,g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0](),g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b,a)},function(a){r(b,a)})}catch(c){r(b,c)}}var p=2;function t(a){return new n(function(b,c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a,b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b,function(b){c||q(a,b);c=!0},function(b){c||r(a,b);c=!0});return}}catch(e){c||r(a,e);return}a.a=0;a.b=b;v(a)}}
function r(a,b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift(),c=b[0],d=b[1],e=b[2],b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0,a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0,a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0,a)};n.prototype.c=function(a,b){var c=this;return new n(function(d,e){c.f.push([a,b,d,e]);v(c)})};
function w(a){return new n(function(b,c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0,h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k),c)})}function x(a){return new n(function(b,c){for(var d=0;d=y?b():document.fonts.load(I(c,'"'+c.family+'"'),k).then(function(c){1parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==t&&g==t&&h==t||f==u&&g==u&&h==u||f==v&&g==v&&h==v)),b=!b;b&&(null!==d.parentNode&&d.parentNode.removeChild(d),clearTimeout(G),a(c))}function F(){if((new Date).getTime()-E>=y)null!==d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||
void 0===a)f=e.a.offsetWidth,g=n.a.offsetWidth,h=p.a.offsetWidth,r();G=setTimeout(F,50)}}var e=new q(k),n=new q(k),p=new q(k),f=-1,g=-1,h=-1,t=-1,u=-1,v=-1,d=document.createElement("div"),G=0;d.dir="ltr";w(e,I(c,"sans-serif"));w(n,I(c,"serif"));w(p,I(c,"monospace"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);t=e.a.offsetWidth;u=n.a.offsetWidth;v=p.a.offsetWidth;F();z(e,function(a){f=a;r()});w(e,I(c,'"'+c.family+'",sans-serif'));z(n,function(a){g=a;r()});
w(n,I(c,'"'+c.family+'",serif'));z(p,function(a){h=a;r()});w(p,I(c,'"'+c.family+'",monospace'))})})};"undefined"!==typeof module?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}());

(function( w ){
if( w.document.documentElement.className.indexOf( "fonts-loaded" ) > -1 ){ return; }

var html = document.documentElement;
var FS400 = new w.FontFaceObserver("Fira Sans", { weight: 400 });
var FS500 = new w.FontFaceObserver("Fira Sans", { weight: 500 });

Promise.all([ FS400.check, FS500.check ]).then(function() {
html.classList.add('fonts-loaded');
sessionStorage.fontsLoaded = true;
console.log('fonts-loaded');
}).catch(function () {
sessionStorage.fontsLoaded = false;
console.log('fonts-unloaded');
});

if (sessionStorage.fontsLoaded) {
html.classList.add('fonts-loaded');
}
}(this));

if (typeof adriver == 'undefined'){ var adb1 = 'yes';}

var user_type = 'guest';

var page_type = "publish_corp";

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-726094-1', 'auto');
ga('create', 'UA-726094-24', 'auto', {'name': 'HGM'});

ga('require', 'displayfeatures');
ga('set', 'dimension1', user_type); // user type - guest/readonly/habrauser

ga('set', 'dimension4', adb1);

ga('set', 'dimension5', page_type);

(function() {
var win = window;
var removeUtms = function(){
var location = win.location;
if (location.search.indexOf('utm_') != -1 && history.replaceState) {
history.replaceState({}, '', window.location.toString().replace(/(&|?)utm([_a-z0-9=]+)/g, ""));
}
};
ga('send', 'pageview', { 'hitCallback': removeUtms });
})();

ga('HGM.set', 'dimension1', user_type);
ga('HGM.set', 'dimension2', "habrahabr");
ga('HGM.send', 'pageview');

var adcm_config ={
id:1034,
platformId: 34,

tags: ['hub_mobile_dev', 'hub_programming', 'g_programming', 'g_mobile_os'],
init: function () {
window.adcm.call();
}
};

Мобильные приложения банков есть практически во всех смартфонах - пользователям удобно управлять счетами и платежами, переводить деньги в пару касаний, иметь личный кабинет всегда рядом. Разработчики и дизайнеры мобильный приложений любят свою работу и знают толк в использовании современных технологий.
Однако в ИТ-среде упорно продолжают транслироваться мифы о работе в банках. Мы поговорили с мобильными разработчиками СберТеха - буквально на бегу они ответили на главные вопросы и даже позвали присоединиться к их команде.

Мобильная разработка в СберТехе: разговор на бегу - 1

ДЕНИС ВОЛОШИН
главный инженер в отделе мобильных приложений
(Департамент развития фронтальных систем и электронных каналов обслуживания)

— Чем занимаетесь в компании?

В СберТехе я занимаюсь мобильными разработками под платформу 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 проектах всегда приветствуется, но не является обязательным критерием отбора.

Но главное для ИТ-специалиста - постоянно развиваться, изучать новые подходы, библиотеки, средства, потому что прогресс не стоит на месте.

Мобильная разработка в СберТехе: разговор на бегу - 2

АЛЕКСАНДР АПРИАМАШВИЛИ
руководитель разработки в отделе мобильных приложений (Департамент развития фронтальных систем и электронных каналов обслуживания)

— Чем занимаетесь в СберТехе?

Я руковожу разработкой iOS приложений в рамках двух очень интересных проектов: Мобильный Банк Европа и Сбербанк для Инвесторов. Заботимся о том, чтобы пользователям было приятно и удобно работать с нашими приложениями.

Сейчас мы активно работаем над приложением для инвесторов Сбербанка, в котором полностью меняем UI и улучшаем UX, поэтому плотно взаимодействуем с нашей UI/UX командой. Конечно же, мы не забываем о качестве наших продуктов, поэтому до отправки приложения в релиз проводим циклы тестирования и багфиксинга. В этом нам помогает команда QA. Надеемся, что наша работа будет по достоинству оценена пользователями в AppStore.

— Какие задачи решаете?

  • Управление командой iOS разработчиков
  • Взаимодействие с другими командами, участвующими в процессе разработки (аналитики, QA, UI/UX)
  • Составление и распределение задач по участникам команды, контроль их исполнения
  • Принятие архитектурных решений для реализации задач по iOS приложениям


— Есть ли какие-то отличия в работе с 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 проектах? Или, может быть, бэкграунд экономиста?

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

Даже если у него не очень много опыта, но при этом он готов обучаться и совершенствоваться в профессии, - такому тут всегда будут рады.

Комментарии (2)

  • 22 февраля 2017 в 13:10

    (комментарий был изменён)



    +1

    Слышал, что в СберТехе ужасная бюрократия. Бывшему коллеге выдавали компьютер 2 недели, он в это время читал книги. Будьте готовы, если что

  • 22 февраля 2017 в 13:42



    0

    Главный инженер в отделе мобильных приложений. (Департамент развития фронтальных систем и электронных каналов обслуживания)

    При этом аджайл вокруг, быстрота коммуникации и пр. )

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

$(document).ready( function(){
window.tmidLogin = function(){ return false; };
if( $.cookie('tmid_no_check') === undefined ) {
var expire = new Date();
expire.setMinutes(expire.getMinutes() + 10 );
$.cookie('tmid_no_check', 1, { expires: expire } );
$.getScript("https://id.tmtm.ru/checklogin/", function(){
if( window.tmidLogin() ) {
var href = $('#login').attr('href');
if( href !== undefined ) {
window.location.href = href;
}
}
});
}
});

// global vars
var g_base_url = 'habrahabr.ru';
var g_show_xpanel = false;
var g_base_fullurl = 'https://habrahabr.ru/';
var g_is_guest = false;

var _paq = _paq || [];
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//stats.tmtm.ru/";
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['setSiteId', '5']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
})();

Мобильная разработка в СберТехе: разговор на бегу - 5

gascrolldepth.init({
percentage: true,
PiwikGoal: true,
PiwikGoal20: 3,
PiwikGoal50: 15,
PiwikGoal70: 17,
PiwikGoal90: 19,
PiwikGoal100: 20
});

(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
if (typeof (_yaparams) != 'undefined') {
w.yaCounter24049213 = new Ya.Metrika({id:24049213,
webvisor:true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
params:_yaparams});
} else {
w.yaCounter24049213 = new Ya.Metrika({id:24049213,
webvisor:true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true});
}

} catch(e) { }
});

var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";

if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");

Мобильная разработка в СберТехе: разговор на бегу - 6

function checkHeaderPos(){
var topToHubs = $('.megapost-cover').offset().top + $('.megapost-cover').outerHeight();
var sT = $(this).scrollTop();
if (sT > topToHubs) {
$('.t199__js__header, .t199_js__header').fadeIn();
} else {
$('.t199__js__header, .t199_js__header').fadeOut();
}
}

$(window).on('scroll', function() {
checkHeaderPos();
});

function drawguides(){
if($("#guides").length)$("#guides").remove();

$("body").append('

');

var g=$('#guides');
var ww=$(window).width();

var offset_left=parseInt((ww-1200)/2);
var col_space=20;
var col_width=100;

if(ww=960){
for(i=0;i<13;i++){
var x1=(i*col_width)+offset_left-col_space;
var x2=(i*col_width)+offset_left+col_space;
var n=i+1;
if(i!=0)g.append('

');
if(i!=12)g.append('

');
if(i!=12)g.append('

'+n+'

');
}
}

if(ww<960){
var x=parseInt(ww/2);
g.append('

');
}

var doit;
$(window).resize(function() {
if($("#guides").length){
clearTimeout(doit);
doit = setTimeout(drawguides, 300);
}
});
}

function showguides(){
if($("#guides").length){
$("#guides").remove();
$("#guidesmenubutton").css("display","none");
}else{
drawguides();
$("#guidesmenubutton").css("display","block");
}
}

Автор:

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js