Before you go, check out these stories!

0
Hackernoon logoHow to Accelerate Mobile App Development by@Anatoliy-Iurkin

How to Accelerate Mobile App Development

Author profile picture

@Anatoliy-IurkinAnatoliy Iurkin

Mobile Unit Manager at Sigma Software. 7 + years managing IT teams.

Modern mobile products are the quintessence of the founders’ vision and actual market needs. To be successful, a mobile application needs to continually evolve in order to keep pace with changing market conditions. However, not every approach to application development can ensure such success. 

Our team understands the cost of delayed releases, so we have put together a set of practices and tools that we use to accelerate an initial launch and to update deliveries.

Start with scoping and a minimum viable product

Before we say anything about engineering practices, it is important to note that a properly tailored scope and feature orchestration is one half of being successful. Starting mobile app development with an MVP allows for the validation your product assumptions without the risk of wasting money on developing more than you need. Develop as minimum as possible leaving secondary scenarios as manual work. Your goal is to get the product into the hands of users and check to see if it overcomes their pain points.

Efficient product scope tailoring includes:

  • Clearly state the pain points your product solves and validate that it does the job. 
  • Use prioritization technics based on metrics to make the right choice on what functions to include in the MVP. 
  • Correct your plan based on users’ feedback and iteratively increase value for customers and revenue for the company. 
  • At all stages of mobile app development, it's essential to identify potential risks and blocks for each feature and match them with the most valuable product features. Develop the most valuable and less risky features first. This will allow you to decrease negative impact on product development speed.

Don’t rebuild business logic, use a UI First approach

You rarely can envision how a feature should work when you build something new. It requires a few iterations to create a balanced experience for the users features. You need to touch it, feel it dynamically, and understand the end-to-end flow. This is when most ideas come about. 

Usually you get to this moment only when the feature is ready. Any changes at this point can double the original estimate and affect the timeline. To save time on rework, we follow the UI First principle. It means that we produce fully implemented UI that can be reviewed, tested, and tweaked before we wire real logic and data into it.

This approach unlocks high speed development and reduces the number of bottlenecks in the process. Moreover, it is not just a UI, we do a simulation of user experience with their goals in mind.

Rework of business logic becomes a burden where small tweaks may take forever to fix and with a UI First approach, you save time.

The UI first approach came from the front-end ecosystem and is sometimes dubbed storybooks. We have successfully adopted it for both iOS and Android platforms. Our UI/UX designers work closely together with developers to ensure that a product looks and feels just right in order to fulfill user needs and business goals.

Regarding the Android platform, my colleague has already covered the benefits of the UI First approach in the following article (see in references).

Don’t re-invent the wheel, use popular production-ready components

It is not always a bad idea to reinvent something that already exists, especially when you add something new to it. But when you need something that is already there and works just fine it will just be a waste of time. 

We are carefully monitoring best tools and frameworks for modern app development to integrate them into new projects painlessly. For example, if an application has some kind of authentication flow, there is almost no reason to write your own auth solution.

Using one of the most popular solutions (e.g AWS Cognito, Auth0, or Firebase Auth) not only speeds up the development, but also reduces the amount of bugs and, most likely will be more secure than your own.

The authentication solutions mentioned above are called identity providers: they create, maintain, and manage identity information while providing authentication services to mobile applications. In addition to identity management, they can simplify the implementation of complicated functionality, such as role-base access control (RBAC). Also keep in mind that GDPR compliance has never been cheap and easy, so it is better to rely on mature products.

Using popular solutions is not only suitable for identity management. Another good example is implementing chat functionality inside an application, which is always error-prone and complex if you try to create your own instead of using an existing solution. To mitigate these risks we use products like Sendbird or Opentok and focus on the domain logic of the product. The same goes for analytics – you can use Firebase or a similar solution, which will give you a lot of insight out of the box without investing in the development.

Check implementation options in parallel, feature toggle with config service 

During the software application development process, we often face situations when we need to make a release, but certain functionality isn't ready yet. To avoid postponing the release, we heavily utilize feature flags or toggles so we can disable certain features and release the application. This technique could also be used for A/B testing when you want to validate an approach or idea.

A good example of this kind of service is Firebase Remote Config. However, it's not necessary to use Firebase and you can easily write your own config service from scratch on any platform. We often use AWS Lambdas for this kind of service. Additionally, a config service can provide you with the possibility of using feature environments for cases when you want to test specific functionality in isolation. If you want to learn more about feature flags, I suggest reading the following article.

Consider cross-platform solutions

When speaking about modern mobile development, you can't slide over the cross-platform solutions like React Native or Flutter. Choosing a cross-platform framework can decrease your time to market (if you have both Android and iOS apps), however, this way has its own drawbacks. It is always crucial to understand if your app is suitable for cross-platform (e.g if it heavily uses platform-specific features like Bluetooth or sensors, most likely choosing cross-platform solution would not be the best decision).

Implement Continuous Deployment

Consider setting up Continuous Deployment to speed up application releases. Popular and well-maintained products I highlighted in References paragraph. Many time-consuming tasks (e.g. taking screenshots of your application on different phones and tablets) can also be automated with CD tools and save you a lot of time.

Make sure you have an efficient cross-functional team

A problem which we often face is communication between mobile and back-end teams. Most Mobile teams don't understand how back-end works, while back-end teams are not aware of mobile team needs. In these cases, one of the possible solutions is to add some engineers whose competencies include both stacks.

This will allow you to eliminate communication problems and speed up the development process. From the project management perspective, we see a decrease in the number of tickets sent back and forth. Furthermore, we encourage T-shape development in adjacent web development basics for mobile developers and have seen good results from such practices. 

Over the years working on improving collaboration and communication in our team, we coined the following rules that we adhere to at all stages of application development:

  1. Work should be broken down in stories and tasks, every task shouldn't take more than one day to complete with a clear outcome.
  2. Every pull request should be as small as possible - meaning that it solves one particular task and doesn't break anything.
  3. Every pull request should be reviewed and merged not later than one day after submission.
  4. The simplest branching model such as Github flow should be used.
  5. All team members should communicate offline whenever possible, since it is the fastest way to get things done. Create a shared space for project knowledge and set up open communication channels.

Tune to Accelerating Mobile App Development 

After you read this article it may look complicated to integrate one or more of these practices into your settled software development process. Additionally, some of the techniques like feature toggles and a UI-first approach will require investment in the architecture of your mobile application.

However, even if all these efforts may seem too much for you, don’t back down. Think about the benefits – new features and updates available to users without extended delays, fewer bugs, your team working better together – isn’t it worth the effort? Give it a try.

References

  1. The article by Sergey Bakaenko UI first approach
  2. Popular and well-maintained products for Continuous Deployment: Travis CI, Bitrise CI, Gitlub CI; on iOS projects, we also use Fastlane

I gratefully acknowledge the help of Sergey Gubar and Andrey Moskvin in writing this article.

Tags

Join Hacker Noon

Create your free account to unlock your custom reading experience.