Максим Тураев

Максим Тураев

Неделя
Sep 7, 2020 → Sep 13, 2020
Темы

Архив недели

Понедельник


Всем привет! Меня зовут Максим. Я андроид разработчик. Являюсь частью большой команды, приложения Сбербанк Онлайн.

Когда менял данные в профиле с удивлением обнаружил классный сайт, где можно удобно читать прошлые треды. Он был в профиле xD На случай, если я такой не один: mobileunderhood.ru Темы недели напишу чуть позже

Темы придумал вот такие: Как я стал Android разработчиком и вот это все Личный рост и развитие. Расскажу про любимые видосы, книжки итд Тулзы и фишки которые я использую при работе Расскажу как там в Сбере Про процессы? 6/7) Рандом

Начал писать свою историю в разработке и чет она длинная получается =) а я боялся что у меня будет мало твитов.

Программистом стать я хотел еще со школы. Но после того как завалил математику на внутреннем экзамене на ВМК, получилось, что я физик. Можно было бы пойти на ФКН в Воронеже, но я думал что общага в Москве это слишком круто, и что физика тоже может быть связана с программированием

В универе я занимался я программированием FPGA и делал прошивку для “супер точного секундомера”. Кстати у нас даже был курс по нейросетям, возможно выбор этого направления был бы более прагматичным ходом.
notion image

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

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

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

Решил попробовать себя в маркетинге/web аналитике, начал активно читать книги. Помню прочитал Огилви “О рекламе”, какую-то книгу хопкинса, начал Web Analytics 2.0, тут-то и произошел поворот.
notion image

В группе ВК с бесплатными билеты в театр для студентов, появился пост, мол нужен чел разбирающийся с железками для работы в студии мобильной разработки. Нужно было проанализировать рынок и определить можно ли сделать навигацию внутри помещения на основе BLE и если да, то как?

У меня как раз появилось время для частичной занятости и я согласился. Лазил по SciHub/google и искал статейки по теме. Довольно быстро определил что сами мы такую штуку не запилим и надо брать что-то готовое, сделал отчетик.

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

В этот момент мои планы стать аналитиком или маркетологом ушли на второй план и крейсер взял курс на developers.android.com До сих пор интересно чтобы со мной было если бы не эти события. Денис оказался отличным наставником) и я понял что android top

После этого стартапа попал в Альфа Банк, где учился самостоятельности. Делал небольшие приложухи для внутренних пользователей. У нас был свой магазин корпоративных приложений. В сбере кстати такой же сделали, но Альфа была первой =)

Приложил руку к YotaReader, адаптация FBReader к yotaphone. Из интересного, FbReader работает наверное сразу в пяти процессах О_о. Для дебага это не удобно. Да и вообще код раньше казался весьма запутанным github.com/geometer/FBRea…

Стартап Medical Note c модными в то время Мокси, Котлин, RxJava. Слава богу без Realm.

И вот наконец Сбербанк, уже третий год. Такая вот история получается.

Вторник


Поддерживать себя в форме стараюсь походами на конференции, чтением книг по программированию и просмотром записей с конференций.

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

Классный доклад про текст в андройде. Очень практичный. youtu.be/x-FcOX6ErdI

Наверное лучший доклад с Google IO 2018 и лучший доклад про управление памятью в android. Очень интересно подробно и понятно рассказано как android действует с памятью, и как ее измерять.youtu.be/w7K0jio8afM

На основе этого видоса можно провести опрос. Какой процесс будет первым уничтожен системой с помощью low memory killer?

В 2019 тоже про текст рассказывали, но мене понятно и мене полезно как мне показалось. Там было про несколько шрифтов в одной textview и другие нововведения. Но 2018ого года видос круче. youtu.be/fpSfCvP36aA

Всего посмотрели уже 48 видосов за пару лет. Если бы не коронавирус, то было бы больше. Сначала смотрели офлайн, потом перешли на онлайн. Онлайн на много круче оказалось. =) Смотрим небольшой кусок минут 5-10 потом его обсуждаем.

