Dan Lew, an Android developer, writes on code review, Kotlin, RxJava, reactive programming, and software practice.
Commenters recommend his posts on code review, especially the LOGAF scale and 'Stop Nitpicking', and his RxJava tutorials for Android.
Maybe it's just me but, when I see things like this, I lose confidence in the method naming process on the Android SDK:
glEGLImageTargetRenderbufferStorageOES
http://developer.android.com/reference/android/opengl/GLES11Ext.html#glEGLImageTargetRenderbufferStorageOES%28int,%20java.nio.Buffer%29
They capitalized Render but not buffer. Also: what does this even mean?
---
readExceptionWithOperationApplicationExceptionFromParcel
http://developer.android.com/reference/android/database/DatabaseUtils.html#readExceptionWithOperationApplicationExceptionFromParcel%28android.os.Parcel%29
Do they really need to put the word Exception in this name twice?
---
getGestureStrokeSquarenessTreshold
http://developer.android.com/reference/android/gesture/GestureOverlayView.html#getGestureStrokeSquarenessTreshold%28%29
What's a Treshold? (Yes, that's how they spelled it).
---
Ok, so the standard way they spell it is N-U-L. One L: getAllButNulLegal
http://developer.android.com/reference/android/net/UrlQuerySanitizer.html#getAllButNulLegal%28%29
But wait: readMessengerOrNullFromParcel
http://developer.android.com/reference/android/os/Messenger.html#readMessengerOrNullFromParcel%28android.os.Parcel%29
---
Ok, so the standard way they spell it is C-A-N-C-E-L-E-D. One L: registerOnLoadCanceledListener
http://developer.android.com/reference/android/support/v4/content/Loader.html#registerOnLoadCanceledListener%28android.support.v4.content.Loader.OnLoadCanceledListener%3CD%3E%29
But…
I keep a running list of articles I found useful over the years. There are many great articles about Code Reviews out there. Consider this a more general answer to your question:
Feedback Ladders: How We Encode Code Reviews at Net-lify
https://www.netlify.com/blog/2020/03/05/feedback-ladders-how-we-encode-code-reviews-at-netlify/
How to Make Good Code Reviews Better
https://stackoverflow.blog/2019/09/30/how-to-make-good-code-reviews-better/
Best Practices for Code Review
https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/
Code Review Guidelines for Humans
https://phauer.com/2018/code-review-guidelines/
Unlearning toxic behaviors in a code review culture
https://medium.com/@sandya.sankarram/unlearning-toxic-behaviors-in-a-code-review-culture-b7c295452a3c
How to Do Code Reviews Like a Human
https://mtlynch.io/human-code-reviews-2/
Stop Nitpicking in Code Reviews
https://blog.danlew.net/2021/02/23/stop-nitpicking-in-code-reviews/
Similar to the FG scale in the OP, LOGAF is a fantastic system to use, especially in asynchronous/remote environments. It's radically improved our code review iteration cycles.
https://blog.danlew.net/2021/02/23/stop-nitpicking-in-code-reviews/
That said, review debates are only one part of a "debate everything" culture. Architectural disagreements are much harder to solve while maintaining morale. One thing I've found effective as an engineering leader, when we need a plan of action, is to ensure I listen to every technical take, but make it clear that while I'm incorporating all those concerns into the decision, some concerns need to be weighted more than others based on larger medium-to-long-term business context, and that those concerns need to drive the design. It isn't always the best approach with 20/20 hindsight, but the removal of paralysis has been a net positive so far.
For Android dev related, I follow
Jake Wharton : https://github.com/jakewharton , https://twitter.com/JakeWharton - He is well known in Android community. He has authored a lot of great libraries personally and under Square.
Mark Murphy - https://commonsware.com/blog/
Chris Banes - https://chris.banes.me/
Cyril Mottier - https://cyrilmottier.com , https://twitter.com/cyrilmottier
Dan Lew - http://blog.danlew.net/
Donn Felker - http://www.donnfelker.com
Mark Allison - https://blog.stylingandroid.com
Jesse Wilson - https://publicobject.com/
Roman Nurik - https://twitter.com/romannurik
Maybe the difference is that you keep control with events, i.e. you can filter, retarget, cancel or otherwise reason in general about the way they propagate?
I'm no expert, but the essence of the "reactive functional programming" programming paradigm is that you have composable high level abstractions about the streams of events (e.g. marble diagrams).[1]
[1] https://blog.danlew.net/2017/07/27/an-introduction-to-functional-reactive-programming/
We ran into that as well integrating it into a 3 year old Android codebase.
We followed these tutorials at first, but it definitely just took a lot of time and trying things out.
http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/
RxJava + Retrolambda has accelerated our development speed once we got a grip on it, but it does complicate our build process.