Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "android compose"
-
First rant here. Long, but please bear with me:
So after slogging my ass off in various early stage startups for over 4 years and keeping up with the almost non-existent development process, I joined an organisation which has some of the brightest and smartest minds I have had the pleasure to work with.
Mind you, this company is the market leader in it's field and has a 50+ people in it's tech team and the quality of work is pretty impressive.
Now for this week's sprint, I was asked to develop a feature which already exists on the Android app and they want to introduce in the iOS app too. The backend APIs are all in place and all I need to do is build it with virtually no dependency. My PM asks me to start with the UI and ask the backend dev for the API list whenever I need them.This is where the story turns.
For my first API, I go to the backend dev and ask him to share the API documentation and he looks at me as if I have asked him to dance the fucking cha cha. With a straight face he tells me that, 'The organisation doesn't maintain any kind of documentation for it's APIs.' Now this really shocks me. Even in a 5 men tech teams I have worked on, we have always maintained a spec doc for the APIs and this is a company which is known for it's tech practices.
Being the new guy I compose myself and ask if they have anything for me here: Postman collection, a workflowy doc, a goddamn txt file; anything which might help me, and he laughs at my dilusion and says no.
Dejected, I ask for a way to get the APIs and I am told that there are only two ways: either I keep bothering the Android dev for the APIs(No, I don't have the access to the android repo and nor am I gonna get it) which he had worked on 4 months back or I install the prod app on my phone, and use Charles to get every fucking API which is really, really annoying.
I thought writing out this rant would make me feel better, turns out it just made me angrier. Why the fuck can't they document such an important thing!?13 -
Whats the state of mobile development skills demand atm?
Thinking of getting into crossplattform development with flutter or kotlin or enhance my dev skills in native android development (10years exp.) and create me a base project with jetpack compose.
Advice appreciated.3 -
So I made an update to my React Native app. I changed UI of a couple of screen, added a few animations here and there, refactored how my graphQL resolvers work in the backend(no breaking changes), changed how data gets loaded into the database etc.
It worked in dev so I figured hey let's deploy it. Today is(was because it's now 3am but more on that later) a national holiday so no one goes to work so no one will use my app so I have an entire day to deploy.
I started at 15:00(because i woke up at 13:00 lol). I tested the update once again in dev and proceeded to deploy it to prod. I merged backend to master, built docker images, did migrations on the db, restarted docker-compose with new images. And now for the app. I run ./gradlew assembleRelease and it starts complaining that react-native-gesture-handler is not installed. Ugh, rm -rf node_modules && yarn install. It worked. But now gradlew crashes and logs don't tell me anything. Google tells me to change a bunch of gradle settings but none of them work. Fast forward 5h, it's around 20:00 and I isolated the issue to, again, react-native-gesture-handler. They updated from 2.2.4 to 2.3.0 which didn't fucking compile. 2 more hours passed (now 22:00) and I got v2.3.1 working which fixed the problem in 2.3.0 but made my app crash on startup. YOUR FUCKING LIBRARY GETS 250K WEEKLY DOWNLOADS AND YOU DONT EVEN BOTHER CHECKING IF IT COMPILES IN PROD ON ANDROID?! WHAT THE FUCK software-mansion?
After I solved that, my app didn't crash. Now it threw an error "Type errors: Network Request Failed" every time I fetch my legacy REST API(older parts use rest and newer use graphql. I'll refactor that in the next update). I'll spare you the debugging hell i went through but another 5h passed. Its 3am. My config had misspelled url to prod but good for dev... I hate myself and even more so react-native-gesture-handler.3 -
How many jobs do you see asking by Android Compose. I'm very exciting studying it and I believe that is a good way to get a job from out my country (BR)1
-
Why are devs at google making it hard for android developers? They release libraries so frequently and completely overhaul everything. It was fine till a limit. Now again they are releasing jetpack compose which is a completely new thing. I don't have problem learning new things but the rate at which they release new stuff is far swift than other frameworks. For example they release a new dependency injection hilt while recruiters still look for dagger 2. Android is just getting overwhelming. What are your thoughts?4
-
Any android devs here? I created a simple interview tech assignment app with 2 screens (item grid and item details) with latest architecture (Compose, Retrofit, Coil, Room). Looking for a review or any kind of feedback/ideas regarding what needs to be fixed/refactored. Repo is here: https://github.com/appdevv/DemoApp
If you want, feel free to pull the repo and just make a pull request with your comments.5 -
Begin to hate Java, moving to kotlin soon . For android development at least with Jetpack compose. Java is deprecated in almost every API.
-
Why the fuck would Google promote Jetpack Compose as a stable toolset when it doesn't even support a basic feature such as a scrollbar.
A. Fucking. Scrollbar.
LazyColumn can't even come close to being as powerful as Recyclerview.
Here's an idea, before launching something and touting it as something usable, and encouraging people to drop the old, battle tested tool for the new shiny one, how about you make sure the new doesn't lack features present in the old one?
Seems logical, right?
Methinks somebody was just looking for a promotion because, clearly, Jetpack Compose is a half-baked product.
Now, developers will have to suffer because project managers will read about the new framework and ask devs to use it, then wonder why the app is suffering.2 -
so am switching jobs as an Android dev from a company which made android libs (using almost 0 external dependencies and mostly java) to a company which makes android apps( and is probably using either rx/guava/ribs/hilt etc or the more fancy hilt/compose/coroutines/clean-arc etc. its either one of them depending upon the maturity of product)
B2C folks use tons of libraries in favor of delivering fast but learning about those libraries while taking new tasks and fixing bugs CAUSED by those libraries ( or their inappropriate usage) is a big PAIN IN THE FUCKING ASS.
I remember i had once became such a weird dev coz of my prev company ( before the current libraries one, which was also a B2C) .
on weekends i would come up with a nice app idea, start a new android studio project, and before writing a single line of useful code, i would add a bunch of libraries, gradle scripts and extensions .
that ocd will only settle once all the steps are done and i can see a working app after which i would write the code for actual code for feature implementation.
granted that these libs are good for creating robust scalable code, but most of the times those infinite kayers of seperation, inheritance and abstraction are not really needed for a simple , working product.
:/
i have also started reading about rxjava , and although i am repulsive to this library due to its complicated black box like structure, i find its vast number of operators nd built in solutions very cool.
at the end of the day, all i want is to write code that is good enough for monkeys, get it shipped without any objections and go back home.
and when you work on a codebase that has these complicated libs, you bet your ass that there will be thos leetcode bros and library lover senëõr devs waiting to delay the "go back home" part 😪2 -
I've just joined a new company out of despair after several month out of jobs without being able to even get interviews.
I've been warned about the code being a bit behind with modern Android stack, they needed to migrate from rx to coroutine and compose is not a priority at the moment.
Fine with it, I like handling and planning migration, that's a nice challenge.
But if only that were the only problems !! Far from it, the code is a formidable mess, I've never seen so much amateurism... Most of it was written from the previous Lead Dev who stayed there for years and touched everything with their very bad practices.
I don't even know where to start honestly...
While the code is in Kotlin, it stink Java. Nothing wrong about Java, but if you code in kotlin, you need to understand what kotlin try to achieve. And that's not the case here. There is freaking nullable everywhere, for no reason at all, the data classes contains lot of var in their constructors, equals are override to compare only one or 2 params and no hashcode override with it.
Sealed class, what for ?! Let me just write a List<Pair<Enum, Any>> and cast your any depending on the enum !
Oh and you know what, let's cast everywhere, no check, and for once no null safe, there is enough nullable in the code !
What about the reactive part ? well let's recreate a kind of broken eventbus with rx ! Cause why not ?!
The viewmodel observable don't contain data, they just contain enum for the progress of the states we're checking.
In the viewmodel function we update that enum states and emit it to be observed and make the data available as a var for the view to pick it up when needed.
But why put the business logic in the viewmodel, let's put in the views, and grab and check the variable contain in the viewmodel whenever it fits.
Testing the business logic ? uh let me just test my variable initialisation in the viewmodel instead.
The vm, the views, make about 2000 lines, the test over 3000, and not a single test really test the business logic in it ! I've made big refactoring we're all the tests stayed green, while the function are full of side effects ! WTF ?!
Oh and what about that migration from rx to coroutine ? well better not break the existing code and continue writting like rx, everything is cold flow ! We just need to store a boolean saying if we already did our call to the data layer then we decide to start our flow or not.
As for the RecyclerView, having too many viewHolder is just so annoying, let's put all our different views in one, and hide what we don't need.
Keystore has been push on the repo, but it's private no ? So who cares ?!
And wait i'm not done ! Some of the main brick of the apps depends on library that hasn't been updated for years, and you know what... yes they were hosted on Jcenter and it's only now that they decide to do something about it, we we're warned about the sunset of jcenter 2 years ago !!!!
So what about compose ? What do you want with compose ?! there is no design system in that app obviously, so don't even think about it !
And there... among all of that mess, I'm supposed to do code review... how the fuck do you do a code review when all the code that is around stink ?!
And there is so much more but by now I'm afraid you're thinking i'm just pissing on the old code like everyone... but damn I guarantee, that's the worst code I've ever seen, and i've work on more than 15 app from small to big on different contract with a lot of legacy code, but nothing that bad !1 -
This is my hell right now.
Android Jetpack compose Instrumentation test with koin di, mockito, coil in a module with 20 other modules.
"Cannot mock/spy coil imagerequest"
Whats yours?1 -
Fellas, what do you think about the performance of the Android Compose? Some time the first launch is too slow, I took 5 seconds to start the app. I had some problems with constraint layout too, simple constraints as link the bottom to top doesn't works well, the content stayed over the view, seems as the link was made to the bottom and not to top