I am doing Android full time since 2012 and partially even longer, I am a Google Developer Expert for Android but I still need to google how to set the application class in the manifest ๐คช
I finished university 20y ago, worked for 7 companies ever since, became GDE, did live coding on stage, did dozens of interviews from both sides of the table, but I'm still scared as hell when it comes to live coding in any job interview
time developer spends each day:
trying to understand jira: 10%
waiting for compiler: 25%
weird Android Studio issues: 25%
writing code : 20%
looking for the right gif for a pull request comment: 20%
It can not be said often enough: LiveData has nothing to do in layers not related to UI!
Keep it out of Repositories, DataSources! There use Flow or RxJava and only put LiveData in your ViewModels!
It was very unfortunate that this was shown by Google as best practice. ๐ช
I wished more companies would ask candidates to model or refactor code instead of looking at string manipulations and tree search questions. I believe the status of software worldwide would be in much better shape.
100รท! I would not recommend writing native apps anymore! Just build a web app! Saying this as an Android GDE, feels very sad
You need to sell your soul to the PlayStore to do anything more than web can do, and youll be busy catching up with API levels and libraries the next years
I might complain about Dagger here and there but it is an important part of the Android world and I work with it on a daily base.
Therefore, I've written down some thoughts on how to use it and maybe how not to
I remember how we said at I/O 2017 and agreed that w/o Kotlin we would have all done Flutter soon, Android felt dead.
Fast forward 6 years: with what I've seen and heard the last days about the state of Compose and KMP, i feel the end of Flutter is near.
Wdyt?
Remember when things on Android where stupidly hard?
Getting less every day. Now
@FMuntenescu
about another
small improvement that you run into all the time
If developers worldwide could take all the time they waited in
@androidstudio
and use this in one combined project, they would have rewritten Android itself completely by now ๐
I see a lot of Android devs who can't even write a three class application anymore without setting up Dagger first. They're lost without it.
Maybe iOS devs are more pragmatic ๐คทโโ๏ธ
If you want to return "this" in your methods (like for Robot or Builder pattern), make your function an apply block, so you save that repeated "return this"
#kotlin
As an Android developer, I'd like to have a USB cable that only transfers data but does not charge the phone (and drain my laptop), so I can be more productive when not at my desk
@Sitzenbleibenhh
@PolizeiHamburg
Tja da wรคchst eine Generation heran die die Polizei als Beschรผtzer der Rechten und mit
#Polizeigewalt
gegen alles vermeintlich Linke vorgehend erlebt. Und einen Staat der seine Bรผrger nicht dagegen schรผtzt. Totalversagen auf allen Ebenen.
@AnaStanescu22
I never use the Android view, always project. My mental model is that of the directory structure and I don't want a different view of that in my IDE
Biggest productivity gain as Android developer you can do: always build from command line! Magnitudes faster than Android Studio and doesn't get slower overtime either.
App developers, can you please stop building your own image pickers!
I'm very often unable to find the picture most of the time without the full power of Google Photos.
Can't believe it's still a thing, especially in well-known apps like Instagram.
While we are discussing RxJava vs Flow, Google uses Java with Guava's ListenableFuture in their Corona reference app, stay tuned, let's see what's next ๐
Learning from this year's
#dcnyc24
:
X has 6 Android engineers left while Reddit has 100+
I might not like Elon but 6 sounds right
Hardly any app ever needs more than a dozen developers (SoundCloud has<10 in case you want to ask)
If you have more you have an organizational problem
Sometimes I like working from home. While waiting for the green test arrow icon to appear next to the class in
#AndroidStudio
I had time to clean the kitchen floor. Now I' waiting for the tests to run... time to do the dishes ๐
Don't use Flow<Boolean> or similar
The information should be part of the payload(!) like
LOGGEN_IN, LOGGED_OUT
NOT of the variable name of the field. No one would noticed if we change:
val isLoggedIn : Flow<Boolean>
to
val isLoggedOut: Flow<Boolean>
#primitiveobsession
Let me correct this list.
New list:
โ
Thanks for listening
PS: you might have to learn the bullshit below for job interviews at FANGs so maybe just don't go there ;)
German Corona app for Android developed in the open
1st look shows: Room, ViewModels, LiveData, Navigation
Also, code looks better than what Google built as a reference app themselve ๐
We need to talk about testing though ๐คจ
Celebrating 5 years at
@SoundCloudDev
!
Time flew:
- I joined the Growth team
- moved to Integration later
- then took over the Android team
Still, remember how much I enjoyed the people who interviewed me! People changed over time but I'm still surrounded by amazing folks here
Some people wear masks, many not. Some people hug, some stay distance. Even the rooms have some distance seatings for those who want to. Love our we respect each other in these times. Everyone should feel safe and welcome.
#dcbln21
Today I'm giving another talk about TDD.
One of the things I hear the most after these talks is that customers/managers won't give time to write tests.
Why do you ask them? You are the professional!
Clients do not pay you to deliver bad quality!
You have to ensure quality!
Never ask permission to refactor. Never ask permission to write tests. You do these things because you KNOW they are the best way to go fast.
When you ask permission, you are asking someone else to take responsibility for your actions.
Lately we adopted
#coroutines
at SoundCloud. To prepare telling the team more about testing, I'm watching my own talk ๐
Actually often I find answers to my own questions on my blog posts. Teaching is about learning and it creates great documentation
@adamwp
@ianhlake
@Zhuinden
That's an abomination! You have Dagger component injecting UserManager, and UserManager manages another Dagger component?
Good job! You've just created the tightest coupling between code and DI framework I've ever seen (and I've seen a lot).
Use Dagger, they said
Annotation processing will save you, they said
Only the One scales on large projects, they said
Dagger replies: let me create this unused injector for some base class twice from different modules
I'd better go to some island and farm coconuts