Head First Java - Teach Yourself Java for under $20
This year, I'm on a mission to teach myself as much computer programming as possible. I figure that the more I know, the more options I will have for my future employment.
I first became interested in programming while in Middle School, but that interest quickly turned into frustration, and now, about 15 years later, I am taking it seriously for the first time.
I've learned something in those 15 years. If a book is causing me frustration, the solution is simple: order another book. There are so many instructional books that there's really no reason to give up. Everyone has different learning styles and the options for teaching yourself today are better than ever before. Not only are there books, but there are also free online courses and many forums. All you need is motivation and determination.
I think if you set aside at least one hour a day and maybe $20-$40 a month for buying books, you can succeed at learning programming. Actually, I know that a lot of self taught programmers do it for free without buying any books, but I do find books helpful. For my learning style, it's easier to follow a book's instructions than it is to try to tackle the online tutorials. Plus the $20 I spend gives me financial motivation: I don't want to waste my money so I better start studying!
Why buy "Head First Java" then? Well, Java is the programming language that you need to learn if you want to design programs for Android cell phones. You may want to do that. But even if you don't, this book is a good introduction to Object Oriented Programming (OOP) in general. If you really want to learn what objects are, this book will answer that question - which sure was something that befuddled me! Today, OOP languages are abundant - C++, PHP5, Python, and Ruby - just to name a few. Plus, once you know Java, learning another language is easy. And you will be well prepared for taking online computer science courses like Princeton's Algorithms course.
A Few Other Books to Consider
Reading books in the right order can be surprisingly important! I actually bought the "Head First Java" book in 2010, read part of it, got distracted, and then went back to it in 2013. The second time around, I had more knowledge under my belt and more determination. I actually did the examples in the book, which is important to programming. Reading code isn't the same as writing it. You have to write the code to learn to code. So, whatever book you follow, make sure you spend as much time writing as reading.