Intro To Mobile Development
Published: 2020-03-16 09:59:14

So far the applications I've made throughout my bootcamp journey have all been browser based web apps but for our final project our group decided to make the jump into mobile development.

Developing on mobile has some unique differences and hurdles to overcome over what we're used to as we learned, but in a world where everyone has a little black mirror in their pocket you'd be selling yourself short as a software developer not to make the jump.

##Key Differences

Working as a front-end developer for a web application has you manipulating the DOM, Document Object Model, the source of all the HTML that makes your (hopefully) awesome website work. First we did it just by hammering out HTML, then came JQuery, and finally MVC's like React or Angular.

In mobile, you'd don't have a DOM, instead you work with Views. All those old tricks you used before to make stuff look fancy no longer apply. Even styling libraries like [Bootstrap](https://getbootstrap.com/) can no longer give you fancy buttons and such, as there's no HTML to be had, instead you have to use something like [React Native Elements](https://react-native-elements.github.io/react-native-elements/) (or an equivalent for whichever native framework you're using) to render those elements out as components instead.

The next big hurdle is your server side code, for a web application connecting your front-end and back-end is much easier. There's no issue at all hosting both of the code on your deployment server of choice- but for mobile applications you can't bundle the two together. Your backend code needs to be hosted somewhere on the web your mobile application can hit, leaving all the heavy lifting to that server while your client end stays fairly lightweight.

This is a process that, as one of my partners found out, is not so easy. All those nice debugger tools like the Chrome Dev Console are no where to be found. So when something doesn't work, you don't have the luxury of console logs and breakpoints to give you a quick easy look at whats going on under the hood.

And one of the biggest hurdles I've had to face so far is actually getting to see  how your application is going to look on a mobile device. Using Expo does give you a nice feature that lets you scan a QR code to display a version of code on an actual mobile device, but that presents it's own difficulties during local testing when trying to hit your backend code. 

The more practical solution is to use an emulator, either through Android Studio or XCode for Android and iOS repectfully (as well as some third party software like [Genymotion](https://www.genymotion.com/)). Though if you're running a fossil of a laptop like mine, be prepared for headache. You're running a simulated version of an entire device, so be prepared for lag, locks ups, or if you're me, just straight up crashing.

##Not Hard, Just New

Despite all the hoops I have to jump through, I'm looking forward to learning more about mobile development- both for the boost it'll give to my hire-ability but also for the challenge of learning something new. Right now I don't have many answers for the problems I've listed here, but I'm excited to figure them all out and hopefully share them with you all soon!

Wish me luck, and email me some RAM, please.