World of mobile Development.
Tags: android, androidve, mobile, ios
Published: 2024-06-28 17:53:13

Wondering if to dive into mobile development? This is why you should give it a shot.

**High demand for mobile developers**
From google source, in the year 2021, the number of mobile devices operating world wide stood almost 15 billion. The number of mobile devices is expected to reach 18.22 billion by the year 2025, an increase of 4.2 billion devices compared to previous years.
From research in the year 2023, there are more than 1 billion mobile devices operating on iOS (iPhones) and over 3 billion android devices. The number keeps increasing year by year and there is more need for developers to build applications which will keep running on these devices.

**Competitive Salary**
I believe the primary aim of every developer is to make some cool cash. Wondering if mobile development is worth it? Check is out.
In the US, the average annual salary is over $133,000. This sits at the second most paid tech job. As a result of the revolutionary medium's widespread adoption by consumers, businesses, programmers, and creatives, mobile app development has become one of the fastest growing and most lucrative careers. Aside that, it is possible to make million of dollars creating your own mobile apps either by publishing them on the play store and app store or selling them to small businesses and others who might need it.

**Easy To Learn**
Mobile Development is one of the easiest journeys to dive in. Just sit at the comfort of your home with a computer and a strong internet connection. An emulator can be used for testing on the computer but to save ram and power, it is best to have your own mobile device which can be connected to your PC.

## Wondering Where to Start From?


![Cross Platform](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t31yvercd6en0tw8rw4j.png)
Mobile devices have two broad platforms, Android and iOS. Mobile development can be classified under native and cross platform development. Native as the name goes are apps that work for only one designated operating system and the cross platform operates on both platforms. Isn’t it cool developing app that can operate on both android and iOS. There are some pros and cons on which platform to choose when developing your mobile application.

**Cross Platform**

![Cross Platform](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u8phvbyl4gqt6itokaw7.jpg)
**Pros**

- Cost Effective.
 At first, you will need two devs to create an iOS app and another for android app which can really cost paying twice for what could be done with one language and used across all platforms. Using cross platforms saves a lot of money in development.

- Time:
Time goes with money, right? It is relatively fast to develop a mobile app with a cross-platform language that using two different languages which could be twice the time of a cross platform language.
Code Reusability; Write once, run anywhere. This significantly reduces development time and cost as the same codebase can be used for both iOS and Android.
**Cons**

- Performance Issues:
 In terms of performance, cross platform might not be the best for some applications especially with high graphics

- Limited Access to Native APIs: 
Some platform-specific features might be harder to implement or less efficient.

- UI/UX Limitations:
 Might not fully utilize platform-specific UI/UX components and guidelines, leading to a less native feel.

**Native Platform**

![Native Platform](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yipllrgb0uotlsez0h5s.jpeg)
**Pros**

- Optimal Performance:
 Since native apps are created especially for a given platform, they are typically faster and more responsive.

- Full Access to Device Features:
 Easier to access all native APIs and device-specific features.

- Better UI/UX: 
enables a more personalized and easy-to-use user experience while adhering to platform-specific design standards.

- Greater Community Support:
 You don’t want to get stuck while developing your app and you run into a problem. Native platforms have high community that supports development.

![Android](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rdshh5lwhrht6s08m4mk.png)
**Cons**

- Higher Development Costs:
 As mention earlier, cost of development is high to develop two separate codebases for on single application

- Longer Development Time:
 Developing and maintaining two separate codebases takes more time compared to a single cross-platform codebase.

- Increased Maintenance Effort: 
Requires updates and maintenance to be done separately for each platform.

## Mobile Development Architecture
There are several architectures used in mobile development. I will speak about only three most commonly used.

1. **MVC (Model-View-Controller)**
MVC is a design pattern that separates an application into three main logical components: the Model, the View, and the Controller.
_Pros:_

- Separation of Concerns:
 Divides the application into three interconnected components, making it easier to manage and scale.

- Reusability: 
The same model and view can be reused across different controllers.
_Cons:_

- Complexity:
 Can become complex as the application grows.

- Overhead:
 Requires more boilerplate code.

2. **MVP (Model-View-Presenter)**
MVP is derived from MVC. The main aim is to provide a clear separation between the view and the presenter to make the view more passive and focusing on the interaction through the presenter.

_Pros:_

- Separation of Concerns:
 Clear separation between view and logic.

- Maintainability: 
Easier to maintain and update.

_Cons:_

- Boilerplate Code:
 Requires more boilerplate code compared to MVC.

- Complexity:
 It gets complicated when building a larger application

**3. MVVM (Model-View-ViewModel)**
MVVM is the most commonly used in mobile development and what I commonly used.  The design pattern aims to simplify the separation of the UI business through the use of data bindings and a ViewModel that manages the interaction between the view and models.

_Pros:_

- Two-Way Data Binding:
 Simplifies the process of binding data between the view and viewmodel.

- Separation of Concerns:
 Clear separation between UI and business logic.

_Cons:_

- Performance: 
Two-way data binding can lead to performance issues in large applications.

- Boilerplate Code: 
Requires additional code for binding and ViewModel.

## My Journey Into Mobile Development
In the year 2019 I first head of programming and my first language was Java. My love for Java still remains the same despites it’s complicated structure. Due to lack of resources such as laptop and internet connectivity, I couldn’t further my learning till I got admitted into the university to read Computer Science. I then continued to learn the Plain Java Language. Learning the basic syntax and logics till I decided to implement my learning in  a real world usable product where I joined the world of mobile development. My first mobile app was a driving app that can be used by a Uber driver to connect with his customers. The look and feel amazed me and gave me the edge to dive deep into it. I later discovered other platforms such as Kotlin and flutter.

## HNG internship.
I joined the [HNG](https://hng.tech/internship) internship program which is ongoing to increase my knowledge in [mobile development](https://hng.tech/hire). I’m looking forward to explore more technologies and tools that can help me be a solid and confident mobile developer.