Books For Programmers

I’ve seen many lists about the best programming books and I am sure there are a lot of books that are specific to a programming knowledge or technology – that I have not included in my list.

The books I have chosen are those that are meant to inspire, increase productivity and improve your programming design skills.

Note: This list has no particular order.

Code Complete 2

Steve McConnell

The main focus of this book to help you improve your programming design skills.


The Pragmatic Programmer: From Journeyman to Master

Andrew Hunt and David Thomas

This book focuses on the best practices of programming (i.e. what you should and should not do).


Pragmatic Thinking and Learning: Refactor Your Wetware

Andy Hunt

From the author of The Pragmatic Programmer, this book takes one-step back from programming and focuses on your everyday thinking and problem solving skills.


The Productive Programmer

Neal Ford and David Bock

This book will teach you different tools that you can use to make your programming life more productive.


Algorithms in a Nutshell

George T Heineman, Gary Pollice and Stanley Selkow

Unless you’ve memorized the implementation of every algorithm, this book is a handy desktop reference with pseudocode examples.


Alternate: Introduction to Algorithms

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein

This book has become a staple in many undergraduate computer science programs. Containing much more information and details on algorithms.


Head First Design Patterns

Lisabeth Freeman, Eric Freeman, Bert Bates, and Kathy Sierra

The people at Head First have a way of explaining things in a straight-forward, non-technical approach – a good tutorial and desktop reference.


Alternate: Design Patterns: Elements of Reusable Object-Oriented Software

Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides

Also a common computer science textbook by the Gang of Four (GOF), this book has much more information and more detail on design patterns.


Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin

This book covers the best practices, case studies and first hand experiences with creating “clean” code.



Refactoring: Improving the Design of Existing Code

Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts

This book covers the best practices in modifying existing code.



How To Design Programs: An Introduction to Programming and Computing

Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi

This book is geared to the beginning programmer and focuses on the design and creation of programs.



Structure and Interpretation of Computer Programs

Harold Abelson, Gerald Jay Sussman, Julie Sussman

Picking up where How To Design Programs left off, this book explores ways to look at code from an object-oriented point of view.



5 Types of Programming Comments to Avoid

Have you ever been reviewing code and come across a comment that you deemed was unnecessary? Commenting your code is meant to improve the readability of your code and make it more understandable to someone other than the original developer.

I have identified 5 types of comments that really annoy me and the types of programmers who make them. I hope after reading this you won’t be one who falls into one of these categories. As a challenge, you can try to match up these comment programmers with the 5 types of programmers.

1. The Proud Programmer

This programmer is so proud of his code that he feels the need to tag every line of code with his initials. Implementing a version control system (VCS) allows for accountability in code changes, but at first glance it won’t be so obvious who is responsible.

2. The Obsolete Programmer

If a piece of code is no longer used (i.e. Obsolete), delete it – don’t clutter your working code with several lines of unnecessary comments. Besides if you ever need to replicate this deleted code you have a version control system, so you can recover the code from an earlier revision.

3. The Obvious Programmer

We all know how basic programming logic works – this is not “Introduction to Programming.” You don’t need to waste time explaining how the obvious works, and we’re glad you can explain how your code functions – but it’s a waste of space.

4. The Life Story Programmer

If you have to mention requirements in your comments, don’t mention people’s names. Jim from sales probably moved on from the company and most likely the programmers reading this won’t know who he is. Not to mention the fact that it everything else in the comment is irrelevant.

5. The Someday Programmer

This type of comment is sort of a catch-all it combines all the other types. The TODO comment can be very useful when you are in the initial development stages of your project, but if this appears several years later in your production code – it can spell problems. If something needs to be fixed, fix it now and do not put it off until later.


If you are one who makes these types of comments or would like to learn best practices in comment usage, I recommend reading a book like Code Complete by Steve McConnell.

Coding Standards

Do you adhere to a certain coding style or standard when programming in your language of choice? If you are not following an official coding standard or a standard set-forth by your place of employment – perhaps you should start.

Why follow a coding standard? Standardize coding practices allow code to be more easily read by other programmers. Just imagine if you inherited code that was labeled as follows:

This might look like the code you wrote when you wrote your first program. However, if you saw this coding style in a professional environment you might have a difficult time understanding the meaning behind the variable names.

Coding standards are not necessarily dictated by the creator of the language. Many have just evolved into standards among the programmers who use the language.

I have compiled this list of several coding standards and styles. If want to start adhering to coding standards, I suggest you start with the official standards (if available). Also, check with your organization to see if they have a coding standards document already created.










If I left out your favorite programming language, check out the Coding Conventions for languages at wikipedia.

Do you know of any other coding standards resources that I should include in the list above? Please share in the comments.

SSRS Error Fix: Parameters Must Use the Correct Case

