Going on vacation to a place without Wi-Fi coverage, but still want to level up your software engineering skills? No problem, we’ve got you covered!

When discussing offline resources, the most obvious one is books. There are numerous books on Android and software engineering, and they deal with all different levels of experience. With that in mind, here’s a list of the books that influenced me the most.

Effective Java

Effective Java is the single best book I’ve read about Java to date. It is just like its title: concise and to the point—much like the rest of its writing. It is not a book for beginners however, as you won’t find any type of HelloWorld code in it. A good read from start to finish, this is an excellent reference book to have near you while programming. It runs down a detailed list of independent items about specific Java cases. Each item is detailed and provides context to problems and the best practices to handle them. The book has multiple versions, so be sure to pick the most recent one.

Head first design patterns

This one is easily the best introduction to design patterns you can find. Design patterns are very important in Android development and software engineering in general. It is the way you communicate with other developers. It is a beginner-level book with a lot of examples of the most-used design patterns in software engineering. Don’t be fooled by the childish images, it’s a solid and advisable read.

Clean Code

Clean code is one of “Uncle Bob’s” masterpieces. The book tells you how to actually write, read, and clean code. Going into minute detail, it exemplifies the most common practices like naming a variable – Name it like you would name your child.  It is not a Java-specific book, and it has examples of other languages, but most of them are simple enough to get the point. At the end of the book, you will have a good knowledge base regarding how to distinguish bad code from good code, and how to solve smells.

Refactoring: Improving the Design of Existing Code

Speaking of code smells… This book from Martin Fowler should be your weapon of choice when dealing with them! It covers the refactoring topic—the process of rewriting software without changing the way it works to improve readability, maintainability, and testability. It’s likely you’ll frequently deal with legacy code, and Refactoring gives you knowledge on how to turn bad code into good code. It also provides you with some practical examples and details of each type of code smell you might find in a codebase.

Android Programming: The Big Nerd Ranch Guide

This one is the single best technical book covering Android development. If you are comfortable with Java, you can jump right into this book in order to learn Android. By the end of the book, you will be able to make a fairly complex Android app that you can take to production.

That sums up my list of the influential books that helped me get into Android development and software engineering in general. What book(s) do you consider the best? Let us know in the comments section below.