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.
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.
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.
- Clean Code by Robert C. Martin
- The Clean Coder by Robert C. Martin
- Scrum: The Art of Doing Twice the Work in Half the Time by Jeff Sutherland & Kent Beck
- The Pragmatic Programmer by Andrew Hunt & David Thomas
- Code Complete: A Practical Handbook of Software Construction by Steve McConnell
- Code: The Hidden Language of Computer Hardware and Software by Charles Petzold
- Soft Skills: The software developer’s life manual by John Sonmez
- ADTs, Data Structures and Problem Solving with C++ by Larry R Nyhoff
- Problem Solving with C++ by Walter Savitch
- C# In Depth by Jon Skeet
Books on Management & Entrepreneurship
- The Hard Thing About Hard Things by Ben Horowitz
- Zero To One: Notes on Startups, or How To Build The Future by Peter Thiel
- How to Fail at Almost Everything and Still Win Big: Kind of the Story of My Life by Scott Adams
- Start with Why: How Great Leaders Inspire Everyone to Take Action by Simon Sinek
- High Output Management by Andrew Grove
- Deep Work: Rules for Focused Success in a Distracted World by Cal Newport
- Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead by Laszlo Bock
- The Obstacle Is the Way: The Timeless Art of Turning Trials into Triumph by Ryan Holiday
- Pitch Anything: An Innovative Method for Presenting, Persuading, and Winning the Deal by Oren Klaff
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.