Books, Blogs and Videos for Programmers
on
I guess I couldn't claim this to be a blog about software development without listing some of my favourite books, blogs and videos. This post will likely be a little organic as I consume a lot of information. Some of the material below has changed the way I work and the direction of my career and some I just find fun!
Code Quality & Refactoring
Code Complete 2nd Edition
I've had this book for years and still reference it regularly when I'm reviewing/refactoring code.
It serves very well as a continual point of reference for coding quality and standards. Code Complete is a must read for any coding standard conscious developer.
Don't just take my word for it. At the time of writing Code Complete was top of the list in this StackOverflow answer to the question "What is the single most influential book every programmer should read?".
Refactoring: Improving the Design of Existing Code
Does as the title suggests. If you are overseeing code created by other developers or have to improve a legacy system then this is the book for you. It begins with a simple example of a code base that has “code smells” and then looks to refactor away these issues. It continues to list some best practices and methodologies to refactoring and is a great asset for a developer’s toolbox.
TDD Master Class Screen Casts : Roy Osherove [Screencast]
If you don’t have a strong understanding of TDD then I recommend watching the TDD Master Class production from Tekpub.com. The production is a series of videos from a week long training seminar presented by Roy Osherove.
In addition to the videos take a look at Roy’s blog post on the string calculator TDD kata.
If you are interested you can see a video of my efforts of the string calculator kata in JavaScript.
Personal Development & Productivity
Pragmatic Thinking and Learning: Refactor Your Wetware
Pragmatic Thinking and Learning: Refactor Your Wetware is a very enjoyable and insightful read. If you are a habitual learner I strongly recommend you take a few steps away from the grind stone of learning and read this book.
A key aspect of the book is "learning about learning" and helping you to keep your attention focused on the right things and make use of both sides of your brain. I've implemented many aspects of this book during my day job and when learning new subjects, some of which have made a tremendous impact.
Scott Hanselman’s Personal Productivity Tips [Video]
Scott Hanselman is a man after my own heart in his approach to productivity. I saw a variant of this talk a few years ago and took some great ideas from it, notably GTD and the Pomodoro Technique which I now use daily.
The Seven Habits of Highly Effective People
The book begins with the concept of personal leadership, helping you to define your inner goals and drivers and set out a structure to ensure you are on the right track. It then progresses into public leadership which builds upon a strong foundation of personal leadership to yield public goals.
The concept of "4th Generation Time Management" and "The Four Quadrants" from this book are often referenced in presentations, books and blog posts on the subject of productivity.
How to Win Friends and Influence People
You may find this book referenced here a little odd since this is a technical blog, however I would argue that this is a useful read if you are often dealing with clients, sales people and project managers.
We coders are not often renowned for our social skills so it may offer some structure and useful tips when it comes to interacting with your peers, in particular when it comes to critiquing the code of others!
This is a widely known book and has been read by many, in particular in the area of sales. Having read this book it was interesting to be able to detect some of the techniques from the book being used - especially when somebody was trying to use them on me!
97 Things Every Programmer Should Know
This book is a light read and contains lots of useful idioms and quotes with more emphasis on entertainment rather than solid programming theory. After reading this I realised that I wasn't alone in the quest of trying to improve as a developer.
This book serves well as a light read after a busy week of brain work!
This Developers Life [Podcast]
A podcast about developers and their lives. Recommended listening if you have a commute to the office.
Web Specific
Don't Make Me Think!: A Common Sense Approach to Web Usability
“Don’t Make Me Think” is an enjoyable read and full of character but the practical way in which the concepts are explained make it essential reading for anybody interested in interface design and usability.
I often refer back to this book from time to time when I can feel a user interface I am create starting to feel a little complicated. We developers are often guilty of over complicating UI screens because “we” understand how they are supposed to work. Having a book like “Don’t Make Me Think” to refer to can help us keep our UIs sensible!
If you are serious about interface design then you should seriously consider buying this book and keep it close by!
Designing Web Usability
I’m a long time reader of Jacob Nielsen’s Alertbox articles on web usability. He is considered by many as a guru in web/content usability.
Many of the points in this book have been rehashed into various books and articles since published in January 2000. If upon reading this book you find that you are aware of the best practices, you have no doubt picked them up by proxy from this publication!
Many of the principles detailed in this book have come full circle as we are currently in a time of mobile devices and responsive web pages.
JavaScript: The Good Parts
This book covers the bad parts as well as the good parts of JavaScript. Once read it will leave you having been sprinkled with street wise and pragmatic knowledge.
Douglas Crockford is THE expert when it comes to JavaScript. This book works both as a reference but is also “readable” in the sense that you can read it like a novel and not have to be in front of a computer screen working through the subject matter.
With the unstoppable rise of JavaScript if you are a web application or ASP.Net developer this book is essential reading.
Sam's ultimate web performance tool and resource list [Blog]
This excellent blog post from Sam Saffron is a "go-to" list for any tool or application that will help you with performance related tasks. Sam was a developer at StackOverflow.com so he knows a thing or two about making a web application scale!
Microsoft .Net Specific
Microsoft .NET: Architecting Applications for the Enterprise
If you wish to learn about design patterns this book will do just that providing a C# context for Microsoft centric developers.
This book aggregates sections of other popular design pattern books such as the famous GoF and Fowler’s Patterns of Enterprise Application Architecture. This will not serve as a substitute for such books, however the familiarity of the C# examples make new concepts feel a little more familiar.
Ultra-Fast ASP.NET: Build Ultra-Fast and Ultra-Scalable web sites using ASP.NET and SQL Server
In any modern web facing application performance should be a feature. It’s often said that premature optimisation is the root of all evil and to some extent I agree with this, but not at the expense of ignorance.
If you read just chapter 2 of this book: “Client Side Performance” you can be mindful of the small changes you can make within your UI and resource files (JavaScript/CSS/Images) that will yield big performance wins.
The subsequent chapters move onto the server side and caching which arguably fall into the “premature optimisation” category in the early days of development, however if you are fortunate enough that your application becomes busy enough to warrant such optimisations – you will know where to start having read this book!
Note: a new edition updated for ASP.Net 4.5 is due to be released soon.
Professional ASP.Net Design Patterns
Another book covering design patterns using the ASP.Net stack. I particularly liked this book even though I was already familiar with most of the concepts. It takes the pragmatic approach of building an e-commerce application making use of the design principles discussed.
I always like to learn in context and create a working application when reading books such as this, so due to the fact that this book aims to do just that I swiftly worked through the chapters.
By the end of this book you will be comfortable with some SOLID principles, Repository Pattern, MVC, Ajax Patterns and data access patterns using NHibernate.
General Learning
TekPub - High-quality screencasts for programmers
Tekpub sell screen casts for Microsoft.Net, Ruby, Javascript, Linux and related technologies. The content keeps up to date with the latest and greatest technologies and Rob Conery will typically collaborate with the communities big names for a given technology, for example a C# series with Jon Skeet!
Pluralsight - Developer Training
Pluralsight sell a plethora of Microsoft related screen casts. There are other videos on iOS, Java etc but the core focus is Microsoft. It differs from Tekpub in that it takes a more classical approach to teaching (think powerpoint slides and some code examples) where as the Tekpub approach is more of a hacker-esque dive into the code approach. Pluralsight list a lot more screen casts than Tekpub however the contrasting styles complement each other thus I have an annual subscription for both.