Mission
At Yelp, we're big believers in continually improving our skills as developers. For the past two years, our Android team has been doing that at our weekly Android School, where we get together and watch some of the best videos from the Android community and beyond. Sometimes these are programming related, but sometimes they're on more general topics like how to be better technical leaders.
We've found this to be immensely useful in growing our skills as software engineers, so we wanted to share it with the wider Android community to help other teams wade through the ocean of content that exists out there.
We'll be updating this once every month or so as we complete new topics in our own Android School!
Videos
General Android Development
Android Build Tools
- Gradle For Android
- What's New in Android Development Tools
- Creating a Custom Build Platform with Gradle
- Using Mat (Memory Analyzer Tool) to Understand Memory Issues in Your App
- Udacity Course - Gradle For Android And Java (Gradle 101)
- Android Studio For Experts
Android OS
- Introduction to Project Volta
- The Art Runtime
- Android Binder IPC Framework
- Interprocess Communication
- How The Main Thread Works
- Android Internals for Developers
- How Android Rendering Works to Provide Pixels on the Screen Faster Than You Can Read this Sentence
Views
- The World of ListView
- Enabling Blind and Low-Vision Accessibility
- Writing Custom Views for Android
- Mastering the Android Touch System
- Efficient Android Layouts
Views - Next Level
- Mastering Android Drawables
- Filthy Rich [Android] Clients
- Framing the Canvas
- How LayoutInflator Works
- Window Content Transitions
Android Features
Software Engineering Theory: Patterns
- Composition vs inheritance
- The Clean Code Talks - Don't Look For Things!
- Robert C Martin - Clean Architecture and Design
Software Engineering Theory: Writing Clean Code
- Simple Made Easy
- The Clean Code Talks - Global State And Singletons
- Hammock Driven Development
- How To Design A Good Api And Why It Matters
- Applying S.O.L.I.D. Principles
- Domain Driven Design By Example
Software Engineering Theory
- Bret Victor: Inventing On Principle
- Writing Software by David Heinemeier Hansson
- Scott Meyers - The Most Important Design Guideline
- Donald Knuth - My Advice to Young People
- Bjarne Stroustrup - Object Oriented Programming Without Inheritance
- Greg Wilson - What We Actually Know About Software Development, And Why We Believe It’s True
UI Design
- Fundamentals of Design: How to Think Like a Designer
- Material Science: Developing Android Applications with Material Design
- Material Design For Android Developers - Udacity Course
- Inclusive Design And Testing: Making Your App Accessible
Android Performance
- Performance Patterns with Colt McAnlis
- Android Performance: An Overview
- Finding and Fixing Performance Problems
Being a Great Engineer
- Robert C. Martin (Uncle Bob) - Demanding Professionalism in Software Development
- The Ethical Consequences of Our Collective Actions
- Bake the Cookies, Wear the Dress: Connecting with Confident Authority
- Your Brain's Api: Giving And Getting Technical Help
Being a Great Engineer (Month 2)
- "Uncle" Bob Martin - "The Future of Programming"
- Effective Java - Still Effective After All These Years
- Working Effectively with Legacy Code by Roberto Hernandez-Pou
- GOTO 2016 • Seven Secrets of Maintainable Codebases • Adam Tornhill
- Case Studies in Terrible Testing
- The Silver Bullet Syndrome
Being a Great Engineer (Month 3)
- Simplicity - The Way of the Unusual Architect
- "Uncle" Bob Martin - The Scribe's Oath
- How and When to Explore - An Engineer's Guide
- Dan North - Decisions Decisions
- Tech Talks For Humans
- Want To Make A Change? Stop Talking And Start Listening
Testing
- GOTO 2015 • Unselfish Testing • Jay Fields
- How to Write Clean, Testable Code
- The Clean Code Talks -- Unit Testing
- Why You Don't Get Mock Objects
- Acceptance Testing For Continuous Delivery
- Advanced Espresso
- Advanced Android Espresso
- 10 simple rules for writing great testcases
- Effective Unit Testing
Organizational Culture
- How Our Engineering Environments Are Killing Diversity (And How We Can Fix It).
- The Art of Organizational Manipulation
- Keynote - Jacob Kaplan-Moss - PyCon 2015 https://vimeo.com/242043944
- Algorithms to Live By: The Computer Science of Human Decisions
- Move Slow and Mend Things
RxJava Talks (Sorted in order of complexity from lowest -> highest)
- Functional Reactive Programming with RxJava
- Introduction to Functional Reactive Programming (With a Bit More of an Android Focus)
- Christina Lee: Intro to RxJava
- Exploring RxJava 2 for Android
- Advanced Networking with RxJava + Retrofit
- Droidcon SF - Common RxJava Mistakes
- Managing State with RxJava
Various Cool Android Libraries
- Dagger 2: A New Type of Dependency Injection
- Retrofit 2
- Android Tech Talk: Annotation Processing Boilerplate Destruction
Making Your App Work Offline
- Realm - A New and Easy to use Object Framework and Database
- Rule Your Realm
- Android Architecture for the Subway
- Don’t Fear SQL: Store and Handle Data with SQLBright and SQLDelight
Android App Architecture
- Architecture Components - Introduction
- Architecture Components - Solving the Lifecycle Problem
- Architecture Components - Persistence and Offline
- Clean App Design With Architecture Components
- The Rx Workflow Pattern
- App Development - Pragmatic Best Practices
- RIBs - Uber's new mobile architecture that scales to hundreds of engineers
Google IO 2016
- What’s New in Android Development Tools
- The Experts’ Guide to Android Development Tools
- Recyclerview Ins And Outs
- What the Fragment?
- Android Layouts: a New World
- What’s New in the Support Library
- What’s New in Android Security (M and N Version)
Google IO 2017
Kotlin
- Introduction To Kotlin
- Life is Great and Everything Will Be Ok, Kotlin is Here
- Kotlin, the Swift of Android
- The Road to Kotlintown
- Idiomatic Interop
- Two Stones, One Bird: Implementation Tradeoffs
- You Can, but Should You?
- Introduction to Coroutines
- Better Android Development With Kotlin and Gradle
- Kotlin's Hidden Costs, Revisited
- Sealed Classes Opened My Mind: How We Use Kotlin to Tame State at Etsy
Tools (Android Studio, Debugger, OS X productivity)
- Knowledge Is Power: Understanding git
- Mac OS X Automation Workshop
- Mastering the Vim Language (intermediate)
- From Vim Muggle to Wizard in 10 Easy Steps (advanced)
API Design: How Does the Backend Work?
- Pragmatic Microservices - Randy Shoup
- REST I don't think it means what you think it does - Stefan Tilkob
- What is a CDN and why Developers should care about one - Artur Bergman
- Demystifying Docker - Andrew T. Baker
Java Deep Dives
Tech Debt and Maintainability
- Crushing Tech Debt Through Automation at Coinbase
- Escaping the Technical Debt Cycle
- Seven Secrets of Maintainable Codebases
Google I/O 2018
- What's New in Android
- What's New in Android Development Tools
- Android Slices
- Android Jetpack
- Android Jetpack: Manage Infinite Lists with RecyclerView and Paging
- Android Jetpack: how to smartly use Fragments in your UI