(Swift) How I start my own app project as a self-taught developer?

Introduction

As a developer, one of the most exciting things is to create the application that I really love or want to achieve. Before we jump into the article, let me introduce a little about my background. Please bear with me.

I start my Swift journey in late 2019 because my college program has one course which was related to iOS application development. With this opportunity, it opened my Swift & iOS learning journey and encourage me to become an iOS developer. In the article, I will list the resource that I use for learning Swift.

In this article, I will use one of the projects which calls NBA Stats Geeks to discuss how I start my own iOS project.

Various Phases of Mobile App Development Process

Personally, I divided the application development processes into few phases.

  1. Researching
  2. Wireframing
  3. Evaluating Technical Feasibility
  4. Prototyping & Designing
  5. Developing
  6. Testing
  7. Deploying the app

Those phases/stages might slightly different from people to people or company to company. But for myself, I follow up that procedure. Let discuss each phase and how I approach it.

1. Researching

Before deciding to make the NBA Stats Geeks this application, I spent 2 days doing research about the concept of my app and current market. I asked myself the following question:

  • What is the purpose of this application?
  • Who is my targeted user?
  • What makes the difference between my application and the other competitor.

Take the NBA Stats Geeks as an example, because I am a big fan of the NBA and I really like to follow up each player's or team's stats. But current market's sport medium. They merge different sports into one platform. It doesn't mean their app isn't good enough, for a certain group of people they are willing to use more specific functionality of the application. That is one of the main reasons that wants to build up NBA Stats Geeks.

2. Wireframing

In the wireframing stage, it helps the developer or company to clear up the application's features and functionalities. Some the people might also make a storyboard or roadmap to demonstrates how the user will navigate/explore the app. Within this stage, can helps the company or indie developer to clarify how the user experience will be addressed.

Screen Shot 2021-05-27 at 7.29.25 PM.png

Partial screenshot of my NBA Stats Geeks wireframe

Some people may ask: Are wireframing really need it? Most of the company has a design department that focuses on delivering the wireframe/prototyping of the application. This stage is inevitable. I also benefit from the wireframing stage as an indie developer.

When developers develop their application without this stage, it often happens that developers lost in their app development. What does it mean? For instance, when developers finish one view of the application, they often ask themselves: "What is the next?". It doesn't mean this situation is bad but most of the time in the very last of the developing stage. They will discover the original idea of the application is far from the current application.

Note: It is nice to have some knowledge about UI/UX design as a developer. It can address the application's content more accurately. BTW, I also not a professional designer, but I really enjoy design the UI/UX of my application.

Nowadays, there are several tools that can create the wireframe effortless. Following is some resource that I use for wireframing.

3. Evaluating Technical Feasibility

In this stage of the application development, it needs to make sure whether the backend system would be capable of supporting the app’s functionality or not. Base on this project, I need to figure out where can I get the data by APIs.

On top of that, we also need to decide which platform or format/device we want our application deployed.

For instance, when I start this project. I list out some data that I want to present to the user and go to find out the suitable APIs on the internet. In the beginnings, there are several candidates on the rapidAPI.com such as:

It will also take some time to read all the documents to figure out that API is suitable for the project or not. Eventually, I discover those APIs not really meet my requirement so I turn to the SportRadar.

4. Prototyping & Designing

As I mention, I am not a professional designer so I merge this stage into the wireframing stage. But the thing I can do at this stage is to think about each transition of the views or the colour theme of the application. What kind of font and size that I want to use for each view etc.

5. Developing

This stage might happen right after the developer or team finalize the app idea. The development stage might be divided into different sections. Some people will list out each main functionalities as the sprint. Within the sprint, they will try to finish that functionality and testing.

Personally, when I develop my application, I like to break down the big task into small pieces. Then using the playground to develop the partial code of my application and test it. After making sure the function is working, I will implement it into my current project.

For instance, one of the important parts is to fetch data from the APIs. So in the playground, I try to write each model that I will use in the future. In the same time, also write my personal NetworkService class to handle all the network request.

Screen Shot 2021-05-27 at 8.10.36 PM.png

6. Testing

The testing stage is a crucial part of application development. If the bug is found at the very end of the staging. It will cost more money and the effort to fix the bug.

During this stage, a developer can write the unit test for testing their function or writing the UI test to test out each UI response correctly. We even can write the user test to find out some but that we can not find it within those two tests.

Screen Shot 2021-05-27 at 8.18.51 PM.png

Partial Screenshot of the user tests for my previous application.

7. Deploying the App

In this stage, the developer or company will decide when the application will release on the platform. Before deploying the application, people may buy some advertisements on each platform to increase the impression. But it really depends on the team and company. But the deployment stage isn't the last mile of developing the application. Most of the time, we need to make some changes according to the user's feedback or the company's goals. On top of that, maintenances of the application are also part of deploying the app.

Swift Learning Resource

At the end of the article, I want to list some resources that really help me during my development journey. Their kindness and share that valuable knowledge, really helps me overcome a lot of difficulties during this journey. I would like to share with everyone who is also into iOS development and wish it will help this community grow. (The list order is according to alphabet)

All the Mark's SwiftUI books are super helpful. Mark uses a simple way to explain the concept and the content very clearly. English is my second language, and reading his book is really not a problem for me. It also provides plenty of screenshots to explain all the concepts.

Through Chris Channel, I learning not only Swift fundamental knowledge but also follow up some project-based tutorials. Each video has elaborated how and why it code in that way.

At the beginning of the journey, I followed up on Paul's 100 Days of Swift. It helped my build up the fundamental of Swift language.

The way that Stewart conveys his knowledge of SwiftUI & Swift is fantastic. The channel contains the fundamental part of the Swift language. The high quality of his video is amazing, each video let me learn a lot. He has a variety of content in his channel.

Small peek of my new application:

Simulator Screen Recording - iPhone 12 Pro - 2021-05-27 at 21.55.13.gif