What Makes a High Quality App?

Ever wondered what are the software development skills you need to maximize your impact? and how these skills are related to your company's business goals?


Nafie

August 23rd, 2022

Engineers are enablers, they have the knowledge and tools to turn ideas into reality.

“Engineers are the hidden enablers of everything that we take for granted in modern life. From turning on the tap, to the smartphones that we check the moment we’ve woken up, to clean energy, to access to medicine, engineers literally design and deliver the physical and digital infrastructure, the services that we rely on every day—even if we are totally oblivious to it.”
-Hayaatun Sillem, CEO of the UK’s Royal Academy of Engineering

Awesome right?!

But as a Software Engineer, how could you build such services?
Specifically in the app development field whether it's web or mobile app development.

How to build a high-quality app?
What makes a high-quality app in the first place?
And high-quality for whom exactly?

These are the questions that I will try to answer here.

I think answering these questions will help you to understand more deeply the impact of the features that you implement in your day-to-day tasks, moreover, it can help you to decide what you need to learn next if you want to maximize your impact.

So here's how I see it, for each app you work on there're three stakeholders:

  • Users
  • Business
  • Developers

Let's try to think what each one would want in a High-Quality app while mapping this to a technical requirement in the app.

Let's start with the users of course, as their needs should be the true north of anything that you do. Here's generally what users care about:

  • UI/UX
  • Performance:
    • App launch time
    • Responsiveness → Cache
  • Stability (No crashes) → Software Testing, Debugging
  • Reliability (No bugs) → Software Testing, Crash and Error Monitoring
  • (Optional) Convenience Features:
    • Offline first experience (Offline Mode) → Data Persistence, Cache and State Management
    • Online Payments

Now it's the business turn, which is typically represented by the Project Manager or Product Owner:

  • Get feedback fast → CI/CD Pipeline
  • Boost users' conversion and retention rates:
    • By being informed about the users' actions → Analytics
    • Marketing campaigns → Push Notifications, Deep Linking
    • Conduct experiments → A/B Testing
  • Scalable:
    • Adding more features fast and secure (without breaking old features)
      • Fast: Allow parallel work → Modularization
      • Secure/Stable (No crashes) → Software Testing, Crash and Error Monitoring
    • Adding more markets (different languages and configurations)
      • Adding Languages → Localization
      • Toggling features for different markets → Feature Toggles (Feature Flags)
      • Different App Identities or Different Clients → White-Labeling

Finally, we get to the developers:

  • Easy onboarding → Setting up the development environment on a new machine, Fewer third-party dependencies
  • Readable and understandable code → Clean Code, Static Code Analyzers (Linters and Formatters)
  • Fast Build times → Modularization

I hope now you have a better overview of most of the requirements of a high-quality app, and their impact on the users, business, and developers.