Пара известных докладов про ускорение сборки в контексте связанности модулей. youtu.be/FMiFtsew2UY youtu.be/pMEAD6jjbaI

Как ускорить интернет. Очень интересный доклад от Одноклассников. Еще недавно на мобиусе был классный доклад про профилирование в проде от них. youtu.be/0xKAR0AHIdY

Here it is, look at this comparison between @Gradle and @bazelbuild I was reviewing the draft and defending Bazel as much as I could, I think it's time for Bazel folks to step up the game now :) Super happy for Gradle achieving these impressive results blog.gradle.org/gradle-vs-baze… twitter.com/artem_zin/stat…
Артем Зиннатуллин — Android builds at Lyft Только нужно помнить что выводы из доклада gradle уже исправили. "If you ask me if you should use Gradle or Bazel for a new JVM/Android project, 9/10 I'd say use Gradle" twitter.com/artem_zin/stat… youtu.be/Wd91Y8sRs2k

Шикарный доклад про инсеты с AppsConf youtu.be/6Djql74drwk

Magic of ADB (droidcon San Francisco 2019)Классно про ADB и про устройство android в целом. droidcon.com/media-detail?v…

И последний доклад из тех, что очень понравились: Обучаемся использовать LeakCanary youtu.be/kHHOhPPRytc

Такс, видосами я вас успешно заспамил, теперь мне будет посложнее. Для тех кто не изучал прогу в универе, вот вам сайт с патернами. Это тот же GOF, но в электронном виде и с картинками. И еще вместо smalltalk здесь есть и java и js. Сайт просто супер. refactoring.guru/ru/design-patt…

Кстати, что вы рекомендуете новичкам в Android, или людям которые не прошли у вас собес? Лично я обычно рекомендую Effective Java - это просто лучшая книга. И курс на Udacity от Google. Мне кажется этого набора достаточно чтобы пройти половину android собесов на мидла.

Еще слушаю подкасты по android разработке AndroidDev/Backstage и Fragmented. Но последнее время чет пропускаю. Еще я собираю классы в stackoverflow, уже почти 3к. А вы отвечаете на вопросы в stackoverflow?

Среда


Как это ни странно из доклада выходит что первым прибьется лончер. Хотя кажется что должен первым прибиться процесс с сервисом. Но я не проверял =)

Несколько лайфхаков. Скорее всего бояны, но да ладно. Linux или Mac собирают заметно быстрее чем Windows

Design tools. Полезная приложуха. Можете показать дизайнеру, он скорее всего про нее не знает. play.google.com/store/apps/det…

Хорошую документацию к библиотеке можно найти в тестах (например тесты regexpa в котлине). Такие тесты есть во всех популярных библиотеках и языках. Все знают, что тесты есть, но иногда не задумываются, что это классная документация. github.com/JetBrains/kotl…

Утренний рефакторинг в понедельник. Заведите привычку каждый понедельник утром делать ваш проект чуть лучше. Комит повышает настроение и кодовая база обновляется.

Чтобы ускорить билд, сделайте devBuild свойство и спрячьте под него все ненужные при разработке плагины и библиотеки с so файлами. Оставьте один флейвор, и уберите debug build variant, если не используете его в модуле.

Самый полезный для меня инструмент при работе это fbflipper.com Если не используете сами, как минимум стоит показать его вашему дизайнеру и QA Можно легко добавить свой кастомный плагин. Facebook оперативно помогают в issues в случае проблем.

Тестировщику не придется запускать AS чтобы посмотреть логи, ждать синк итд.
notion image

Дизайнер сможет посмотреть влезает ли его текст в кнопку. Или еще что-нибудь поменять.
notion image

Еще можно смотреть базу, шаред префы. Про network inspector в студии я вообще молчу. Лагает и очень спорный интерфейс.

Четверг


Расскажу немного про сбербанк. Во первых сбербанк во всю строит себе новые здания. План видимо собрать основную часть сотрудников вместе. Внутри офисы классные.
notion image

