A couple of months ago my buddy and colleague Dave Shah initiated a book club to read Uncle Bob Martin‘s Clean Code. While it was Dave’s 3rd(ish) time reading the book it was actually the first time for me. Wow. With literally every chapter I found myself thinking “Geeze, I wish I knew all of this 10 years ago”. If you haven’t read the book then you really must. It is an absolutely essential read for any developer who cares about developing good software… but I digress.
Reading the book really caused me to reflect on the technical debt I had unwittingly inflicted over the years. It also made me realize that I’ve never really given software craftsmanship a real shot. That is, the best code I’ve ever written was woefully oblivious to things like the Law of Demeter, the Single Responsibility Principle, and even good naming conventions. My role as a Development Manager has ironically and gradually pulled me away from what should be one of my most important areas of expertise: software development.
So after feeling inspired and excited about a new (to me) way of thinking about programming, I decided to start a side project with the following goals in mind:
- Try to deliberately practice Clean Code principles like TDD, refactoring, good naming conventions, the SOLID principles, Demeter’s Law, etc.
- Finally learn how to use GIT and GitHub (check out https://github.com/jakejgordon/NemeStats!)
- Try to get caught up on the current state of ASP.NET. This includes ASP.NET 4.5, MVC 5, Entity Framework 6 using Code First and Migrations, etc.
- To check out the Windows Azure platform for hosting a website and database
- To figure out how use Google Universal Analytics and the Measurement Protocol for pushing event data from the server-side
- Figure out how to publish NuGet packages (check out this package I built to help with pushing Google Universal Analytics events via the Measurement Protocol: https://www.nuget.org/packages/UniversalAnalyticsMeasurementProtocolWrapper/)
I’m excited to say I’ve mostly completed all of my goals — although the clean code part is a lifelong journey of course. However, to find time to do this I’ve deliberately squeezed out almost all of my personal free time. I can honestly say it has been extremely rewarding. Computer gaming has always been my favorite pastime, but I’ve always known it really doesn’t amount to much of anything other than short lived fun. While I may not be having quite as much fun in the moment while I program, it’s a more rewarding variety of fun.
I hope to blog on many of the things I’m learning and have learned but at the moment I’m really just having a great time coding!
I would be delighted if you’d check out my code on GitHub and tell me what you think. Feel free to skewer me — you won’t hurt my feelings! My only goal is to learn and get better.
Also, if you like to play board/card games with a fairly stable group of friends, maybe you’d like to check out my nemestats.com website. It’s totally free. I welcome your feedback!