One of the most frequently asked questions I run into is “what are the best books to learn about programming or a specific language?” Everyone has their favorites and the Lexicon is no different. However, we have read many books and maintain a library of them for our personal enjoyment (and bragging rights) so we have some expertise in this area. The books we list below is only a snapshot of some of them we recommend. We also provide a scale of “beginner”, “intermediate” and “advanced” to give you the sense of depth you should have to understand most of the book’s topics. As we read more books we will certainly update this list. So keep checking back here for the latest material.
Code Complete 2 (all levels) – This book is a fantastic book for beginners specifically in that it shows proper techniques and processes for formulating solid maintainable code. This book is from 2004 and yet is as relevant today as when it was written. Examples provided are in various languages, but simple enough to see what is being demonstrated without having to actually know much about the language. This book shows things like timing of loops, how to properly comment code, when to refactor or simplify and how to use proper naming conventions. If you want the best book to start a great career, this book is definitely it! This is the most highly recommended book on our list.
The Pragmatic Programmer (intermediate) – A wonderful book that doesn’t provide a ton of example code but it doesn’t have to. Its main goal is to talk about the structure of code and the thoughts behind “why” we do things in the industry. Some topics covered are decoupling, code generation, debugging, estimation, ruthless testing, algorithm speed and more. A stellar book and a great compliment to Code Complete 2.
Clean Code: A Handbook of Agile Software Craftsmanship (beginner/intermediate) – This book is a good book for discussing Agile principles and has things like code patterns, principles for writing great code and describes a lot of bad code (aka code smells). It also shows how to clean up bad code. When you are in the industry, you will quickly find out that a lot of industry code out there smells and was written poorly. This is primarily due to tough deadlines, a coder who was still learning a particular language or simply didn’t care enough to make things clean. This book can certainly help.
C++ Primer Plus (all levels) – This thick book, by the Developer’s Library series, is just packed with great code examples and covers C++ in great depth. This book is a must have for those wishing to learn the language and ranks right up there with “C++ Programming Language” by the language’s creator Bjarne Stroustrup. The book is simple to read and also serves as a great refresher to anyone who is getting back into programming with C++ from long ago.
Java: How to Program (beginner/intermediate) – These books are quite thick and a bit on the expensive side. However, they are also packed with code examples which they explain virtually line by line. Many of the books in this series are also color coded and contain chapter exercises that you can use to help quiz yourself on the material. Another great thing about this book is that it is often extensive. They cover everything from the Hello World program all the way to servlets, java beans and audio/video concepts. If you are an experienced programmer with other OOP languages and want a quick way to learn Java, these are the books that can help you do it.
The Python Standard Library by Example (intermediate) – A great Python book! We found this book just a bit better than the monster “Learning Python” which, while thick, seemed to keep trying to delay talking about topics until later chapters. This book quickly shows you examples and offers you cook book style code for things like data structures, data compression, algorithms of all types, formatting text, databases and more. This is another book in the Developer’s Library series which continues to make amazing books on all sorts of programming topics. If you are wanting to learn Python and have a background in some other languages, this is a great book to get you started. Pair this along with the reference book we mention below and you have a one two combo for the language.
Programming Ruby (beginner/intermediate) – If you want to program Ruby, this book is simply the best out there. It is the de facto standard and is known as the “pickaxe book” because it features a pick axe on the front of it. The book covers everything from gems to a bit on the rails framework to modules, mixins and classes. It also covers a bit of the standard library and how to extend Ruby.
Illustrated C# (2008/2010/2012) (intermediate/advanced) – This book is amazing for C#! It takes some commonly confusing topics and illustrates them into something visual to give you an idea how the abstract ideas work. Apress books are generally pretty solid with the few exceptions. This book however is awesome in that it touches on a few topics you may have heard about but never used because you didn’t fully understand them. Not a great book if you are brand new to the language, but if you are solid with other OOP languages the insight this book provides is invaluable.
Head First C# (beginner) – These books are a great way to learn languages if you are wanting a lively visual way of thinking about things. Because of all the pictures and drawings, they tend to not be as full of content as some other books. We have to admit that some other books can read like a car stereo manual and are a bit dry. This book will explain some simple ideas using humorous annotations and pictures. That may help a lot of beginners get the basic idea of how things work. You will learn enough concepts to easily transition into an intermediate book where you can fill in the details.
Programming Microsoft Visual Basic.Net (all levels) – We find many Microsoft press books a bit on the sophisticated side in that they always expect the reader to actually know a bit about the language already. This book is a much calmer version of those other Microsoft books and is great for all levels. It covers the language in depth without being too overwhelming for the beginner. VB.NET is generally considered one of the most friendly languages to start with. It is also one of the languages we recommend newbies get started with. If you are an old VB 6 programmer you may find this book even easier to run through.
PHP Solutions: Dynamic Web Design Made Easy (beginner/intermediate) – This book is one of the better books out there on the subject. It is a follow up to the first edition which had some great reviews. Like all PHP books out there, this book combines the knowledge of PHP along with MySQL to form an end-to-end solution. It covers things like file uploading, generating images, how to use includes, formatting and connecting to databases and more. Definitely a good book as a complimentary to the information you can find online. We also suggest you bookmark the php.net manual for all your referencing.
Java the Complete Reference (intermediate/advanced) – This book is a monster! But it is also the definitive guide on the language from the company who controls it. Definitely a book every Java Programmer should have in their library and covers everything from data types and operators to generics to enumerations to AWT and Swing into JavaBeans and more. Worth every penny and don’t let the size of this beast intimidate you, it is a reference book… keep that in mind!
Python Essential Reference (intermediate/advanced) – Want to quickly find something out about Python? Need that function or object? This book has it and is another wonderful book to have in the library of Pythoneers everywhere. Mix this book with “The Python Standard Library by Example” and you have a great combo that will help you program just about anything in the language. Great for dipping and snacking on informational tidbits.
C# Pocket Reference (intermediate/advanced) – These little O’Reilly pocket reference books are great for tossing into your bag and going out with the laptop to do coding with friends. Need something quick and gives you the answer without having to dive through some of that MSDN non-sense? This will do it for you. Makes for a great little reference. Doesn’t always cover everything, but it usually hits the most forgotten stuff.
Have a book you think we should get excited about? Let us know about it and why it was so good. Perhaps we will include it here.