A compilation of materials for Android Lovers
Hello to all fans of Android development!
I, Mikhail Barannikov from e-Legion, collected materials for you to read, watch and listen about Android mobile development. Don’t we all have a lot of free time during these Covid times? Don’t waste it! Level up your skills.
For newcomers:
- Courses on Coursera
https://www.coursera.org/learn/android-programming
https://www.coursera.org/learn/android-programming-2 - Courses on Udacity
https://www.udacity.com/course/gradle-for-android-and-java--ud867
https://www.udacity.com/course/android-performance--ud825 - Kotlin
https://kotlinlang.org/ and more specifically https://kotlinlang.org/docs/reference/
For theory lovers we have some books to read:
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
- Code Complete: A Practical Handbook of Software Construction by Steve McConnell
- Clean Architecture: A Craftsman’s Guide to Software Structure and Design by Martin Robert
- Kotlin in Action by Dmitry Jemerov and Svetlana Isakova
- The Art of Computer Programming by Donald Knuth — for those who like it rough
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- The Clean Coder: A Code Of Conduct For Professional Programmers by Robert Martin
- The Mythical Man-Month: Essays on Software Engineering by Fred Brooks
- Head First Design Patterns by Eric Freeman, Elisabeth Robson
- Refactoring: Improving the Design of Existing Code by Martin Fowler
- The Pragmatic Programmer: From Journeyman to Master by Andy Hunt and David Thomas
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert Martin
- Reactive Programming with RxJava by Tomash Nurkevich, Ben Kristensen
For code lovers:
- Plaid (https://github.com/android/plaid) — is an app made to demonstrate multimodularity
- Architectural samples from Google (https://github.com/android/architecture-components-samples) — let’s have a look, get inspired and try to create
For documentation lovers:
- Documentation is everything (https://developer.android.com/) — guides, codelabs, samples and everything that you may need at the beginning. And for everyday work there is always Javadoc
For article lovers:
- Medium (https://medium.com/)—a bunch of articles, you can start with https://medium.com/androiddevelopers and later search for what you like
- Android Developers Blog (https://android-developers.googleblog.com/), a blog from Google
- Kotlin Blog from JB (https://blog.jetbrains.com/kotlin/)
For those who love to watch and listen:
- Android Developers (https://www.youtube.com/user/androiddevelopers)
- Android Dev Summit 2019 (https://www.youtube.com/watch?v=5jJ-e278BFY&list=PLWz5rJ2EKKc_xXXubDti2eRnIKU0p7wHd)
- Look at the “conferences” section and search for recordings on YouTube
For lovers of architectural wars:
- MVP / MVVM / MVI / Clean Architecture — have a look at what types of architecture exist, how they differ and what tasks they solve
For library lovers:
- OkHttp (https://square.github.io/okhttp/) + Retrofit (https://square.github.io/retrofit/)— libraries for working with network requests. One can’t survive without them
- Dagger (https://github.com/google/dagger) / Koin (https://insert-koin.io/)) / Any other DI to your taste. Before using all these libraries, try to understand why you need DI so much
- Jetpack (https://developer.android.com/jetpack)—work with a camera, database, fragments, life cycle, navigation and much more from Google.
- RxJava (https://github.com/ReactiveX/RxJava)—reactive programming. You either love it or you hate it. You decide
- Kotlin Coroutines (https://github.com/Kotlin/kotlinx.coroutines), an alternative to Rx for working with multithreading. For reactive programming you can use Flow
- AdapterDelegates (https://github.com/sockeqwe/AdapterDelegates)—adapters for RecyclerView through composition
- Epoxy (https://github.com/airbnb/epoxy) — if you want RecyclerView everywhere and for everything, here you go
- Kaspresso (https://github.com/KasperskyLab/Kaspresso)—excellent library for Android UI testing
- Android-Image-Cropper (https://github.com/ArthurHub/Android-Image-Cropper)—crop the photos the way you need
- Animations Compiletion https://github.com/Ramotion/android-ui-animation-components-and-libraries
- Mockito (https://github.com/mockito/mockito)—a library for unit testing
- Spek (https://github.com/spekframework/spek/)—make unit testing more convenient
- Cicerone (https://github.com/terrakok/Cicerone), an analogue of navigation from Google
- Zxing (https://github.com/zxing/zxing)— barcode scanning
- Gson (https://github.com/google/gson) / Moshi (https://github.com/square/moshi)—read JSON using annotations
- Lottie (https://github.com/airbnb/lottie-android), a super library for animations. You as a programmer have almost nothing to do. The designer draws and uploads to JSON, and you just need to import it into the project and be happy
- MPAndroidChart (https://github.com/PhilJay/MPAndroidChart)—a library for charts display
- Material-Animations (https://github.com/lgvalle/Material-Animations)—material animations, transitions and everything related to this
- DeepLinkDispatch (https://github.com/airbnb/DeepLinkDispatch)—a library for deep links
For infrastructure lovers:
- Gitlab CI / Jenkins / TeamCity — set up, watch and learn how to use it
- Integrations with Redmine / Jira / TestLink / Slack. Long live the gradle and its plugins, as well as CI plugins that simplify such integrations. You can always write your own plugin
- Docker — let’s increase in size to an industrial scale
- Weblate, an excellent resource for applications to support a lot of languages. It simplifies translations and allows translators and programmers to work together
- Checkstyle, Detekt, Ktlint, static code analyzers. Help you not to bother with the code style so often and concentrate on really important aspects of code review
- Auto tests, tests and life after tests. There are a lot of ways. And there is no common way I would recommend. Start small. Launch unit tests, then UI, and think how to use the received information in further development
- Jacoco, Sonarcube. Just take a look. It can come in handy for a few points above
For lead lovers:
- Herding Cats: A Primer for Programmers Who Lead Programmers by J. Hank Rainwater
- The Manager’s Path: A Guide for Tech Leaders Navigating Growth and Change by Camille Fournier
- The Ideal Executive: Why You Cannot Be One and What to Do About It, A New Paradigm for Management (Leadership Trilogy) by Ph.D. Adizes, Ichak Kalderon
- Antifragile: Things That Gain from Disorder by Nassim Nicholas Taleb
- On top of that, you should read about delegation, how to properly set up goals, conflict resolution and one-to-one meetings. This should be enough to start off with
For parties and conferences lovers:
Covid alert: buy beer, stay home and attend the conferences online, drinking beer with your perfect friend — YOUR COMPUTER 🤝
- MBLT Dev
- Mobius
- Team Lead Conf
- Apps Conf
- Google I/O
- Android Dev Summit
- Kotlin Conf
For admirers and for those who seek inspiration:
Dribbble (https://dribbble.com/tags/mobile) — check out what designers do. Swear $%#@$#@%&^. Exhale. Think how to implement it.