How to break out of a tech rut
Does your app feel like it's reliving the same day over and over again? Or maybe you're stuck in an endless loop of reporting the same numbers and not seeing any progress? Does your tech team have a severe case of the development deja-vus? Three of Apadmi's experts reveal three easy ways you can easily break out of a tech rut and move on to better things.
Finesse your A/B testing
Our shrinking attention span has been a topic of heated discussion in several industries for years. But, whether you believe user drop-off from apps is due to our attention span shrinking or the fact that we're just facing information overload, one thing is for sure: You need to make sure every phase of your user journey is optimised and that the user journey is relevant, helpful and logical.
It's the perfect time to get an answer, once and for all, whether your screen, images, CTA's or user flow is performing the way it should, by implementing A/B testing. A/B testing compares two different versions of an app or a digital product against each other, under the same circumstances, to see which one performs the best. This practice can give your users a much better experience and stop them from going round (and round and round) in circles.
Asking your team what they think should be tested or checking for patterns in users behaviour is a great place to start. Here's what to look for:
The devil is in the details: Do all buttons have pressed states? Does your app flow from screen to screen? Are all animations as smooth as they could be? Little details like this mean more than you think to users and stakeholders. An overall sleek appearance can significantly impact user retention, revenue, and other relevant metrics.
Are you treating your Android and iOS apps identically? These two operating systems are completely different, both aesthetically and functionally. Making an app identical on both systems most likely results in a worse experience for some users. Testing what works best for each platform and tailor-making the experience can have a remarkable impact on the end-user.
Anything can be tested, but that doesn't mean you should test everything simultaneously. Make sure you don't use too many variables in one experiment and prioritise the essential elements that will make the most significant difference. For example, the registration flow or subscription message is usually an excellent place to start.
- Jess Hill, Senior Product Marketer at Apadmi
Automate the reporting process
It’s estimated that Data Scientists spend up to 80% of their time on repetitive and manual tasks, such as obtaining, preparing, and cleaning data that is later added into static reports, which may be outdated by the time people read or use them.
Copying the data into weekly or monthly reports can be very time consuming, prone to errors, and can also lead to the data being significantly out of date by the time the report is viewed. Building a dashboard to replace a static report and automating processes can have several benefits:
The data updates automatically - think about what you can achieve with all of the time you'll save!
They are interactive - allow your colleagues to explore the data in brand new ways.
Protect your data - manage who has access to your dashboards and revoke access when they no longer need it.
Also, if you are using Firebase or Google Analytics to monitor your app or website did you know that you can link your data to Data Studio for free.
- Allan Lehan, Head of Data Science at Apadmi
Apply tools that make your life easier
It's always worth taking a step back and thinking if tools can be brought into the codebase to allow for efficiency gains in development and testing.
Here are some that we’ve had a great time with in the past.
R.swift: R.swift is an excellent tool for bringing strongly-typed resources to Swift projects. If you're an Android dev that hasn't worked with native iOS/ macOS projects before and wondering why this is a problem that needs solving - you're right to wonder! By default, all resources such as localised strings, images and colours are referenced by string identifiers. That means no auto-complete and makes it easy to make mistakes when renaming identifiers or resources. R.swift solves this by borrowing an idea from Android and generates an `R` struct at build time with a strongly typed mechanism to access resources that you can use anywhere in your app! It also has a validation tool that can be run as part of your unit tests to confirm that the resources referenced in interface builder files do exist. Neat!
Mockingbird: Using mocks is a powerful technique to help write consistent, thorough and valuable unit tests. Unfortunately, at the time of writing, Swift does not support generating mocks at runtime, so equivalent tools such as Mockito or Mockk are commonly used in Java/Kotlin projects. iOS developers are left with a couple of options:
To write mocks manually or use some tool to generate mocks at build time. No one wants to make more work for themselves writing mocks manually, so tools like Mockingbird comes to the rescue!
Other options out there include SwiftyMocky, Cuckoo, SwiftMock or even a plugin for Xcode to generate mocks in a more ad-hoc manner. Mockingbird is my pick of the bunch in terms of speed of generation and the quality generated. It's also the most fully-featured of the ones mentioned.
We very much recommend looking into using any mocking framework to aid in writing unit tests, but we’d say Mockingbird is the best one available at the moment!
- Patrick Cavanagh, Senior Software Developer at Apadmi