Engineering
Engineering concepts that support Android development, from maintainable code and runtime behavior to systems spanning mobile clients and services.
Suggested path
Start with code quality and reviews, then revisit OOP, SOLID, and patterns through real design choices. Algorithms and memory help evaluate performance. For distributed features, begin with System Design Fundamentals and continue with the topic that matches your problem; the offline-first example connects the pieces. For Android-specific application structure, see Architecture.
Code and runtime
- Code Quality - readability, boundaries, and technical debt.
- Code Review - focused changes and risk-based feedback.
- OOP - encapsulation, contracts, and composition.
- SOLID - principles applied without unnecessary abstractions.
- Design Patterns - choosing and recognizing common solutions.
- Algorithms & Complexity - growth, collections, and trade-offs.
- Memory & Runtime Basics - reachability, leaks, and allocation.
System Design
System Design follows complete data flows across mobile clients, APIs, services, storage, and workers.
- System Design Fundamentals - requirements and design process.
- System Design Shorts - quick concept reference.
- Scalability & Capacity - load and bottlenecks.
- Data Storage & Consistency - ownership and consistency.
- Caching & Data Freshness - stale data and invalidation.
- Async Processing & Messaging - queues and delivery.
- Reliability & Failure Handling - timeouts and recovery.
- System Design Diagrams - communicating design choices.
- Design Example: Offline-First Mobile Application - applying the concepts end to end.