• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
XP Days UA Pecha kucha
 

XP Days UA Pecha kucha

on

  • 528 views

My small talk about processes, tools and people at eBuddy

My small talk about processes, tools and people at eBuddy

Statistics

Views

Total Views
528
Views on SlideShare
528
Embed Views
0

Actions

Likes
1
Downloads
1
Comments
3

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

13 of 3 previous next Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • * После сегодняшнего тренинга, я понял насколько кажется детским мобильные разработки ентерпрайз девелоперам * И все же я не потерял интереса рассказать вам про мою песочницу, пасочки и лопатки * Уважаемые зубры, примите мою презентацию как возможный список используемых решений, если вдруг в вашей компании появятся мобильные продукты
  • * Компания основана в 2003 и имеет два основных продукта - чат, агрегатор сервисов сообщений, и хмс, наш собственный сервис. * Продукты работают на 7 клиентских платформах и имеют более 30 миллионов юников в месяц * Если у вас смартфон в кармане, можете уже начать тестирование, это подсказка * В компании работают талантливые люди из более чем 26 стран мира
  • Для j2me проектов мы используем ant в связке с antenna Для BlackBerry ant с плагином bb-ant-tools Для Android мы используем maven и android плагин Активно используем proguard Есть релиз авточеки, чтобы не зарелизить билды с девелоперскими урлами, отладочной информацией и другими стыдными вещами Смотрим в сторону gradle
  • У нас есть доморощеная вики для перевода текстов - что-то переводится самими (26 национальностей) или общественностью, что-то отдается на перевод агенствам С помощью XSLT это преобразуется в файлы переводов и заливается в source control Система не фонтан и мы рассматриваем альтернативы
  • Все крутится на TeamCity с девятью агентами - 4 linux, 3 windows, 2 mac Каждый проект имеет как минимум три конфигурации - trunk, beta и release Конфигурация пересобирается каждый комит с прогонкой юнит тестов и выкладывается в известном для всех (QA) месте Automated acceptance тесты запускаются два раза в сути, integration тестов у нас мало, но мы хотим больше :) Deploy Beta и Production происходит пином соответствующего успешного билда в TeamCity
  • Для зависимостей используем artifactory, для антовых билдов ivy В проекты разбиты на модули, что позволяет нам иметь одно платформо независимое sdk для java клиентов для xms А в chat одна sdk и для android клиента, и для сервера Вообще, если вы берете что-то из одного проекта в другой через сорцы, то вы делаете еще больший грех, чем копипаст Используется cторонние библиотеки, если находятся баги, мы форкаем сорцы и делаем свои снапшоты, ну и так же не забываем пул реквестить в оригиналы :) Пару вещей подумываем заопенсорсить - BlackBerry simulator tests, но никак не доходят руки
  • Очень важно понимать, кто ваши пользователи и как они используют ваше приложение, особенно для нас, ведь мы существенную чать выручки получаем с рекламы Мы используем Flurry для мобильных, Google Analytics для веба У нас есть свой DataWarehouse для bekend, где обычно дублируются важнейщие показатели для аналитики Иногда результаты часто не совпадают и это выливается в интерейснейшие исследования Все новые фичи отображены в аналитике чтобы ПО мог понять насколько она востребованна и понятна
  • Каждый несколько месяцев проходит UX тестирование с привлечением добровольцев Поддержка пользователей идет через zendesk, который соединен с jira Смотрим jira mobile connect, но он доступен пока для ios и немного для android Все сотрудники являются ярыми альфа, бета тестерами и дают качественный feedback через zendesk Что очень важно, каждый мобильный разработчик является старательным пользователем своего продукта
  • Люди разбиты на команды 4-5 разработчиков В каждой комманде один QA и идут жаркие дебаты по включению туда Design и UX people В XMS тимы разбиты по платформам, в Chat пара смешанных ( feature) комманд В XMS хорошо организованный scrum, а вот operations, DWH и Chat плавают между канбаном и скрамом В каждой комманде есть definition of done, planning, daily stand up, story voting и retrospective
  • Используйте свою любимую среду. Проект либо maven либо Eclipse format. Ничего генерерованного, воспроизводимого, временного относящегося к среде в version control Обязательно code convention и автоформатирование (eclipse code formatter plugin). Ну честно, так корбит смотреть на разные отступы или искать в куче пробелов реальные изменения. Если у вас есть sonar - настройте правило
  • Мы используем SVN :( Девелопмент идет в trunk, который бранчуется в бету и релизится Частые фокусированные комиты - разделение по действию, подсистеме Behaviour commit comments - пишите, что делает теперь приложение, а не то что сделали вы И не забываем простые правила - не заливаем не полные изменения, обновится до коммита, резолвим конфликты, запускаем тесты
  • Растите культуру чистого кода Читабельный код Тестируемый код Опытный бекенд разработчик в мобильной команде отлично вправляет мозги мобильным разработчикам Скажите нет препроцессору и предоптимизациям Комментарии только для workarounds багов телефонных прошивок  
  • Писать хорошие тесты сложно, писать хорошие тесты под мобильные еще сложнее. Как результат - многие/очень многие мобильные разработчики не пишут тестов Покажите/научите как тесты влияют на дизайн, на качество и скорость проекта Дебаг и логгирование становятся редким развлеченим В этом вам конечно поможет засланец из страны бекенда
  • Добивайтесь как можно быстрого фидбека от тестов - большинство функционала должно тестировать на десктопе (junit, fest assert, mockito) Используйте решения эмулирующие апи платформы (robolectric, microemulator) Все остальное тестируется на симуляторе/емуляторе с обязательной интеграцией с CI (fledge, instrumental tests, j2meunit)    Ищите/пробуйте свое решение, часто фрейморки активно подменяющие ClassLoader и использующие Reflection конфликтуют между собой
  • Разделяйте создание объектов и их использование Мы не нашли хорошего фреймворка для j2me/blackberry, используем самописный контейнер Спасибо Dalvik есть хорошие DI решения - RoboGuice и  сравнительно новый Dagger
  • Очень много времени уходит на regression. Срочно автоматизируйте! Мы используем sikuli для j2me, bb и android. Но смотрим в сторону RoboGuice   MonkeyRunner полезная штука для проверки стабильности приложения
  • Парное программирование полезная штука, особено когда в команде люди с разным багажом Мы создаем тикет-напоминание в jira для парного программирования и обмена знаниями. Переключение обычно происходит после коммита Код ревью происходит в течении дня независимо в комманде В конце стори происходит коммандный код ревью, а если стори была 8+, то в начале происходит коммандный дизайн митинг Информация хранится в вики, эта часть у нас страдает, но мы работаем над этим А также туда вносятся результаты спайков
  • Очень важная практика, которая часто используется в компании - когда нет четкого понимания проблемы, ипользования бибилиотеки или есть не проясненые зависимости Перед стартом - обязательно понимание, что должно быть выходом Timeboxed - не более 12 часов (2 человека дня) Фиксируется в вики и обязательно презентуется ПО
  • Несколько фич выросло из личных проектов - location based discovery, stamps Каждый имеет право на два личных проекта в году. Каждый проект не более одного спринта Отличная возможность попробовать новое, интересное или закодить важное для себя
  • Живите и болейте своими продуктами, страдайте умеренным перфекционизмом, помните, что команда ответсвенна за качество и вы в первую очередь Не переставайте учится и искать более оптимальные процессы и решения Читайте, смотрите, общайтесь с коллеками, конкурентами и единомышленниками Энергии и удачи вам

XP Days UA Pecha kucha XP Days UA Pecha kucha Presentation Transcript

  • Mobile developer is Software developer maven, ant, gradle, bb-ant-tools, proguard, antenna junit, testng, fest assert, mockito, jmockit robolectric, microemulator, robotium, j2meunit, sikuli, monkeyrunner roboguice, androidannotations, dagger microlog, jarrut, lwuit, advanced bb ui, guava, otto, actionbarsherlock, viepageindicator, disklrucache jenkins, teamcity, bamboo, sonar, moose intellij idea, eclipse, eclipse code formatter plugin
  • eBuddy• 2003, Chat and XMS• AIM, Facebook, GoogleTalk, ICQ, MySpace, MSN and Yahoo• iOS, Android, BB, Symbian, J2ME, WP7, Web• 30 million monthly unique users• 26 different nationalitiesCompany
  • Build script• Ant, antenna, bb-ant-tools• Maven• Proguard• Release autochecks• Reviewing gradle
  • Translations• Wiki, excel• XSLT, commit to vsc
  • Continuous integration• TeamCity• 9 agents – Linux, Windows, Mac• Trunk, Beta and Release• Pin to deploy in TC
  • Dependencies• Artifactory, ivy• SDKs• Open Source
  • Analytics• Flurry, Google analytics• DataWareHouse
  • UX and customer support
  • Teams• 4-5 developers, 1quality assurance• Platform and feature teams• Scrum
  • Project setup• General conventions, definition of done• Eclipse, IDEA• Eclipse code formatter plugin
  • Source Control• Trunk, release and spike branches• Commit frequently, commit smart• Behavior commit comments
  • Code• Clean code• Preprocessor and optimizations• Comments only for firmware bugs workarounds• BE developer• Sonar for project health
  • Tests philosophy
  • Tests practice• Quick feedback• Robolectric, microemulator• Emulator/simulator tests
  • Dependency injection• Separate creation and usage• Roboguice, Dagger
  • Other tests• Automate regression• Sikuli, Robotium• Monkey runner
  • Knowledge sharing• Pair programming• Code review• Design sessions• Wiki
  • Spikes• Clear outcome• Timeboxed• Presentable
  • Personal projects• 2 personal projects• One sprint duration• Presented on company meeting
  • Conclusion • @jack_martynov • eugen.martynov@gmail.com