My Tech Resolutions for 2021
Published: 2021-01-05 05:24:07

Last week I had some well-needed rest from my coding bootcamp with Flatiron.  While I tried my best to stay off the code editor, I did spend a few hours here and there, and ended up spending more time than I should have watching tech-related youtube videos... One video that caught my attention the most was [this video](https://www.youtube.com/watch?v=oHtR5YSPLjo) regarding tech trends & predictions for 2021. 

Now that I'm less than a month away from the end of my bootcamp, the thought of entering the job market has become all too real, and it made me think a lot about what I'm going to have to *teach myself* once the guided work ends.  In that regard, I thought it would be helpful to write out some **tech resolutions for 2021**:

## 1. Learn C++

It's often said that learning coding fundamentals and concepts is much more important than learning languages, and I 100% agree.  However, I've also heard that it is valuable to learn at least one lower-level language, and I've *also*, also heard that it is valuable to learn a form of C.  Because of that, I've added C++ to the top of my list of languages to dive into for 2021.

C++ has a reputation for being one of the most difficult languages to pick up, an idea which is summed up great [this article](https://adamtcroft.com/why-c-is-so-hard-to-learn/).  Here's a great excerpt:

> "With C++ you really need to know what and why you and the computer are doing what you’re doing.

> This can be thrown in contexts of 'efficient operations' or 'garbage collection' or 'memory management' or whatever – but it all boils down to the same idea at the end of the day."

Long-story-short, C++ gives you a lot of power and freedom when it comes to data management, storage, and in what coding paradigms you follow, but that also means you'll need a stronger understanding of computer science to succeed.  I for one am excited to see what great and terrible things I do to my Macbook while I figure this all out.

[Here is a great blog](https://medium.com/sololearn/reasons-to-love-c-11c7c2f23d88) if you need some good C-heerleading.

## 2. Develop a full-stack MERN application

MERN is one of those cool buzzwords that you see online a lot, and there are plenty of great tutorials that can help you on the path to building your own MERN application.

MERN stands for: 
* **M**ongo DB
* **E**xpress JS
* **R**eact JS
* **N**ode JS

This is a back-to-front Javascript application.  One of the big takeaways I gleaned from the 2021 trends/predictions is the general plateau-ing of Javascript as a language, and how it's actually a pretty cool thing.  Javascript is not going away any time soon, and there are supposedly fewer and fewer big updates to be made.

Key things to know about each of the technologies:
* **MongoDB** - Data is stored in a NoSQL format, meaning that instead of database tables with rows and columns, you have documents inside of collections, each with data stored in JSON objects!  Because we utilize this data structure, we can store more powerful data such as arrays!
* **ExpressJS** - A backend-oriented framework for NodeJS.  It can be used to build multi-page web applications, following a model-view-controller structure, but is more commonly used to develop a backend-API to use alongside...
* **ReactJS** - Arguably the most popular front-end JS framework.
* **NodeJS** - A runtime environment for Javascript, allowing it to be executed outside of the browser.  It's the *glue* of the whole application!

As a sidenote - this is also a great time to learn Typescript as well...

## 3. React Native ***- or -*** Flutter

I've flip-flopped on this many times in the last few months, and I'm leaning towards React Native at the moment.  [Here](https://nevercode.io/blog/flutter-vs-react-native-a-developers-perspective/) is a fantastic article that compares the two platforms in depth (spoiler alert-**Flutter** won).

What are the benefits of learning *either* platform?  They both allow users to develop **cross-platform** applications, using a single codebase.  This cuts down a lot of time and energy wasted learning one language for iOS and another for Android development.  Time is money, and since I'm planning my next mobile-app like a career criminal going back in for *'one last job'*, I'm expecting a huge return on investment.

## 4. A Testing Framework

Honestly, I can't tell if this will be me favorite or least-favorite technology I learn this year, but I have a feeling it will be one of them.  I recently had my first experience in automation, creating a web-scraping script to grab apartment listings off of Craigslist.  If using a testing framework is *anything* like that, I'll be looking forward to it.  

The frontrunner for me is **Jest**.  It's one of the strongest contenders for JS testing frameworks, and it's built with React in mind.  

#### This list could go on forever...

There are a ton of things I would love to learn this year, but those are the top 4 on my list.  I'm sure at least 3 will change by March.

Cheers.