А как вы считаете, что лучше для большой компании, несколько зданий в разных частях города или одно но большое?

Удаленная работа у нас тоже есть. Около половины команды работает из дома. Есть ребята и из других городов. Так что офис не отменяет распределенную команду. Компания постепенно адаптируется к новому миру.

Раньше мы проводили встречи offline first. Большая часть команды в переговорке и ребята из других локаций по видео связи. Теперь перешли на режим, когда все онлайн. Даже из офиса. Так все в равных условиях, что на мой взгляд очень полезно.

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

Фичевые команды имеют от 0 мобильных разработчиков. Я сейчас в платформенной команде и у нас около 10 андроид разработчиков, PO тоже разработчик. Очень интересный опыт, когда на дейли вся команда понимает, что ты говоришь. В фичевой может быть наоборот.

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

А еще, у нас есть своя "Прямая Линия" =) sberbanktv.ru/search?video=Y…

Когда я, как аутстаф сотрудник пришел в команду, которая ни когда не работала с мобильным приложением, было долгое ожидание различных учеток. Помню за это время дочитал effective java и еще что-то полезное.

С тех пор это изменилось, сейчас процесс адаптации даже включает в себя прохождение "буткемпа", где рассказывается про различные банковские системы. В том числе развивается часть про сбербанк онлайн. eurokoncept.ru/project16.html

С развитием в сбербанке все хоршо. Желающим оплачиваются конференции, я проходил платный курс от Elastic "Data Analysis with Kibana". А еще как я уже говорил, мы смотрим и обсуждаем записи с разных коференций. Так что общаемся не только на code review.

@alekssamos Попробую завтра узнать. Этим отдельная команде занимается. И есть некие гайды, которые нужно соблюдать фичевым командам.
Попросили поднять тему accessibility. Завтра сюда напишу, как это у нас устроено. Я даже как-то пробывал использовать телефон с помощью наушников, довольно сложно. А вы пробывали работать с телефоном с помощью звука? twitter.com/mobileunderhoo…

Как видите, я тут со зрением с твиттером совладать не могу... Интерфейсам есть куда развиватсья, или мне =) Еще раз опрос. А вы пробывали работать с телефоном с помощью звука?

@mobileunderhood Я понимаю, что это не в вашей компетенции, ну пожалуйста, попробуйте как-нибудь повлиять на другие российские компании, например, mail ru или Яндекс. Потому что там с доступностью все плохо и они это игнорируют.
Еще одна ссылка на твит, про то, что нужно помнить про доступность вашего приложения. twitter.com/alekssamos/sta…

Пятница


В Сбербанке доступностью приложения занимается отдельная команда. Команда в том числе проводит регресс тестирование talkback функционала. Поддерживает UX/UI руководство по доступности для незрячих. В серии твитов я его опубликую.

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

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

Все значимые, то есть несущие смысловую нагрузку для пользователя элементы, должны быть доступны для фокусировки скринридера и озвучены корректно - то есть передавая смысл. Пример: диаграмма ("бублик") распределения расходов: "33% кафе и рестораны, 9% красота и здоровье..."

2.1 Если элемент нажимаемый, то, помимо названия, должен быть озвучен тип элемента - кнопка, ссылка, поле ввода..., и его статус (при наличии). Пример: "Продолжить [кнопка, недоступно]", если кнопка "серая", "Согласен с условиями [Флажок, не отмечено]"

Правила именования элементов: 3.1 Максимально коротко, но не в ущерб смыслу 3.2 Если элемент содержит текст, то в озвучку должен попасть только этот текст – не нужно делать отдельные пояснения для незрячих;

3.3 Не использовать глаголы в повелительном наклонении, вроде “Перейдите”, “Откройте”, и так далее 3.4 Не использовать обороты, типа “Нажмите, чтобы…”

Примеры: "ic 24 xmark [кнопка]" - плохо, "Закрыть уведомление [кнопка]" – хорошо; “Перейдите в ваш профиль [Кнопка]” – плохо, “Профиль [Кнопка]” – хорошо; “Откройте новую карту [Кнопка]” – плохо, “Открыть новую карту[Кнопка]” – хорошо;

