303 karma · joined August 31, 2007
As a wiser man than me once said, do not anthropomorphise the lawnmower.
you mean like native mobile apps?
Android has been my favourite platform to work with and has offered the best developer experience I’ve found. It’s not particularly close. The SDK has improved significantly over the years, the IDE is wonderful, the feedback loops are short, Kotlin hits the sweet spot between functional and OO code, and Compose is a joy. Although yes, Gradle is a sore spot.
IMO the reason why Google have gone all-in on Android Studio is because it’s really, really good. Compare it to Xcode. If you’ve never used a JetBrains IDE, it can feel a little unfamiliar, but I’ve never felt as productive in any other programming environment.
But certainly if I were to add new features to an existing Java codebase I’d use Kotlin. The interop between the two is fantastic and for me the null safety alone makes it worthwhile.
It’s not hugely helpful for a UI-bound application which occasionally needs to move some work into a background thread to cut down on UI jank.
Kotlin’s suspending function syntax effectively lets you know which operations are going to (potentially) take a while, so you can make sure the UI thread isn’t blocked, and also make sure you’re communicating to the user that something is happening.
If it's an issue with existing devs refusing to skill up, they can just write their ancient antiquated Java until they retire, it'll still work just fine alongside the new Kotlin code. But in my experience it's rare that even the most institutuonalised Java dev doesn't appreciate the nullability support at least.
If you need another tool or another component you can just search for it on the internet and if it's available you can have it in seconds. No trips to a shop that may or may not have what you need, or queueing, or explaining what you need to a shop assistant who couldn't really give a shit, or being upsold on some other thing that you don't really need or understand, etc.
Also, crucially for me personally, there's no mess that needs to be tidied away before the rest of the family come find you. There's no storage area needed for half-finished crap, odds and ends you can't decide if you need in future, potentially dangerous power tools, that kind of thing.
Building software is like taking all the fun parts of DIY and leaving all the boring / dangerous / physically taxing parts behind, and you can pretty much do it wherever you have a power supply and internet connection. That's why I first loved it and why I continue to do it today.