These days, it seems like there are more and more people out there “learning to code”. 

TL;DR - Book list is at the bottom. 

Every day there is another boot camp, code school, or one of many scores of opportunistic business ventures opening up.  Many claim to not only teach you this amazing magical skill that is programming, but they will also magically imbue you with the personality needed to get past the HR Manager. 

Don’t fall for the trap.  There are so many extremely reputable websites out there, free tutorials available, along with tons and tons of amazing blogs, videos and more that are just itching to teach those willing to learn. 

Hearing the WWDC keynote say coding isn't hard frustrates me.  It's extremely hard.  You're setting beginners up for huge disappointments. —  Tyler McGinnis (@tylermcginnis) June 13, 2016

In my experience, it seems like the most likely candidate to attend a “Code School”–or any of these 8 to 12 week “Bootcamps” where you’re supposed to learn everything you need about coding to not only get a job but also be a ninja–is the aspiring coder with 0 experience and sometimes even lacking technical knowledge.  This is an issue, and unfortunately not one that is necessarily the business’ fault or aim to achieve. 

As Scott Hanselman recently posted on his blog, Stop saying learning to code is easy. 

Why?  Because if you’re someone who has spent any amount of time programming, you know better.  Scott mentions this on his blog: specifically landing the argument that when we tell people that programming is easy, what will they think when it gets difficult?  And as any real developer can flatly tell you: It will get difficult.  Your difficult and my difficult may not be the same.  In fact, let’s hope they’re not.  However, NOTHING changes the fact that it WILL GET HARD. 

When we tell folks - kids or otherwise - that programming is easy, what will they think when it gets difficult?  And it will get difficult.  That’s where people find themselves saying “well, I guess I’m not wired for coding.  It’s just not for me.”  Now, to be clear, that may be the case.  I’m arguing that if we as an industry go around telling everyone that “coding is easy” we are just prepping folks for self-exclusion, rather than enabling a growing and inclusive community.  That’s the goal right?  Let’s get more folks into computers, but let’s set their expectations. 

– Scott Hanselman, June 2016

That said, I think the best thing any and all developers can do then is to always always always be working on getting better at your craft.  This is what will keep you sharp.  Caring about your craft and continuously improving upon your skill set are the only tools we have to combat entropy, thus we must use them. 

For this, nothing beats reading.  And I mean nothing.  Sure, there are plenty of situations where perhaps coding a sample teaches me a lot more.  Sometimes it seems so much easier to just copy & paste in someone else’s solution, or drag in a library we know solves the problem.  The question is: At what cost? 

Without any further ado (thanks Lizard), mark rant end, here is my list of absolutely required reading for any and every Software Developer out there, in no particular order.  These are all books that I have personally read cover to cover and completely recommend that you do too.  Each and every one provided me with new and different insights, all of which have been absolutely invaluable. 

Programming Books

Almost every book on this list (except last few) are 100% language agnostic, as such the advice in them can be applied to ALL programming languages. 

Books on Management & Entrepreneurship

Hope everyone is having a wonderful holiday season!  Now that things have calmed down a bit, I will turn back toward blogging as often as possible.  I am very much looking forward to continuing and completing my series of NancyFX.  Beyond that, I take great pleasure in knowing that I may be helping someone solve problems.  That being said, .NET Core continues development at a breakneck pace and I will do everything I can to keep everyone up to date here.