Кнопки 4.1 Обычная кнопка без состояний. Доступна всегда. Скринридер должен озвучивать её понятное пользователю "название" - текст кнопки, и тип элемента - кнопка. Пример: "Меню, [кнопка]"

4.2 Кнопка с состоянием "Доступна/Недоступна": а) Если кнопку нельзя нажать из-за отсутствия каких-то данных, то скринридер должен озвучить её текст, тип элемента и состояние. Пример: "Продолжить, [кнопка, недоступно]" в случае незаполненного поля "Номер карты" при регистрации.

4.2 Кнопка с состоянием "Доступна/Недоступна" б) Если кнопка доступна, то скринридер озвучивает только текст и тип элемента. Пример: "Продолжить, кнопка" в случае корректно введённого номера карты.

Элемент "Свёрнуто/развёрнуто" По нажатию на него происходит разворачивание области с информацией, которой до этого не было. Скринридер озвучивает название элемента и его состояние. Пример: "Карты [Свёрнуто]", "Вклады и счета [Развёрнуто]", "Подробности операции [Свёрнуто]"

Вкладки От того, какая вкладка выбрана, зависит содержимое страницы; выбрана может быть только одна - логика радиокнопок. Часто реализуют кнопками. Озвучивание скринридером состоит из: статуса (только если выбрано), названия, типа элемента, порядковый номер из N

Пример: "[Выбрано] Карта [кнопка], [1 из 3]", "Настройки [кнопка], [2 из 3]", "История [кнопка], [3 из 3]".

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

Положение фокуса скринридера при открытии нового экрана Курсор скринридера должен устанавливаться на первый элемент страницы (как правило, это кнопка “Назад” или “Перейти вверх”) или на заголовок окна (как правило, это второй элемент на странице).

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

Судя по нашему опросу, только 15 процентов разработчиков пробывали использовать talk back. А этот твиттер читают в основном активные ребята, так что реальная цифра существенно ниже...

Чуть-чуть про процессы. У нас есть отдельное пространство "Refactoring" в jira, где разработчики из разных команд могут заводить себе задачи, на прямую не относящиеся к беклогу команд. Это общее пространство активно испльзуется, и лидеров мы отмечаем =)

Всегда было интересно, на сколько распространено парное программирование среди Android разработчиков. Я слышал только о двух случаях (в циане и в какой-то компании которую купил самсунг), но сам не видел. Говорят топ тема. А вы видили этот подход в действии в android разработке?

Суббота


Есть сатирическое издание ИА "Панорма" там публикуют фейковые новости. Есть такой же сайт про IT theolognion.com Иногда там попадаются забавные статьи.

Исследование stackoverflow 2020. Зарплаты мобильных разработчиков (global) выигрывают только у работников университета. Если только США, то ситуация чуть лучше, но тем не менее.
notion image

Время для историй. Как-то раз у коллеги сломался проект и обычные средства исправления не работали. Я, руководствуясь благими намерениями, предложил выполнить команду git clean -xdf. Но не упомянул, что она делает. Сказал только, что она и шелф прибьет.

Далее цитата: “то есть ВЕСЬ МОЙ КОД ПРОПАЛ спасибо! больше не советуй ничего, пожалуйста”

Было жутко неловко. Код удалось восстановить из local history. Слава богу Android Studio он не закрыл. Так что аккуратнее с советами, и не пишите в командную строку команды если не знаете что они делают.

Веселых историй у меня оказалось не много, Предлагаю обсудить книги. Мне книги как источник информации по разработке нравятся. А вам?

Запощу свою библиотеку. Куда если не сюда. Еще есть GoF, Working Effectively with Legacy Code, Clean Code, RxJava for Android Developers
notion image

Из этих четырех книг я прочитал только одну, какую?

Большую часть книг с второй фото я прочитал, осталось только Refactoring, Rx для Android. Сейчас Object Thinking читаю. Самой лучшей книгой из всех прочитанных считаю Effective Java.

