Not a book, rather a set of topics:
There is no shortcut to knowledge, there is no fast and easy way to learn programming, no one can learn for you, you are the only one that can do it and nothing can replace experience. The way to become a good programmer is long and not everybody can achieve that goal.
Good programmer need a special state of mind, either you can get it or you don't. That state of mind is your ability to switch between customer level of thinking and computer level of thinking, said otherwise, it is your ability to translate customer fuzzy requirements into the requirements that the computer can handle and vice versa.
In order to become a good developer. You need to master a set of techniques that are the basis of the job and are not linked to a language.
My short list:
- Start with an easy/safe language: VB, Java, C#, not C or C++
- Read documentation / Follow tutorials (a lot of them)
- Start with tiny/useless projects, the purpose is to learn programming, not doing something useful.
- Start with console mode programs (no fancy graphics, no mouse)
- Learn debugger Mastering Debugging in Visual Studio 2010 - A Beginner's Guide
Debugger - Wikipedia, the free encyclopedia
- A problem ? Google is your friend.
- Learn Boole algebra
- Master some analyse methods, Dijkstra Top-Down method
is a good start.
- Learn SQL
- Learn Databases design and Administration
- Learn Regular Expressions
Remember the exercises and little projects are not here to make something useful, they are here to teach you programming.