Live data from Hacker News

I quit Android Development after 10 years and what I plan to do now

levelup.gitconnected.com

11–20 of 39 posts

Re: I quit Android Development after 10 years and what I plan to do now

#11

I am also an Android developer for over a decade. One thing I dislike about Android development is the fragmented way to do things. There was the support libraries v4, v7 and now the jetpack or androidx.* libraries. My UI is composed of different namespaces like androidx.drawerlayout.widget.DrawerLayout and com.google.android.material.appbar.MaterialToolbar. This is just confusing. Also you need to choose MVC, MVP, V…

> Also you need to choose MVC, MVP, Viper, MVVM, AAC, RxJava, and now Jetpack Compose which completely is different compared to other architectures.

Insofar as MVC, MVP, Viper, and MVVM - the vast majority of places I know of use MVVM. I can't think of many using MVC or Viper (a form of clean), and MVP is mostly used by older apps. Some places use clean architecture, which MVVM can work in conjunction with since the concentration is on different things.

Also most new projects I know of use coroutines and flow over RxJava, and plenty of RxJava projects are migrating to this as well.

Just like Clean can work with MVVM, so can Jetpack Compose - you just have a StateFlow (or LiveData) in a ViewModel with the UI model of the screen to display. So Jetpack Compose can work with MVVM, it is just a shift in thinking - and unidirectional data flow is being picked up for non-Compose Android projects too as it can make testing easier - instead of needing to fully rely on Espresso to test UI features, you can complement those tests with lots of JUnit unit tests on the UI model feeding into lean lifecycle components. Compose isn't different than MVVM, it can work with MVVM, it just modifies how MVVM is used.

Compose is also similar to reactive UI that other (non-Android) platforms use.

Re: I quit Android Development after 10 years and what I plan to do now

#12

I am also an Android developer for over a decade. One thing I dislike about Android development is the fragmented way to do things. There was the support libraries v4, v7 and now the jetpack or androidx.* libraries. My UI is composed of different namespaces like androidx.drawerlayout.widget.DrawerLayout and com.google.android.material.appbar.MaterialToolbar. This is just confusing. Also you need to choose MVC, MVP, V…

As a long time iOS dev who later took on Android, I share the frustrations of platform fragmentation and messy namespaces. I’ll also add that compared to iOS, on average on Android you’re reaching for third party libraries a lot more often which comes with its own set of frustrations. Not that iOS dev is perfect either, but as a whole I feel far more productive there than on Android. Haven’t yet tried Compose but it…

Even as a mere user, I don't think I've ever encountered two Android apps that quite looked or felt the same. It's such a janky platform...

Re: I quit Android Development after 10 years and what I plan to do now

#13

Earlier quoted context omitted.

As a long time iOS dev who later took on Android, I share the frustrations of platform fragmentation and messy namespaces. I’ll also add that compared to iOS, on average on Android you’re reaching for third party libraries a lot more often which comes with its own set of frustrations. Not that iOS dev is perfect either, but as a whole I feel far more productive there than on Android. Haven’t yet tried Compose but it…

I also develop on iOS and I agree with your comment. Example of this is iOS built in URLSession compared to Android’s deprecation of Volley so we have to rely on a third party Retrofit. The thought of that is just insane to me.

> third party Retrofit

For whatever historical reasons, there has been a flow of Android programmers from Google to Square (and from Square to Google). Square libraries are often written by people who came from the Google Android team. Dagger was written at Square but maintenance was handed over to Google. So technically Square's libraries are third party and Square gets some credit for it all, but it's not totally independent.

Re: I quit Android Development after 10 years and what I plan to do now

#14
The reality is the path towards those levels require scope, and scope is rare due to prices law.

As a principal engineer, my greatest impact was selling stake holders on large projects which created a vacuum for people to level up on.

However, so many companies are highly constrained by either lack of resources or unimaginative leadership.

At those levels, it isn't about technical depth but organizational understanding and strategy to deploy resources.

Re: I quit Android Development after 10 years and what I plan to do now

#15
post #11

