In the workflow part 3, we have reviewed the development process for Android. We paid close attention to estimates for mobile applications, clear architecture, and submission and post-release activities. In this part, TRIARE offers a focus on iOS mobile development and shares insights from our lead-developers.
Why clients refer to TRIARE for iOS development
We are value-oriented
As we start, let us get it straight: before developing each product, TRIARE asks how this or that feature adds business value for a client. Taking full responsibility for your product as a professional offshore company, we elaborate on such needs as delivery time, cost, and quality.
Trilemma: rapid and quality development cannot be cheap
After completing 70+ projects, we are definite: one can’t achieve all three. Either we develop a project within the discussed timeframe and budget or quality might struggle. Secondly, we give you bulletproof business advice:
- We validate the idea itself
- We recommend a business model to be cash positive
- We ensure that the product will serve users not vice versa
Usually, a client says:
“I have this idea for an app. Please do it.”
It doesn’t work that way. So we reply in a pragmatic manner: what do you want to achieve? Is it:
- Earn $100K per year?
- Gain 1,000,000 app downloads?
- Provide a reliable enterprise solution for 10 corporate clients?
Developers solve problems.
One given task can be solved with a different approach and time. The result, however, varies too. Our goal is to always find an optimal solution based on the client’s needs. Once we understand the business value to be created, we proceed to formulating business tasks (see more on this in our further articles on project management).
We offer more than competitors
Competitor research example: a game streaming platform for kids
Case study: when developing a taxi app, there can be at least two solutions to visualizing car routes on a map. There is a Socket technology that supports the data exchange channel between a server and services in real-time. Its development usually takes more time than its alternative and requires additional services and permissions from the user.
Another way is to refer to the server every 15 seconds to update the position in the user’s app. Although possible and convenient in most cases, project managers must confirm with the client to choose the most suitable solution. Based on the initial customer request, the development can take between 2 days and 4 weeks.
Modern iOS architecture
Alright, the client has approved the project. What happens next? Right, we architect the logic of the app and its dependencies (just like in our Android article). The main architectural pattern in iOS is MVC (Model View Controller). Generally, it’s simple and straightforward, allowing developers to build apps quickly. Its disadvantage, however, is the clutter it creates which influences the readability. It is why a new iOS development pattern evolved: a model view viewmodel or MVVM.
We use MVVM Coordinator to smoothly divide the development logic and its user interface view for the user. This lets us decrease the amount of redundant code lines and, thus, its accumulation in the ViewController.
No need to show off
To cope with this task, we rely on several views and libraries. However, it’s important to stay humble and not load everyone else with numerous options. The goal of developers is to pass the idea of the most suitable solution to the project manager and client and convince them to execute it.
Nowadays, technology is advancing rapidly (hello Moore’s law). There is a new iPhone each year as well as mobile operating systems: 11, 12, 13… iPadOS, WatchOS. Hence, we add several hours to our estimates in the technical documentation for optimizing and adapting the product to the new tech.
Lean and clean development
At first, we at TRIARE built apps on native iOS, and now leverage cross platforms like Flutter and others. We also have a blueprint for all apps called the Base App that can be used for any new project. Why is it important? Based on our experience in outsource development and support as well as outstaff MVP, such a sample helps to automate routine tasks and cut up to 40% of tasks.
Equally, it is crucial to document everything. When a new employee joins the project or another team is going to support the app, TRIARE Base App assists with onboarding and understanding the current state of infrastructure. Moreover, this approach significantly decreases the bug factor which is already a significant pro: it saves time and patience and allows switching between projects seamlessly.
After all, we can deploy many standard features from the Base App already included in Raw Estimation. By now we have validated the client’s idea and can easily make an “I have this idea for an app” a reality.
Painless submission and post-release support
We must be able to not only develop a stable product but also support it and make the application last. The stability of mobile applications directly depends on external devices and technologies: the quality of the Internet connection, server capability, and data processing speed.
All information on technical support and restrictions is recorded in our docs, which allows us to highlight the peculiarities of the developed system more accurately. Supporting the “right code” within projects is a priority for every professional app developer. There is a joke in the community:
“Write code as if an ADHD patient would review it.”
It means that with each iteration we review the code to maintain its cleanliness and fluidity enabling a meta-view of the architecture without getting deep into details. As a result, our reliable iOS developers work with Git on a daily basis. Notably, sticking to the Git Flow indeed saves time and diminishes risks of code loss during a merge. This reflects positively on the overall quality of work.
Git Flow that we follow at TRIARE
As a solid dedicated team, we always think about adding business value for the client before even executing the development. Building iOS apps is somewhat similar to Android, although there are a few critical differences. One of them is the MVC model and its MVVM descendant. Enabling code clarity is important for further support.