SlideShare una empresa de Scribd logo
1 de 29
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

Más contenido relacionado

La actualidad más candente

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 FastlanePROIDEA
 
Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Intro to Retrofit 2 and RxJava2
Intro to Retrofit 2 and RxJava2Fabio 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, 2015Tomáš 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. JambiAndreas Schreiber
 
React Nativeの光と闇
React Nativeの光と闇React Nativeの光と闇
React Nativeの光と闇Yukiya Nakagawa
 

La actualidad más candente (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の光と闇
 

Destacado

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 - Backendlessbackendless
 
Разрабатываем качественное 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 overviewEugen Martynov
 
Organisasi belajar mendunia
Organisasi belajar menduniaOrganisasi belajar mendunia
Organisasi belajar menduniaZulrahmat Togala
 
My summer experience with the future
My summer experience with the futureMy summer experience with the future
My summer experience with the futureYashiro Anazawa
 
Manual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&RManual de procedimientos surtidora S&R
Manual de procedimientos surtidora S&RJuan 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 kuchaEugen Martynov
 
Slideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphisSlideshow.thai yoga bodywork memphis
Slideshow.thai yoga bodywork memphistnmassage
 
Kajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifikKajian teoritis pendekatan saintifik
Kajian teoritis pendekatan saintifikZulrahmat Togala
 

Destacado (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 a 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 2015Andrew Eisenberg
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchMats Bryntse
 
Jenkins CI for MacDevOps
Jenkins CI for MacDevOpsJenkins CI for MacDevOps
Jenkins CI for MacDevOpsTimothy Sutton
 
React Native: The Development Flow
React Native: The Development FlowReact Native: The Development Flow
React Native: The Development FlowRitesh 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 reversingEnrique López Mañas
 
2012 star west-t10
2012 star west-t102012 star west-t10
2012 star west-t10Eing 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 UIjhugman
 
Rapid Testing, Rapid Development
Rapid Testing, Rapid DevelopmentRapid Testing, Rapid Development
Rapid Testing, Rapid Developmentmennovanslooten
 
Testing ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETTesting ASP.NET - Progressive.NET
Testing ASP.NET - Progressive.NETBen 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 ProjectVincent Massol
 
Selendroid - Selenium for Android
Selendroid - Selenium for AndroidSelendroid - Selenium for Android
Selendroid - Selenium for AndroidDominik Dary
 
Cross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToCross Platform Appium Tests: How To
Cross Platform Appium Tests: How ToGlobalLogic Ukraine
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileKonstantin Loginov
 
Android 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndroid 101 - Introduction to Android Development
Android 101 - Introduction to Android DevelopmentAndy 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 instrumentsArtem Nagornyi
 
Dependency Injection in .NET applications
Dependency Injection in .NET applicationsDependency Injection in .NET applications
Dependency Injection in .NET applicationsBabak Naffas
 

Similar a 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
 

Último

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 

Último (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

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