I am also an Android developer for over a decade. One thing I dislike about Android development is the fragmented way to do things. There was the support libraries v4, v7 and now the jetpack or androidx.* libraries. My UI is composed of different namespaces like androidx.drawerlayout.widget.DrawerLayout and com.google.android.material.appbar.MaterialToolbar. This is just confusing. Also you need to choose MVC, MVP, V…

> Also you need to choose MVC, MVP, Viper, MVVM, AAC, RxJava, and now Jetpack Compose which completely is different compared to other architectures. Insofar as MVC, MVP, Viper, and MVVM - the vast majority of places I know of use MVVM. I can't think of many using MVC or Viper (a form of clean), and MVP is mostly used by older apps. Some places use clean architecture, which MVVM can work in conjunction with since the…

I have over a decade of experience in iOS dev and I’ve learned that all of the architectures you mentioned except for MVVM are bad advice.

Clean Architecture is a terribly written book with generic, inactionable advice, and where it makes sense, it makes sense for server-side environments in Java, but would result in over-engineering for mobile OSes which have only become more and more tightly integrated over time, therefore encouraging necessary tight couplings in code (e.g. lifecycles of applications, views, and background and concurrent tasks). I’m afraid I don’t think that mobile developers who are advocating this approach are thinking very critically, and are instead imposing a silver-bullet architecture on problems, instead of letting the right solution or architecture emerge from the right problem.

MVVM is also just an augmentation of MVC but it is still inherently MVC—and especially in iOS, the “view model” is really just a model- instead of a view-controller—so I really don’t understand why there are ever programmers who talk about MVVM as if it is different from MVC.

Re: I quit Android Development after 10 years and what I plan to do now

#16
post #13

Earlier quoted context omitted.

I also develop on iOS and I agree with your comment. Example of this is iOS built in URLSession compared to Android’s deprecation of Volley so we have to rely on a third party Retrofit. The thought of that is just insane to me.

> third party Retrofit For whatever historical reasons, there has been a flow of Android programmers from Google to Square (and from Square to Google). Square libraries are often written by people who came from the Google Android team. Dagger was written at Square but maintenance was handed over to Google. So technically Square's libraries are third party and Square gets some credit for it all, but it's not totally i…

Yes I wonder what’s keeping them integrating Retrofit to Android’s SDK.

Re: I quit Android Development after 10 years and what I plan to do now

#17
Ironically what has put me off was the way Android team deals with their Android Java flavour, how clunky NDK happens to be versus the C and C++ experience on Apple and Microsoft platforms, and that for most apps, the mobile Web is good enough for forms over data.

At least Chrome gets more updates than the underlying Android version.

Re: I quit Android Development after 10 years and what I plan to do now

#18
post #11

Earlier quoted context omitted.

> Also you need to choose MVC, MVP, Viper, MVVM, AAC, RxJava, and now Jetpack Compose which completely is different compared to other architectures. Insofar as MVC, MVP, Viper, and MVVM - the vast majority of places I know of use MVVM. I can't think of many using MVC or Viper (a form of clean), and MVP is mostly used by older apps. Some places use clean architecture, which MVVM can work in conjunction with since the…

I have over a decade of experience in iOS dev and I’ve learned that all of the architectures you mentioned except for MVVM are bad advice. Clean Architecture is a terribly written book with generic, inactionable advice, and where it makes sense, it makes sense for server-side environments in Java, but would result in over-engineering for mobile OSes which have only become more and more tightly integrated over time, t…

As far as I know, the biggest use of Clean Architecture in mobile is at Uber with the RIBs architecture, and it’s only applicable there because an app of that team size is closer to an enterprise Java server codebase. Most apps everywhere are not anything like that, and thus should not be using VIPER.

Re: I quit Android Development after 10 years and what I plan to do now

#20
post #17

Ironically what has put me off was the way Android team deals with their Android Java flavour, how clunky NDK happens to be versus the C and C++ experience on Apple and Microsoft platforms, and that for most apps, the mobile Web is good enough for forms over data. At least Chrome gets more updates than the underlying Android version.

How does the rollout of Jetpack Compose compare with that of SwiftUI, any idea?
Post reply on HN