The Value expression for the query parameter ‘@Parameter’ referes to a non-existing report parameter ‘parameter’. Letters in the names of parameters must use the correct case.

SSRS Error Message

When editing Parameters (names or case) for a Dataset within SSRS you may encouter the previous error message when you preview the report. While on the surface it may appear that the parameter has the same case in the Parameter settings and the Dataset query – there is another place where a change is required.

  1. Open the Dataset properties for the Dataset (s) that use the Parameter in the error message.
  2. Select the Parameters property in the left list pane.
  3. Click the Expression Editor  button for the specified Parameter.DataSet Query Parameter Values
  4. Here you will notice that the Expression is underlined in red. This is where you will need to correct the case of the Parameter name.
    SSRS Expression Editor


SharePoint ULS Viewer

For the longest time the most commonly used ULS Viewer for SharePoint was located on the MSDN Archive Gallery. Today you can no longer find it there.



It appears that Microsoft has moved the ULS Viewer to the Official Microsoft Download Center.

I’ve also stored a copy of the application to my OneDrive account – just in case Microsoft decides to move it again.  (ULSViewer.exe)

Want to learn more about the ULS Viewer? Check out Bill Baer’s post ULS Viewing Like a Boss.

Adventure Works Sample Databases

Microsoft recently released the Adventure Works 2014 Sample Databases for download on CodePlex. From time to time, I find myself looking to download and re-download not only the latest AdventureWorks databases but also for older versions of SQL Server.


Adventure Works Logo

For easy access, I have saved all of the AdventureWorks sample databases to my OneDrive account and provided links to the resources below.

SQL Server 2014

Adventure Works 2014 – Full Database Backup (

Adventure Works 2014 OLTP Script (Adventure Works 2014 OLTP

Adventure Works 2014 Warehouse Script (Adventure Works 2014 Warehouse

Adventure Works DW 2014 Full Database Backup (

Readme for Adventure Works 2014 Sample Databases (Readme for Adventure Works 2014 Sample Databases.docx)

Adventure Works DW Tabular Model SQL Server 2014 (Adventure Works DW Tabular Model SQL Server

Adventure Works Internet Sales Tabular Model 2014 Backup (AW Internet Sales Tabular Model

Adventure Works Internet Sales Tabular Model 2014 (Adventure Works Internet Sales Tabular Model

Adventure Works Multidimensional Model SQL 2014 Full Database Backup (Adventure Works Multidimensional Model SQL 2014 Full Database

Adventure Works Tabular Model SQL 2014 Backup (AW Tabular Model SQL

AW Multidimensional Models SQL Server 2014 (AW Multidimensional Models SQL Server

Readme for Adventure Works DW 2014 Multidimensional Databases (Readme for Adventure Works DW 2014 Multidimensional Databases.docx)

SQL Server 2012

Adventure Works 2012 Data File (

Adventure Works DW 2012 Data File (

Adventure Works Multidimensional Models SQL Server 2012 (AdventureWorks Multidimensional Models SQL Server

Analysis Services Tutorial SQL Server 2012 (Analysis Services Tutorial SQL Server

Adventure Works Tabular Model SQL Server 2012 (AdventureWorks DW Tabular Model SQL Server

Adventure Works Internet Sales Tabular Model SQL Server 2012 (AW Internet Sales Tabular

Adventure Works 2012 CS OLTP Script (AdventureWorks 2012 CS OLTP

Adventure Works 2012 OLTP Script (AdventureWorks 2012 OLTP

Adventure Works 2012 CS Data File (

Adventure Works LT2012 Data (

Adventure Works DW 2012 Images (

Adventure Works 2012 LT Script (AdventureWorks 2012 LT

Adventure Works 2012 – Full Database Backup (AdventureWorks2012-Full Database

SQL Server 2008R2

Adventure Works 2008R2 Data File (

Adventure Works DW 2008R2 Data File (

Adventure Works 2008R2 OLTP Script (AdventureWorks 2008R2

Adventure Works 2008R2 DW Script (AdventureWorks 2008R2 Data

Adventure Works 2008R2 LT Script (AdventureWorks 2008R2

Adventure Works 2008R2 – Full Database Backup (AdventureWorks2008R2-Full Database

Adventure Works DW 2008R2 Cube for SSAS 2008R2 (Adventure Works DW

Adventure Works 2008R2 LT Data File (

SQL Server 2008

Adventure Works 2008 Database (

Adventure Works LT2008 Database (

SQL Server 2005

SQL Server Samples (SqlServerSamples.msi)


Northwind Database (


Frequently Used SSRS Date Expressions

This is a list of common SSRS expressions for defaulting parameters to first and last dates of year, month and previous.


Pragmatic Works SSRS Expressions Cheat Sheet