SlideShare a Scribd company logo
Mobile developer is
Software developer
eBuddy
• 2003, Chat and XMS
• AIM, Facebook, GTalk, ICQ, MSN and
  Yahoo
• iOS, Android, BB, Symbian, J2ME, WP,
  Web
• 30 million monthly unique users
• 26 different nationalities
• We are hiring

Company
Projects Setup
•   Maven or Eclipse
•   Checkout
•   Import
•   (Easy tune)
•   Profit!




Import
Build Automation
•   Ant, antenna, bb-ant-tools
•   Maven
•   Proguard
•   Release auto checks
Build Automation Concepts
• Checkout
• Run
• Profit
Ant Hints
Don’t change script behavior based on property value:
<if>
    <equals arg1="${is-building-nna}" arg2="true"/>
    <then>
        <unjar src="${napi.lib}" dest="tmp/classes"/>
    </then>
</if>

Much better:
<target name="normal build" />

<target name="nna build" />
Maven Hints
Dependencies
• Artifactory, Ivy
• SDKs
Open Source
• Fork
• Fix
• Pull request
Source Control Hints
• Trunk, release and spike
  branches
• Commit frequently, commit
  smart
• Behavior commit comments
Continuous Integration
• TeamCity
• 9 agents – Linux, Windows,
  Mac
• Trunk, Beta and Release
• Pin to deploy in TC
One of the Best Mobile Team Member
• BE developer is part of mobile team
   + High quality standrards
   + Another process vision
   + Person, who can handle BE questions,
   changes
   - He will get bored soon
Code
•   Clean, Testable code
•   Sonar for project health
•   No preprocessor
•   No pre-optimization
•   Activities are only windows
    from your app for user
    interaction
Code Review and Pair Programming
• Pair programming
• Code review
• Design sessions
Unit Tests
@Test
public void showWelcomeMessageWhenReceivedPushDestination() {
         chatPushControl.registrationSuccess("id");

         verify(control).showWelcomeMessageIfNecessary();
}

@Test
public void sendDestinationAndUpdateAccountWhenGetPushRegistration() {
         final String id = "id";

         chatPushControl.registrationSuccess(id);

         verifySendPushSettingsAction(id, PushTimeout.LONG.getValue());
         verify(masterAccount).setPushDest(id);
}
@RunWith(RobolectricTestRunner.class)
public class ChatActivityTest {
    @Before
    public void setUp() {
        activity = new ChatActivity();
        activity.onCreate(null);

        sendImageButton =
            (ImageButton) activity.findViewById(R.id.chatinput_send_image);
    }

    @Test
    public void removeAttachmentButtonForXMS() throws Exception {
        Contact contact = new Contact(IMAccountFactory.stringToAccount(“XMS"),
            "userid");
        when(chatControl.getCurrentChatContact()).thenReturn(contact);
        activity.onResume();
        assertEquals("Send image button should be invisible",
            View.GONE, sendImageButton.getVisibility());
    }
}
Unit Tests Principes
• Quick feedback
• Robolectric,
  microemulator
• Emulator/simulator
  tests
Dependency Injection
• Separate creation and
  usage
• RoboGuice, Dagger
RoboGuice Example
import javax.inject.Inject;

@ContentView(R.layout.startup)
public class StartupActivity extends SigninActivity implements OnClickListener {

         @Inject private Control control;
         @Inject private FlurryLogger flurry;

         @Override     protected void onStart() {
                     super.onStart();
                     flurry.onStartSession(this);
                     flurry.onEvent(EventType.ACT_STARTUP)
         }
}
Acceptance Tests
• Automate regression
• Sikuli, Robotium
• Monkey runner
#### StartGroupConversation###

#note: contacts should be received alphabetically
def StartGroupConversation(contacts):
         hitMenuItem("start_group_item.png");
         for x in contacts:
                   scrollDown(x);
                   type(Key.F9);

         hitMenuItem("start_group_conversation.png");
         wait("group_created.png", 30);



##### enter an item in the menu (INSERT)
def hitMenuItem(image):
         type(Key.INSERT);
         scrollDown(image); type(Key.F9);
Analytics
• Flurry, Google analytics
• Bugsense
• DataWareHouse
Feedback
• Eat your own dog food
• UX testing
• Zendesk
Spikes
• Clear outcome
• Timeboxed
• Presentable
Personal Projects
• 2 personal projects
• One sprint duration
• Presented on company
  meeting
Conclusion
Keywords
• maven, ant, gradle, bb-ant-tools, proguard, antenna
• junit, testng, fest assert, mockito, jmockit, powermock
  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
Trivia
• How many nationalities are in eBuddy?
• What is the name of framework that we are using for
  testing Android on desktop?
• What is the duration of typical personal project in the
  company?