Java Concurrency in Practice прочитал 2 раза, чтобы уверено себя чувствовать в этой теме на собесах, любят ее спрашивать. Знания не слишком практичные забываются быстро. Чтобы знания где-то оставались конспектировал их в форме вопрос ответ. docs.google.com/document/d/1Ne…

Java Puzzlers содержит интересные забавные ситуации из java, связанные чаще всего с порядком инициализации класа или автоматическом приведении типа. Может запощу самые интересные

А вот книги по паттернам, как и толстая от headfirst с утками, так и GoF со Smalltalk мене понятны, чем статьи на Refactoring Guru. refactoring.guru/ru/design-patt…

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

Кстати еще один вопрос, в связи с RxJava. Как корутины повлияют на RxJava на Android, скажем в новых приложениях через 2 года?

Воскресенье


Верно Design Patterns =) Кнута вряд ли когда-нибудь осилю. Нужно быть реалистом.

Кстати в ближайшую субботу автор канала Android Guards будет отвечать на распространенные вопросы безопасности в Android. Должно быть интересно присоединяйтесь youtu.be/zeU2wlcj_Bw

Спасибо за внимание. Это был классный опыт. Как минимум научился пользоваться твиттером. Здесь будет "мета тред" с сылками.

Начал писать свою историю в разработке и чет она длинная получается =) а я боялся что у меня будет мало твитов.
Как я попал в Андроид разработку twitter.com/mobileunderhoo…

Поддерживать себя в форме стараюсь походами на конференции, чтением книг по программированию и просмотром записей с конференций.
Тред с интересными видосами по Android twitter.com/mobileunderhoo…

Несколько лайфхаков. Скорее всего бояны, но да ладно. Linux или Mac собирают заметно быстрее чем Windows
Тред с инструментами, здесь я пиарю Flipper twitter.com/mobileunderhoo…

Расскажу немного про сбербанк. Во первых сбербанк во всю строит себе новые здания. План видимо собрать основную часть сотрудников вместе. Внутри офисы классные. https://t.co/idA3O5eiWQ
А здесь я показал строительство новых офисов сбербанка, чем вызвал дискуссию о необходимости офисов в эпохе удаленки. И немного рассказал про сбер для мобильных разработчиков. twitter.com/mobileunderhoo…

Попросили поднять тему accessibility. Завтра сюда напишу, как это у нас устроено. Я даже как-то пробывал использовать телефон с помощью наушников, довольно сложно. А вы пробывали работать с телефоном с помощью звука? twitter.com/mobileunderhoo…
Тред про Accessibility twitter.com/mobileunderhoo…

Исследование stackoverflow 2020. Зарплаты мобильных разработчиков (global) выигрывают только у работников университета. Если только США, то ситуация чуть лучше, но тем не менее. https://t.co/5kltK11AeM
Мы обсудили странную статистику stackoverflow с зарплатами мобильных разработчиков twitter.com/mobileunderhoo…

Время для историй. Как-то раз у коллеги сломался проект и обычные средства исправления не работали. Я, руководствуясь благими намерениями, предложил выполнить команду git clean -xdf. Но не упомянул, что она делает. Сказал только, что она и шелф прибьет.
Веселая история про git clean -rxf twitter.com/mobileunderhoo…

Кстати еще один вопрос, в связи с RxJava. Как корутины повлияют на RxJava на Android, скажем в новых приложениях через 2 года?
Здесь мы выяснили что уже поздно читать книгу Rx for an Android Developer, и что через 2 года нас будет ждать мир курутин. Один из читателей предположил что и курутины к тому времени будут deprecated twitter.com/mobileunderhoo…

Веселых историй у меня оказалось не много, Предлагаю обсудить книги. Мне книги как источник информации по разработке нравятся. А вам?
Ну и здесь я рассказывал про книжки которые я прочитал и не прочитал. twitter.com/mobileunderhoo…

Если что, мой телеграм @maksimturaev

Ссылки