Mobile Development Platforms 101
Tags: mobile, flutter, android, ios
Published: 2024-06-29 08:22:05

Hi there, I'm pleased to have you read my introductory article to **Mobile Development Platforms**.
With this article I intend to make familiar to you what Mobile Development Platforms are, the differences and advantages of each platforms enumerated. Also, you’ll get a brief introduction to a couple of Software Architecture Pattern used in Mobile development, what they mean and when they’re best used. Lastly you’ll meet [me, Azeez](https://github.com/khodesmith) and learn about my Journey into Mobile Development, what [HNG11 internship](https://hng.tech/internship) is and also my expectations from the HNG11 internship program.
Sit tight, grab a popcorn and a drink of choice while we enjoy this beautiful exploration together, I promise it’ll be worth your while.

**Operating System(OS):**
The Operating System also referred to as the _OS_ is basically the first software program that is loaded in any computer device, it serves as the foundation and root on which other software programs are installed and take services from in other to run and perform operations which they were built for and also function efficiently. There are various types of _OS_ for different types of devices namely:
MacOS specifically for MacBook and Apple Computers, Windows OS for HP, Acer, Lenovo et.c, Linus, iOS specifically for iPhones, Android for Google Pixel, Samsung Phone et.c, Harmony OS specifically for Huawei mobile phones, watch OS for smartwatches.

Mobile Development involves building of software applications for mobile devices. Mobile Development Platforms includes tools and resources created to be used for the purpose of building mobile applications for various devices with different types of OS, Mobile dev Platforms can be categorised into two distinct types identified as **The Native app platform** and **The Cross-Platform (Hybrid).**

**The Native app platform:**
Native app platform includes development tools used to create software application for a singular operating system type. The Software application built with these set of tools can only run/work on the device that uses the _OS_ that was defined for it during the development process. Example of Native app development tools includes: 
**Xcode** -> This is an IDE used to write and compile code for applications built for Apple devices and _OS_ such as MacOS, iOS, watchOS et.c
**Android Studio** -> This is also an IDE but it's used to write code for applications meant for devices with Android OS such as Google Pixel, Samsung, Techno et.c

**The Cross-Platform (Hybrid):**
These development tools are used to build software applications for more than one _OS_. Applications built using cross platform development tools can run on multiple different _OS_. Example of Cross-Platform dev tools includes but not limited to:
**Flutter:** Flutter is a mobile app development framework developed by Google. It uses Dart programming language to build mobile applications. It's major sales point "advantage" is that with a single codebase developers can build for both iOS and Android OS, this makes development simpler and faster and also reduces cost among other benefits also.
**React Native:** Like flutter, React Native is also an Open Source project but It's developed by Facebook and it uses Javascript and React in building mobile applications.

The major difference between these two aforementioned mobile development platforms is that Native platforms allows to build for a singular _OS_ while Cross-Platforms allows to build for multiple (mostly iOS and Android) _OS_.
The advantages of Native is that they're mostly optimised for performance, native has more advanced security, they have lower risk of bug, it's easier and quick to update the applications.
The advantages of Cross-platform apps include Lower cost of development, faster time of development since one codebase is enough for multiple _OS_, It allows for faster Idea development/prototyping.

Software Architecture Patterns in my understanding is a way of writing code within a set of rules, guidelines and patterns that drives data and component interactions within the mobile application to ensure it meets systems requirement, it's modular, it's maintainable and scalable.
Major Architecture Patterns for mobile application include the **MVC** (Model-View-Controller), **MVVM** (Model-View-ViewModel) and many more others.
Pros and Cons of MVC includes Fast development of application, Updating the application becomes easier, Identifying bugs and debugging also becomes easier but then The strictness of the rule that must be followed is a bit of a disadvantage, also one might not be able to fully understand the MVC style of writing code.
Also the Pros of the MVVM includes Unit-Testing mad easier, Testing the ViewModel without having to interact with the UI makes it an easier task, the cons is that there can be occurrence of repeated code while writing the ViewModel.

Now let's get to meet the man, the myth, the mother-plussing leyenda! The **Azeez Ojeyinka** (thanks for the ovation guys, I humbly accept it).
I'm an indigene of Ogun State, Nigeria. I'm a graduate of Computer Science from the University of Ilorin. My Hobbies includes Listening to Music "preferably **Seyi Vibes!**",listening to people talk and reading books preferably Non-fiction, my top 3 reads are SHOE DOG by Phil Knight, STEVE JOBS by Walter Isaacson and ALLAH DOES NOT OBLIGE by Ahmadou Kourouma.
I'm a Software Engineer, I've worked on various web projects and worked with organisations such as Crescent University in maintaining their websites but my Interest have now changed to mobile application development. For the past 3 months I've devoted my time to learning how to build and scale mobile projects using Dart and Flutter. It's been a self learning journey and that where [HNG11](https://hng.tech/internship) comes in. [HNG11](https://hng.tech/internship) is the eleventh iteration of a fast-paced bootcamp for learning digital skills. It's focused on advanced learners and those with some knowledge, it purpose is to challenge people and get them in shape for job offers. In the HNG bootcamp, interns work in teams to build apps and solve problems. Next cohort starts on the 1st of July, 2024. The internship is open to coders, designers, product managers and many more, enrolment is also free! for all.
I joined this program in order to challenge myself, practice my skill in a real world scenario in order to identify the gaps that I might have missed and also learn and grow, and to meet other developers and collaborate with them as a community.
HNG also have a hiring platform called [HNG Hire](https://hng.tech/hire), this platform is a place to find and hire elite freelance talent.