Yesterday I enjoyed watching Play by Play: Website Security Review with Troy Hunt and Lars Klint. Afterwards I went to my profile page and saw this:
Wow, 300 courses! Over 1000 hours! This got me reflecting on all of the courses that I’ve watched, and the effect that they had on me. What have I learned? What did I enjoy most? The good times, the bad times, and everything in between.
Then it occurred to me that this is the perfect time to write a guide to the very best of Pluralsight.
Although I’ve still only watched a fraction of the full set of courses on offer, it is the biggest fraction that I know of.
Last year I wrote some advice of what courses to watch as part of the guide to making the most of pluralsight but didn’t want to be too specific because it will inevitably according to your personal circumstances.
However, I do feel that there are some courses that the vast majority of IT developers will get a lot out of, regardless of what level you are at in your career or what languages you use. There are pieces of advice that have just stayed with me that are a positive influence on me every day at work. These are the courses with the most value which I will be covering.
Filtering 300 courses down to just 10 isn’t an easy task, and I’m sure that some of you will disagree with them. I invite you to add you own comments if you do. Before we started I want to explain the principles that helped get me there, in order in importance:
1. I am assuming that you are based in development rather than systems administration. If you work in the IT Pro segment of our industry, then you will still get a lot out of the majority of these courses, but not all of them.
2. It’s my belief that a good developer should be able to program in a range of different languages, and across an even wider range of frameworks. Courses that teach you one language or one framework, although useful, are in most cases less valuable than advice that is broadly applicable across multiple languages and has no expiry date. This principle has helped me massively in producing the shortlist because it’s let me discount the majority of the courses that I’ve watched. If you are specifically interested in performance and scalability then ignore the list below and instead head over to my performance page
3. Longer courses are going to provide a lot more information, but also require more investment of your time. So I’ve considered the density of quality advice covered in each course rather than the total amount of useful advice.
4. I’ve tried not to show too much favoritism to any one particular author. There are some authors that could arguably have more of their courses in this Top 10, but where it was very close (and it was) I’ve gone for the author who I haven’t already covered before.
So here they are, in reverse order:
10. Productivity Tips for the Busy Professional
By Richard Seroter
Richard is the type of person who is able to juggle a seemingly inhuman amount of different things. How is it possible?
He says “I don’t see myself busy, just that I do a lot of things, and the key is trying to manage all that well.”
This is one of the shortest and most densely packed courses, at just 59 minutes long and covering 17 different tips and three different areas: Foundation, Frame of Mind, and Time Management.
Richard’s aim for the course was for you to be able to watch it in your lunch hour.
The tips are actually much more nuanced than just the titles suggest. In some areas, it even sounds a little contradictory. It was only after I had watched it a second time that I was able to fully appreciate everything that he was saying.
For each tip, he specifies a myth about how to live, discusses the reality, and covers some examples for how to do it in practice.
9. C# Programming Paradigms
By Scott Allen
I hold my hands up. This appears to be a blatant contradiction of my earlier statement favoring broader material over courses on one language. But I have two important points to make. Firstly, the vast majority of the advice is easily applicable to Java or many, many other Object Oriented Languages. Secondly, it is such a good summary of how to craft higher quality code. It really expresses the essence of it.
I am especially talking about the final module of the course, focusing on the craft of writing code that is easy to read and shows quality. Scott covers his 10 favorite rules for developing software, saying “I strongly believe they have helped me produce quality software for a variety of companies and most of that software is now sold all over the world.”
8. Making the Business Case for Best Practices
By Erik Dietrich
Best practices for software development are very many and are changing all of the time. They also vary enormously from company to company. Erik explains that whatever the “best practice” it is only really best practice if it is in the interests of the company that you work for. In reality, many and perhaps most companies either fail to adopt useful technologies and processes until too late, at great expense, or adopt them too early, also at great expense.
Determining whether or not to adopt any “best practice” is so isn’t always trivial, and often requires significant research and discussion. Erik covers this subject in depth, covering many different best practices, looking and the benefits and costs of each and offering detailed advice on how to do the sums and make the business case. It covers how to overcome various objections and also how to navigate the politics that might be in play.
7. Date and Time Fundamentals
By Matt Johnson
Everyone above the age of about 21 remembers the enormously expensive farce that was the 2YK problem, and in less than 23 years time we will have the same fun all over again. But these are just problems that make the newspapers and are the tip of the iceberg. When it comes to software glitches, some of the most expensive ones are due to mistakes developers (and to be fair also business analysts, business users, quality assurance tester and managers) make with their dates and their times.
Matt begins saying “You might be thinking what could I possibly learn that I don’t already know? I can assure you that this is one topic that developers THINK they know but really don’t.” And he’s right:
I knew that there were some peculiarities with different Time Zones, but I didn’t know that it was anywhere near as complicated as it actually is until I saw this course.
After so many years as a developer, it was quite humbling to find that there was so much I didn’t know about such an important topic. Academic teaching on dates and times leaves a lot to be desired. Even at University it wasn’t covered at all except for passing mention of Y2K. Like web security, correct use of dates and times is something that is very important to know and costly to not know. The difference is there are plenty of books and courses on Web Security. Books on Dates and Times are much rarer and developers never think to look for them because they think they already know it.
The total course length is 6h 19m. Although I recommend watching it all the way through, if you are pushed for time and can only watch a bit, skip to Common Mistakes and Best Practices, which is less than an hour long.
6. Refactoring Fundamentals
By Steve Smith
This course will improve your programming skills. You’ll gain a much better understanding of the many code smells and the techniques available for correcting them. This is the longest course in this Top 10 at 8 hours and 1 minute, but is consistently high quality throughout, and is exactly the correct length for this large and important topic.
5. Management Strategies that will Increase Productivity Today
By Jay Mcfarland
Although you may not be a manager now, there’s a high probability that you’ll find yourself gradually taking on more management responsibilities as your career progresses. You might need to mentor a junior developer, manage the team when your manager is on holiday, or become team leader. Having strong technical skills will not help much to make you a good manager. Soft skills are another category of learning with equal importance.
There are many good management courses on Pluralsight, but this is my favorite. The advice is straightforward, simple and very memorable.
It describes a way of dealing with people in such a way that you maximize their productivity because they are happy. You’ll learn about human psychology and gain a greater understanding of all of the things employees care about other than money. As an employee yourself, you may think you already know these things, and to some extent you already do, but only at an implicit level. As Jay covers these explicitly, you’ll understand much more clearly.
Maslow’s hierarchy of needs was published way back in the 1950s and while our lifestyles have changed a lot since then, the essence of this work still very much applies today. You’ll learn how it relates to the workplace and how management can change the pyramid.
You’ll also learn the concept of the pendulum of success, how you can fuel that pendulum with systems of accountability, about proper training over crisis training and how it relates to the pendulum and the hierarchy of needs, what to do when a problem occurs, the fallacy of micro-management, and much more.
4. Outside In Test Driven Development
By Mark Seemann
The merits of Test Driven Development are still disputed and misunderstood. However, years of experience have taught me that when done right it has a hugely positive impact on code quality. There are of course many more ways to do it wrong than of doing it right, but this is a training issue.
This course is easily the best one for learning Test Driven Development. It is not an introductory course, you either need some prior experience or to watch another course or courses for that, but if you are fairly proficient and want to raise your game, invest your time in understanding these concepts and it will reap dividends for you.
3. Becoming an Outlier: Reprogramming the Developer Mind
By Cory House
What is software development to you? A job? A career? Or a calling?
This course is all about challenging you and inspiring you to do more with your career. However well your career is going for you, you can do better, and this course will help you get there. Covering how to command your time, hack your image, and own your trajectory, this is exactly the boost that you need.
2. Learning Technology In the Information Age
By Dan Appleman
With so much to learn and so little comparative time available, it’s critically important to optimize how and where we spend our time. But with so many different options, how can we decide? Are we focusing on the wrong things? In just 95 minutes, Dan gives you a unique perspective that will change the way that you think about learning and development.
1. Get Involved
By Rob Conery and Scott Hanselman
I have already written a blog post both inspired by and about this course, and when coming up with this list there was little doubt in my mind that this should be at Number 1. Covering Blogging, Twitter, Github, StackOverflow and User Groups, this is the perfect recipe for finding and engaging with amazing people with the same interests as you. Following it will improve both your career and your overall happiness at work.
I hope that you will join me in congratulating all of these winning authors!
Full disclosure: the excellent courses that narrowly missed out on the Top 10 spots are:
DDD Fundamentals by Steve Smith and Julie Lerman
Preparing for a Job Interview by John Sonmez
Code Testability by Misko Hevery
Web Security and the OWASP Top 10: The Big Picture by Troy Hunt
Website Performance by Kyle Simpson
Clean Code: Writing Code For Humans by Cory House
Introduction to Leadership and Management for Developers by Dan Appleman
Update 11th April:
The day after I published this blog post I checked to see which of these courses were in the Top 100 for popularity, Scott Allen’s course was the only one in there at #96. This has now risen to #91 spot. No other courses have reached the Top 100.
I have also been thinking what do I do if I watch a new course that blows everything else away? Do I push one of the above courses out to make room for it? I’ve decided not to do that. Instead at some point in the future (probably next year) I will produce a list of best courses for senior technical professionals. These will be the best courses for learning Advanced techniques and knowledge and unlike the above list it will favour specific languages and frameworks.