The world is changing dazzlingly fast. The most valuable and important resource now is Time. Success belongs to those who can manage time better.

What does time mean in product development? You have to release your features as soon as possible, i.e. improve your time-to-market metric. I am sure you have heard this term, but let me remind you what it is. Time-to-market is the time during which a team develops a feature from the idea and delivers it to end-users.

How can we improve time-to-market? There are a lot of different options, and one of those is to reduce the time spent on manual regress tests. …


Image for post
Image for post

Modularization articles cycle:

Hello everyone!

Let’s continue to dive into Modularization! If you haven’t read the first part yet you should do it right now :)

”Brand new life”

Now we will try to gradually implement the above-mentioned (in the previous article) wishlist. Let’s go!

DI Improvements

Let’s start with the DI.

Reducing the number of scopes

As I wrote above, my previous approach was about having a separate scope for every feature. In fact, there are no big benefits from this approach. You’ll just get a large number of scopes and a certain amount of a headache. …


Image for post
Image for post

Modularization articles cycle:

Hello everyone!

Not so long ago we have realized that a mobile application is not just thin-client but it’s a huge diverse logic which we need to organize. That’s why we have been inspired by the ideas of Clean architecture, we understood DI and we learned how to use Dagger 2 correctly, and now we can split any feature into layers with closed eyes.

But the world is changing, and new challenges are coming out after old ones have been resolved. And one of the issues in Android world is modularity, or to be specific single modularity of the apps. Usually, you find out the problem when your app’s build time “flies into space”. And most of the articles and talks about Multi Modularity start with building time problems (references to Russian video 1 and video 2).
But many developers forget that single modularity affects not only build time but also app architecture. Now, let’s answer the following questions. How big your AppComponent is, how many lines of code does it have? Have you ever seen cases where feature A calls the Repository of feature B, but you feel that it’s not a good solution? Do those features have any concrete and accurate contract? And how do you build communication between features, i.e.are there any rules for that?
We think that we have resolved architectural problems by dividing the app into a few vertical layers (presentation, domain, and data, generally). Yes, dividing into vertical layers works, but is it enough? No, because at the horizontal level of our app there are no rules. And this task cannot be fixed only by dividing to packages or a more thorough code review. …

About

Eugene Matsyuk

Google Developer Expert, Software Expert at Kaspersky

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store