Learning Goals as of March 2017
I never really set any concrete learning goals for 2017. When I started Dev-eryday, all I knew was that I wanted to build up my skillset and get better each day. This process has been a lot of fun and I’ve learned a great deal so far. Now that I’m two plus months into the project, I feel like it’s time to throw out some more quantifiable targets. Simply learning for learning’s sake is too open ended to achieve extreme results. The only way, if there even is a way, to do something crazy like learn five year’s worth of material in six months is to go about it in a pragmatic way. There’s probably no such thing as a shortcut like five years worth of learning material in six months, but this is a road map to possibly get there.
Things I Want to Learn or Improve At
C# and .NET - This is my bread and butter skill. There is power in making a strength even stronger. I will create and deploy an application using .NET Core as the back end. I will use C# 7.0 and all the latest Microsoft tools to complete this task. The code will be supplemented by watching courses online, reading books, and writing articles about what I learn. This will all be in addition to whatever I create on top of this at my day job.
JavaScript - JS is every where and it’s growing every day. I want to take my skills in the language from average to exceptional. The utility of JavaScript on the modern web is unparalled. I will continue to pick up knowledge about both the language and popular JS frameworks like React. I will try to use React as the frontend engine for the software I release using .NET Core as the backend.
Elixir - Last summer I spent a few night’s playing with Elixir. The time spent playing with the language was a total joy. For some reason I didn’t stick with it back then, I wish I would have never stopped. I’d have a major leg up on the language from where I’m starting now. Since it’s always a good idea to pick up a new language each year, Elixir will be the language I focus on learning this year. The idea of creating a bunch of distributed, concurrent processes and having scalability built right into the language is a fascinating concept.
Front End Skills - I want to deliver a lot of software, one of the best ways to make people want to use it is to make it look nice. These skills will be learned largely by proxy while learning other techniques and building tools.
Software Delivery Practices - Improving dev ops type skills makes life so much easier. I’m also going to lump software engineering practices into this. So many great books have been written on the subject, I will read at least one, I’m leaning towards attacking Code Complete first. I will also play with some container technologies and focus on learning a single testing framework inside and out. There will be a focus on seeking out best practices and mastering the process of software delivery.
Algorithms - Algorithms are a timeless skill. No matter what happens in the next 1000 years, algorithm design techniques will always be relevant in problem solving. Time spent improving these skills is always time well spent. I will practice implementing algorithms from scratch after reading about them in books or online. I might even audit a MOOC course on Coursera or Udacity.
Database - I use SQL Server every day, leveling up these abilities would have immense value in making my work days go smoother. From database design to database administration techniques to writing better, more efficient queries, there’s a wealth of ideas to be uncovered. Knowing how to setup and store data such that it can be analyzed cleanly, easily, and efficiently is so important.
The Process
I will put in the effort to build my skills and I will continually improve over the next few months. I may not hit these targets or even learn about these specific subjects at all, but there will be constant growth. I’m looking at skill acquisition with an eye towards the longterm perspective. Each thing I learn now expands my body of knowledge for the rest of my days.
With this list, I now have a narrower list of subjects to pull from. I’m going to evaluate these items quarterly. I want to be as flexible as possible but also make great progress. There’s no reason not to pursue a subject just because it isn’t on my list of learning goals. Also, if I’m not feeling a specific subject I’m not going to force myself to dig deeply into it. Keeping the enrichment as fun and interesting as possible is absolutely critical to sticking with a project like Dev-eryday. So that’s what I’m aiming for, there’s a lot of fun ahead.