                                         @jack_martynov
                               eugen.martynov@gmail.com

More Related Content

What's hot

MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlaneMCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
PROIDEA
 
Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2
Fabio Collini
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
Tomáš Kypta
 
AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.
Dragos Mihai Rusu
 
Java GUI Toolkits - Swing vs. SWT vs. Jambi
Java GUI Toolkits - Swing vs. SWT vs. JambiJava GUI Toolkits - Swing vs. SWT vs. Jambi
Java GUI Toolkits - Swing vs. SWT vs. Jambi
Andreas Schreiber
 
React Nativeの光と闇
React Nativeの光と闇React Nativeの光と闇
React Nativeの光と闇
Yukiya Nakagawa
 

What's hot (7)

 xctest
 xctest xctest
 xctest
 
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using FastlaneMCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
MCE^3 - Felix Krause - Continuous Delivery for Mobile Apps Using Fastlane
 
Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2
 
Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015Android Develpment vol. 2, MFF UK, 2015
Android Develpment vol. 2, MFF UK, 2015
 
AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.AngularJS - Overcoming performance issues. Limits.
AngularJS - Overcoming performance issues. Limits.
 
Java GUI Toolkits - Swing vs. SWT vs. Jambi
Java GUI Toolkits - Swing vs. SWT vs. JambiJava GUI Toolkits - Swing vs. SWT vs. Jambi
Java GUI Toolkits - Swing vs. SWT vs. Jambi
 
React Nativeの光と闇
React Nativeの光と闇React Nativeの光と闇
React Nativeの光と闇
 

Viewers also liked

Freelancer new
Freelancer newFreelancer new
Freelancer newMariaGubko
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script appsEugene Zharkov
 
IT Brunch - Backendless
IT Brunch - BackendlessIT Brunch - Backendless
IT Brunch - Backendless
backendless
 
Разрабатываем качественное Windows 8 приложение
Разрабатываем качественное Windows 8 приложениеРазрабатываем качественное Windows 8 приложение
Разрабатываем качественное Windows 8 приложение
Mykhail Galushko
 
Android Brown Bag Lunch - DroidconNL overview
Android Brown Bag Lunch - DroidconNL overviewAndroid Brown Bag Lunch - DroidconNL overview
Android Brown Bag Lunch - DroidconNL overview
Eugen Martynov
 
Organisasi belajar mendunia
Organisasi belajar menduniaOrganisasi belajar mendunia
Organisasi belajar menduniaZulrahmat Togala
 
Facebook Stetho
Facebook StethoFacebook Stetho
Facebook Stetho
Eugen Martynov
 
My summer experience with the future
My summer experience with the futureMy summer experience with the future
My summer experience with the future
Yashiro Anazawa
 
Robolectric Adventure
Robolectric AdventureRobolectric Adventure
Robolectric Adventure
Eugen Martynov
 
ضياء
ضياءضياء
Template project
Template projectTemplate project
Template project
Eugen Martynov
 
Manual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&RManual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&R
Juan Carlos Castillo
 
IT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleIT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleDmytro Mindra
 
XP Days UA Pecha kucha
XP Days UA Pecha kuchaXP Days UA Pecha kucha
XP Days UA Pecha kucha
Eugen Martynov
 
Slideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphisSlideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphis
tnmassage
 
Kajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifikKajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifik
Zulrahmat Togala
 
Flow
FlowFlow
Robolectric v2
Robolectric v2Robolectric v2
Robolectric v2
Eugen Martynov
 
DI with Dagger2
DI with Dagger2DI with Dagger2
DI with Dagger2
Eugen Martynov
 

Viewers also liked (20)

Freelancer new
Freelancer newFreelancer new
Freelancer new
 
Creating windows store java script apps
Creating windows store java script appsCreating windows store java script apps
Creating windows store java script apps
 
IT Brunch - Backendless
IT Brunch - BackendlessIT Brunch - Backendless
IT Brunch - Backendless
 
Разрабатываем качественное Windows 8 приложение
Разрабатываем качественное Windows 8 приложениеРазрабатываем качественное Windows 8 приложение
Разрабатываем качественное Windows 8 приложение
 
Android Brown Bag Lunch - DroidconNL overview
Android Brown Bag Lunch - DroidconNL overviewAndroid Brown Bag Lunch - DroidconNL overview
Android Brown Bag Lunch - DroidconNL overview
 
Animals test
Animals testAnimals test
Animals test
 
Organisasi belajar mendunia
Organisasi belajar menduniaOrganisasi belajar mendunia
Organisasi belajar mendunia
 
Facebook Stetho
Facebook StethoFacebook Stetho
Facebook Stetho
 
My summer experience with the future
My summer experience with the futureMy summer experience with the future
My summer experience with the future
 
Robolectric Adventure
Robolectric AdventureRobolectric Adventure
Robolectric Adventure
 
ضياء
ضياءضياء
ضياء
 
Template project
Template projectTemplate project
Template project
 
Manual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&RManual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&R
 
IT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by ExampleIT Brunch - SpecFlow and Gherkin by Example
IT Brunch - SpecFlow and Gherkin by Example
 
XP Days UA Pecha kucha
XP Days UA Pecha kuchaXP Days UA Pecha kucha
XP Days UA Pecha kucha
 
Slideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphisSlideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphis
 
Kajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifikKajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifik
 
Flow
FlowFlow
Flow
 
Robolectric v2
Robolectric v2Robolectric v2
Robolectric v2
 
DI with Dagger2
DI with Dagger2DI with Dagger2
DI with Dagger2
 

Similar to Mobile developer is Software developer

Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015
Andrew Eisenberg
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
Mats Bryntse
 
Jenkins CI for MacDevOps
Jenkins CI for MacDevOpsJenkins CI for MacDevOps
Jenkins CI for MacDevOps
Timothy Sutton
 
React Native: The Development Flow
React Native: The Development FlowReact Native: The Development Flow
React Native: The Development Flow
Ritesh Kumar
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
Danny Preussler
 
Android Building, Testing and reversing
Android Building, Testing and reversingAndroid Building, Testing and reversing
Android Building, Testing and reversing
Enrique López Mañas
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10
Eing Ong
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building AndroidDroidcon Berlin
 
Kirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UIKirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UI
jhugman
 
Rapid Testing, Rapid Development
Rapid Testing, Rapid DevelopmentRapid Testing, Rapid Development
Rapid Testing, Rapid Development
mennovanslooten
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
Ben Hall
 
Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testingdrewz lin
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
Vincent Massol
 
Selendroid - Selenium for Android
Selendroid - Selenium for AndroidSelendroid - Selenium for Android
Selendroid - Selenium for Android
Dominik Dary
 
Cross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToCross Platform Appium Tests: How To
Cross Platform Appium Tests: How To
GlobalLogic Ukraine
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve Mobile
Konstantin Loginov
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android Development
Andy Scherzinger
 
Using Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development CycleUsing Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development Cycleseleniumconf
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
Artem Nagornyi
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applications
Babak Naffas
 

Similar to Mobile developer is Software developer (20)

Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015Protractor Tutorial Quality in Agile 2015
Protractor Tutorial Quality in Agile 2015
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
 
Jenkins CI for MacDevOps
Jenkins CI for MacDevOpsJenkins CI for MacDevOps
Jenkins CI for MacDevOps
 
React Native: The Development Flow
React Native: The Development FlowReact Native: The Development Flow
React Native: The Development Flow
 
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
 
Android Building, Testing and reversing
Android Building, Testing and reversingAndroid Building, Testing and reversing
Android Building, Testing and reversing
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10
 
Testing and Building Android
Testing and Building AndroidTesting and Building Android
Testing and Building Android
 
Kirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UIKirin - Making Single Page Web Apps with a Native UI
Kirin - Making Single Page Web Apps with a Native UI
 
Rapid Testing, Rapid Development
Rapid Testing, Rapid DevelopmentRapid Testing, Rapid Development
Rapid Testing, Rapid Development
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NET
 
Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testing
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
 
Selendroid - Selenium for Android
Selendroid - Selenium for AndroidSelendroid - Selenium for Android
Selendroid - Selenium for Android
 
Cross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToCross Platform Appium Tests: How To
Cross Platform Appium Tests: How To
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve Mobile
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android Development
 
Using Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development CycleUsing Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development Cycle
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applications
 

Recently uploaded

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 

Recently uploaded (20)

DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 

Mobile developer is Software developer

