The Road Map: 2020
Tags: 2020, career
Published: 2020-02-19 04:36:23

---
title: The Road Map: 2020
published: true
date: 2020-02-18 13:00:00 UTC
tags: 2020, career
cover_image: https://res.cloudinary.com/programazing/image/upload/v1578105431/blogposts/2020/The%20Roadmap%202020/The_Roadmap_2020.jpg
canonical_url: https://www.thatamazingprogrammer.com/blog/the-road-map-2020/
---

_Image by [Hello I'm Nik 🇬🇧](https://unsplash.com/photos/YiRQIglwYig)_

Like I talked about in my [last post](https://www.thatamazingprogrammer.com/blog/looking-to-the-future-my-2020/) I decided not to set resolutions for this year but to instead layout a roadmap. In the past, I would normally set out some [S.M.A.R.T. Goals](https://www.mindtools.com/pages/article/smart-goals.htm) and then write quarterly update posts to let people know how I was doing. I still plan on doing quarterly reviews as a way to keep me on track and to let you know what's going on.

This year I'm only focusing on two overarching goals; my health and my career.

In this post, I'm going to layout the overall technical topics I plan to focus on but I'm not going to go super in-depth. Later this month I'll put out another blog post detailing how I plan to use the roadmap and how I plan to keep myself on task.

I actually put this post off for a while because in January I was bombarded by idea after idea on how to implement a learning year and how to keep track of everything. I eventually decided that I was trying to do too much with this post and split them up.

* C# Fundamentals going
* API Design
* Linq
* Entity Framework
* SQL
* TDD
* JavaScript
* Design Patterns
* Azure
* Unit Testing

## C#  

I plan on focusing on the basics this year which to me means things like:

* Dependency Injection
* When to use an Interface
* How to design an Interface
* How to Refactor
* How the Build Pipeline works
* Extension Methods vs Statics
* Statics vs Instance Methods
* Etc.

## API Design

I'm sure I could improve on how I layout my APIs and how they perform. I've come to realize I really like working with APIs and I just want to be better at it. I plan on figuring out some more specifics soon but that's all I have for now.

## Linq  

I've used Linq for years but I plan on doing a deep dive into how certain features work. Notably, I'll be doing a blog post about how __every__ [enumerbale method](https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable?view=netframework-4.8) works.

## Entity Framework  

I've come to the conclusion that if you're going to use Entity Framework you should really have a better idea about how things work under the hood and how E.F. decides to build queries and perform optimizations.

## SQL  

While interviewing recently I've come to realize that I rely on E.F. way too much in my career. That's because it's in almost every major application I've ever worked on whether I've designed the application or it was pre-existing.

This year I plan on reviewing the basics of SQL that I already know and build on that foundation by using Dapper in my smaller applications.

## TDD  

The more I use TDD the more I realize how amazing it can be, for me anyway. Even after I've designed the basic layout of a class on paper TDD helps me catch flaws in my logic. I've completely redesigned entire classes because it just didn't make sense when I was building the tests.

This year I want to get more serious in my use of TDD by using it to make some public libraries I have in the works.

## JavaScript

I tend to live in the back-end of a project usually working on the business logic of designing an API so I don't tend to use JavvaScript that often. At most I'll use TypeScript in Angular and ASP.NET web apps but that's not the same thing.

I want to deepen my understanding of JavaScript, and to a lesser extent TypeScript, so I don't let that knowledge just rust away.

## Design Patterns

Throughout my career, I've used Design Patterns and not even realized it.

I can recall using a decorator pattern on another dev's code because they refused to work with the rest of the team. I was the lead developer on the project and we couldn't afford to be down a developer. The issue was that they were in Germany, the other dev was in California, and I was in Kentucky. I decided that since the owner didn't want to hear about our "bickering" we'd write wrappers around his code just to make the deadline.

Now I'd love to learn more about Design Patterns so I can point them out more easily, use them in the planning stages of a project, and optimize my refactorings.

## Azure

I've used Azure in the past but not for much. More and more these days I see jobs calling for AWS or Azure experience and I simply don't want to be left behind. I decided to go with Azure just because it's in the .Net stack and for no other reason. I'm told if you know one then you can pick up the other pretty easily.

## Unit Testing

Though I Unit Test as part of my TDD practice I want to do a deep dive and learn more about best practices and see if I can improve how I work.