We have been working on creating a cross-platform mobile app that we plan to launch later this year. I can’t go into specifics about the details of the app itself, but wanted to share what I’ve been learning so far.
I’ve been working with an intern at work the last few months. He is currently majoring in software development and has been studying Java for 3 years.
When I started, I took on the responsibility of maintaining our existing websites. I heard they were considering outsourcing a few mobile app projects. So, I suggested building them as web apps instead. Doing so would provide more accessibility to updating the content. We would also save a lot of money on initial development as well as ongoing maintenance and support.
This past spring, I heard about an opportunity to bring on a summer intern. He was going to school for software development. I thought this would be the perfect opportunity to make some headway with creating a mobile app.
We ended up hiring the intern and it was off to the races!
I was already familiar with a few pieces of the tech stack we are using to create the app. But, I have also been learning quite a few new things.
Here’s what I already knew:
- Git & GitHub
- VS Code
And here’s what was new:
- React Native
- Collaborating (more on this below)
Collaborating with others
I have built quite a few websites over the years. In doing so, I have worked with many people involved in different stages of the process. But I never needed to share code in a way that would require a collaborative development process.
This is where GitHub has been a tremendous help. Since we have private repositories, I setup a project and added our intern so we could work together. This also meant we had to be in regular communication, and make sure we had a clear process so we weren’t doing conflicting work.
We are using separate branches for design and development, as well as for testing new features, then merging our changes into the main branch. Expo has an app that we can publish to to preview the app on various devices. Using this method of development, we can always keep a stable, working version of the app on the main branch while we create and test new features.
A million small decisions
The biggest thing I have learned through this process is how many decisions need to be made. There is so much more to building an app than creating the functionality and how it looks. The way the user interacts with the app is a major consideration. Every action a user can take needs to be taken into account. This happens somewhat naturally along the way, but still needs to be intentionally thought about during development.
Eventually, my goal is to create a design system around how we design and develop our apps. Then, as we create new apps in the future, we don’t have to start from scratch each time. Hopefully, the process will also evolve to become more efficient as well.