How I learned that there’s more to building an iOS app than just writing code
We were asked to build an iOS app and a web app that analyzes data from cities such as populations, cost of living, rental rates, crime rates, park (walk score), and many other social and economic factors that are important in deciding where someone would like to live. This app would present such important data in an intuitive and easy-to-understand interface.
The team consisted of 4 web developers, 3 iOS developers, and 3 data scientists. I think we were all itching to get coding when we were told about the project but we couldn’t, not yet. Yes, the app had to be built but there was more to it than writing code.
We started with really understanding what was to be built. We wrote out user stories and then split those user stories into smaller sections that would then be a feature in our application. I had done user stories before but breaking down the user stories into small features was new to me. It really made me think about what was expected of me, plus it helped us split up the features between the team.
I was eager to start coding but thinking through the project was very helpful. For Example, one user story started out very broad: Integrate MapKit so the user can search a location and see the results on the map. Just by reading this sentence, you would think, this is going to be easy. We have to add MapKit and allow the user to search, that can’t possibly be hard at all. But as I was sitting there trying to break down this user role into smaller components I realized that there is much more to this than I first thought. This was my final breakdown
- Add MapKit
- Add a search bar to the view
- Have a TableView to show the results of the search
- Start to show selections with each letter a user types in
- Allow the user to select a result from the TableView
- Adjust MapKit so only cities show up, not any other item on the database
- Dismiss the TableView and show a pin on the map
- Keep the search bar in case the user wants to do a different search
- Have an additional window so the user can see more information about the city that they just searched.
After thinking about the MapKit implementation it was no longer easy, now it was broken down into smaller manageable components but it was more than just adding MapKit to the app.
The next process of the application was to actually start coding our application. I was tasked with integrating MapKit into the application. It was at this point that I realized how planning was essential to a large application such as this one. Because I had broken it down I could tackle each step, one at a time. I started with integrating MapKit. I found this MapKit tutorial by Ray Wenderlich. Adding MapKit was as simple as saying import MapKit the rest was not as easy. Slowly I chipped away at my broken down list.
Current Project Status
At the time of this post, we have an app that allows a user to authenticate themselves using Okta, they are able to search for cities and the cities will be highlighted on the map, The app is connected to the Data Science endpoints to get city detail. It doesn’t seem like much but when broken down into small chunks there was a lot of coding that went into what we currently have built.
Working with a larger team had its challenges, once we had our UI implemented we had to wait for the endpoints to fetch the data for our cities. We could only do so much without knowing how much space was going to be used up and what the information was going to look like. I didn’t want to stop working because we couldn’t get our data. I followed the progress of the data scientists. It turned out the issue was something with the deployment site. The data could be reached locally. I had never had to run a server locally on my computer, but I was willing to give it a try. It took me a few days, about as long as it took to get the site deployed. I can now say that I am able to run a server locally. I also learned how to communicate with other technical developers about other aspects of a multi-platform project.
I can see this becoming an app that will need to be constantly connected to the internet, or it will need to have storage allocated for cached data. The way it stands at this moment it is a useless app if the user doesn’t have network data or is connected to the internet in some aspect. This should be addressed to make it a great app.
Future for the App
There are so many features that an app like this can have. For example, allowing the user to save locations. This app can also be connected to a weather API so that the user can see the current weather and a weather forecast for the city. With time this can be a useful app for anyone that is looking to relocate, as they will be armed with all the necessary data to make an educated move.