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.
If you don't know what loops are because you've never done any programming, you might want to read a book like this one before "Head First Java." There are actually numerous beginner programming books on Amazon, and any of the ones with high ratings probably would give you the necessary prerequisite.
I learned a little bit of Basic programming while in Middle School, and more recently learned PHP to develop a website, and that combo made me sufficiently prepared for the Head First Java book. It's not important what language you learn, as long as you know about basic things like loops and if/then statements.
After learning Java, you'll be ready for this. It's exciting to have something to look forward to, isn't it?
UPDATE - I just finished this book and it's my favorite programming book of all time. It has real example Android apps that you learn to write. It explains everything so when you get done, you have a very good understanding on how to write your own app. Also, the book is almost error-free. The code actually works and this makes for a struggle free learning experience. You do have to know Java first. I read both Head First Java and Head First Design Patterns. It turned out to be pretty good preparation for this book.