Summary Preface Set up Conceptual overview Unix Vim Java IntelliJ Conclusion Managing source code Version control Issue tracking Code review Conclusion Testing Unit Fixtures Integration Functional Githooks Conclusion Maintainability Spaghetti code Avoiding side effects Dependency injection Communicating intent Adhering to known patterns Doing one thing well Conclusion Static analysis and continuous integration Lint Style checks Bug checks Test coverage Continuous integration Conclusion Service development Service creation Add feature switch logic Test against VM Deploy Integrate Guice for DI Client development Android Studio Dive into Android Emulator Android Debug Bridge