React Native: my native developer first impressions

About 8 weeks ago, I embarked on a new project. A brand new mobile app to be coded in React Native. I was excited to learn a new technology and my client (a French startup) was excited at the prospect of getting their first mobile app off the ground. Once the project is live in the stores, I’ll make sure to add a link to the app.

To give you some context I’m an iOS developer who has created native apps in the past. I’ve lead a team to create a fairly large iOS app and consider myself to be a senior/lead iOS developer who puts a lot of emphasis on software quality and shipping high-quality software.

Here is what I’m taking away now that I’m done.

The basic tools of iOS app development

This post is going to be part of a series I'm starting called "iOS development tech and tools explained".

One thing that I realized as I talked to nontechnical founders is that they don't know what the tools of the trades are. It's then tough for them to have a productive conversation with their developer because they quickly get lost in jargon. 
So the goal of this series is to give you a high-level view of technology you'll be working with when you create an iOS app.

Today, I'm going to start with the developer tools and cover the three most used tools. Those are the apps provided by Apple that a developer will use throughout the creation of an iPhone app.



This is the big one, it is the app in which your developer will write all the code for your application. It provides a lot of features to help your developer. 
It includes:
- an interface editor (used to be referred to as Interface Builder)
- a debugger (something to inspect the internal state of your application as it run to see exactly what the application is doing and identify the root cause of a bug)
- tools to send your application to the AppStore
- a version control tool: to keep track of all the changes which have been made to the application over time.
- and much more, but you'd get bored with the rest



iOS Simulator

This is where your developer will run the app on their computer. The simulator can behave just like any past iPhones running any version of iOS. This is a great tool to test your application without having to buy a whole slew of devices. It has limitation though and for certain technology cannot be used (ARKit apps, apps using the camera, BLE applications)



Another staple in the developer tools. This is the application that your developer will use to track down performance issue. If your app runs slow, and you don't know why. Ask your developer to fire up Instruments and you'll quickly find out why. If your app needs to optimize battery usage for some reason, you'll also use this tool.
For the Fluke app, for example, we were having performance issues. When the main screen was scrolled, the scrolling would be choppy. I fired up this tool and quickly identify a bad architecture decision that was slowing down the display. And when fixing bug half the battle is finding the root cause.

A tool to keep yourself honest as an iOS developer

All iOS developers love writing code. After all, there is a good reason they are doing it. A smaller set of iOS developers take great pride in creating code that can be reused easily, which can be maintained easily. In short write great code.

A few years back I had joined a team in which I kickstarted a code review process to help raise the code quality in the. Some of the comments were around coding style and a few about code complexity.