  • 2. eBuddy • 2003, Chat and XMS • AIM, Facebook, GTalk, ICQ, MSN and Yahoo • iOS, Android, BB, Symbian, J2ME, WP, Web • 30 million monthly unique users • 26 different nationalities • We are hiring Company
  • 3. Projects Setup • Maven or Eclipse • Checkout • Import • (Easy tune) • Profit! Import
  • 4. Build Automation • Ant, antenna, bb-ant-tools • Maven • Proguard • Release auto checks
  • 5. Build Automation Concepts • Checkout • Run • Profit
  • 6. Ant Hints Don’t change script behavior based on property value: <if> <equals arg1="${is-building-nna}" arg2="true"/> <then> <unjar src="${napi.lib}" dest="tmp/classes"/> </then> </if> Much better: <target name="normal build" /> <target name="nna build" />
  • 9. Open Source • Fork • Fix • Pull request
  • 10. Source Control Hints • Trunk, release and spike branches • Commit frequently, commit smart • Behavior commit comments
  • 11. Continuous Integration • TeamCity • 9 agents – Linux, Windows, Mac • Trunk, Beta and Release • Pin to deploy in TC
  • 12. One of the Best Mobile Team Member • BE developer is part of mobile team + High quality standrards + Another process vision + Person, who can handle BE questions, changes - He will get bored soon
  • 13. Code • Clean, Testable code • Sonar for project health • No preprocessor • No pre-optimization • Activities are only windows from your app for user interaction
  • 14. Code Review and Pair Programming • Pair programming • Code review • Design sessions
  • 16. @Test public void showWelcomeMessageWhenReceivedPushDestination() { chatPushControl.registrationSuccess("id"); verify(control).showWelcomeMessageIfNecessary(); } @Test public void sendDestinationAndUpdateAccountWhenGetPushRegistration() { final String id = "id"; chatPushControl.registrationSuccess(id); verifySendPushSettingsAction(id, PushTimeout.LONG.getValue()); verify(masterAccount).setPushDest(id); }
  • 17. @RunWith(RobolectricTestRunner.class) public class ChatActivityTest { @Before public void setUp() { activity = new ChatActivity(); activity.onCreate(null); sendImageButton = (ImageButton) activity.findViewById(R.id.chatinput_send_image); } @Test public void removeAttachmentButtonForXMS() throws Exception { Contact contact = new Contact(IMAccountFactory.stringToAccount(“XMS"), "userid"); when(chatControl.getCurrentChatContact()).thenReturn(contact); activity.onResume(); assertEquals("Send image button should be invisible", View.GONE, sendImageButton.getVisibility()); } }
  • 18. Unit Tests Principes • Quick feedback • Robolectric, microemulator • Emulator/simulator tests
  • 19. Dependency Injection • Separate creation and usage • RoboGuice, Dagger
  • 20. RoboGuice Example import javax.inject.Inject; @ContentView(R.layout.startup) public class StartupActivity extends SigninActivity implements OnClickListener { @Inject private Control control; @Inject private FlurryLogger flurry; @Override protected void onStart() { super.onStart(); flurry.onStartSession(this); flurry.onEvent(EventType.ACT_STARTUP) } }
  • 21. Acceptance Tests • Automate regression • Sikuli, Robotium • Monkey runner
  • 22. #### StartGroupConversation### #note: contacts should be received alphabetically def StartGroupConversation(contacts): hitMenuItem("start_group_item.png"); for x in contacts: scrollDown(x); type(Key.F9); hitMenuItem("start_group_conversation.png"); wait("group_created.png", 30); ##### enter an item in the menu (INSERT) def hitMenuItem(image): type(Key.INSERT); scrollDown(image); type(Key.F9);
  • 23. Analytics • Flurry, Google analytics • Bugsense • DataWareHouse
  • 24. Feedback • Eat your own dog food • UX testing • Zendesk
  • 25. Spikes • Clear outcome • Timeboxed • Presentable
  • 26. Personal Projects • 2 personal projects • One sprint duration • Presented on company meeting
  • 28. Keywords • maven, ant, gradle, bb-ant-tools, proguard, antenna • junit, testng, fest assert, mockito, jmockit, powermock 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
  • 29. Trivia • How many nationalities are in eBuddy? • What is the name of framework that we are using for testing Android on desktop? • What is the duration of typical personal project in the company? @jack_martynov eugen.martynov@gmail.com