A Medium publication with community-written articles on Android development, Kotlin, Flutter, and mobile app tooling.
HN links it for Android and Kotlin how-tos and opinion pieces; commenters use it to cite Android privacy changes and Kotlin language details.
As a professional dev who has made a career out of working in oop languages and codebases, I agree, and it took me far too long to realize that when it comes to oop, the emperor has no clothes.
To this day, oop advocates can't even agree on what oop even is or means.
Apparently oop as envisioned by Alan Kay was supposed to work like cells in the body that pass messages between each other and take actions independently.
Why? Who knows! It was never really explained why literally one of the most complex systems imaginable, one that we still really have very little idea how it even works, should be the model for what could and should probably be a lot simpler.
Today's modern oop languages are probably very far from what Kay envisioned (whatever that was), but it's remains unclear why classes and objects are "better" than the alternatives.
And before anyone goes and comments aksully code organization blabla like yes but code organization can be great or shit in oop or fp or procedural codebases, it has nothing to do with the "paradigm".
Let alone that the entrenched, canonical, idiomatic coding styles of most modern oop languages encourage state, mutability, nulls, exceptions and god knows how many trivially preventable entire classes of errors.
Granted, most have now started to come around and are adopting more fp features and ideas every year, but still.
---
EDIT tacking on other old comments:
---
Don't get me wrong, writing programs like cells in the body that pass…
A lot of the results of this analysis are a consequence of actually good UX in dependency management.
In NPM publishing a library is really easy. To compare with java, I recently had to follow a [three part medium article](https://proandroiddev.com/publishing-a-maven-artifact-3-3-step-by-step-instructions-to-mavencentral-publishing-bd661081645d) to publish. NPM: one login, one cli command and you're done. That lowers the bar to create a library, there are a lot of low quality libraries, but there's also much more diversity and really cool libraries. In java I've seen a lot of copy pasting. In Node you just create a library. You can worry a lot about 1k dependencies, but a lot of those will be one liners.
In node, it's basically impossible to have conflicts with dependencies. Again if we compare to Java. In Java namespaces are global, if there are two libraries sharing the same package name they will collide. That makes deep dependency trees actually a liability. I've seen recommendations of not using guava if you are writing a library, because they change the api so much that it will most certainly give problems if your user wants to use it as well, so much for a library. In Node, in contrast, if there are two different libraries that require different versions, they will each have their own dependency version. That has the cost of space, but there it saves hundreds of hours on conflict resolution. You can even have two different versions of the same library with different…
While Java GC on Android may not always be optimal in regards to memory utilization (given that there are other concerns) and AFAIK doesn't allow tuning like you can do for enterprise Java apps it seems like quite a few improvements have been made over time and many GC implementations have resulted from this: https://proandroiddev.com/collecting-the-garbage-a-brief-history-of-gc-over-android-versions-f7f5583e433c
Personally, i'd look at how common cross-platform apps are and how many of the frameworks (like Ionic and React Native) don't always use the native system UI in an efficient manner.
It seems a bit like running Electron apps on GNU/Linux and being puzzled about where all of the RAM goes.
I actually wrote about this fairly recently, although it's aimed squarely at Android developers: https://proandroiddev.com/what-i-look-for-in-a-junior-android-dev-3581ebd9f213
tl;dr: I want someone who is excited by the platform and has shown a willingness to learn, as well as some autodidactic tendencies.
Sure. But that doesn't look helpful to me as it works only sometimes…
Even the syntax can be made less awkward[1] this look still like a wonky hack to me where the user can do way to much wrong.
[1] https://proandroiddev.com/til-when-is-when-exhaustive-31d69f630a8b
Have you attempted cross platform development with Kotlin [1]? If so, how is your experience?
[1] https://proandroiddev.com/we-built-our-ios-and-android-apps-in-java-kotlin-one-year-later-b0df37274b75