Learning Resources

Here are some of the many resources I’ve used to improve myself and my development skills. I hope you find these as helpful in your career as I have in mine.

The beginner resources I used when I first began programming are out of print, so the list below has few true beginner resources.

Software Development in General

Code Complete
Author: Steve McConnell / ISBN: 978-0-7356-1967-8
This should be on every developer’s required reading list. Good practices of software construction are essential to quality maintainable code. This book provides a great foundation for considering implications of decisions early on in the design process, using comments appropriately, and many other topics from large-scale design to small implementation details.

Udacity Design of Computer Programs
Instructor: Peter Norvig
I’d been programming for over a decade when I took this course, so for me, much of its content was as much about learning to write Python in a Pythonic way as it was to design software in general, but it would be good for the latter for anyone not already familiar with software design.

CODE The Hidden Language of Computer Hardware and Software
Author: Charles Petzold
An explanation and history of how data is encoded and how computers work.

C#

.Net Videos
Beginner-friendly videos on C# and various .NET topics from Microsoft

.Net Foundation Resources
Workshops, Presentations, E-Books, and Tutorials for various skill levels (including beginning developers)

C# In Depth
Author: Jon Skeet
Detailed explanations of many C# concepts - note: this book is intended for experienced C# developers and assumes significant existing knowledge of the C# programming language

Git

Learn Git Branching
Interactive Git tutorial with visuals to explain Git operations.

Pro Git
Authors: Scott Chacon and Ben Straub
e-book version available on Git’s website, with a print version available for purchase

SQL

I listed the books below in the order I read them - the concepts from these books get progressively more advanced, and the advanced books will make more sense with the knowledge foundation from the first books.

Inside SQL Server 2008 T-SQL Querying
Authors: Itzik Ben-Gan, Lubor Kollar, Dejan Sarka, Steve Kass / ISBN: 978-0-7356-2603-4
There is a newer edition currently available, but I used the 2008 edition. I’ve heard that the the new edition of the book should be as good as the one I read.

Inside SQL Server 2008 T-SQL Programming
Authors: Itzik Ben-Gan, Dejan Sarka, Roger Wolter, Greg Low, Ed Katibah, Isaac Kunen / ISBN: 978-0-7356-2602-7
Unfortunately, this doesn’t appear to be in print any longer, but there were still e-book versions for sale the last time I looked. If anyone knows of a more recent book or resource that covers this same material in similar depth, please let me know.

Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions
Author: Itzik Ben-Gan / ISBN: 978-0-7356-5836-3

Microsoft SQL Server 2014 Query Tuning & Optimization
Author: Benjamin Nevarez / ISBN 978-0-07-182942-7

Algorithms and Data Structures

Some of the materials below are language-specific, others use pseudocode and leave it to the reader to implement in the language of their choice. I’ve noted the programming language used in each course.

Algorithms Illuminated - pseudocode
Author: Tim Roughgarden
These books are by the same author as the Coursera specialization listed below. Book 1 of this series was the best starting point for algorithms for me. Note: the design and implementation of common data structures like linked lists, stacks and queues aren’t covered in these books, but you will need to use stacks and queues for graph searches in book 2.

Coursera Algorithms specialization - pseudocode
Instructor: Tim Roughgarden

Khan Academy Algorithms - JavaScript

Udacity Intro to Algorithms - Python
Instructor: Michael Littman

Algorithms 4th Edition - Java
Authors: Robert Sedgwick, Kevin Wayne / ISBN: 978-0-321-57351-3
When I began reading this, I was working almost exclusively in C#. The differences between C# and Java are small enough that it was relatively easy for me to understand the Java code despite not having previously programmed in Java.

Introduction to Algorithms - pseudocode
Authors: Cormen, Leiserson, Rivest, Stein / ISBN: 978-0-262-03384-8

Math

Khan Academy Math
Everything from addition and subtraction all the way through statistics, calculus, linear algebra, and differential equations. The first place I’d recommend for anyone wanting to improve their math skills.