Making the Switch to a new Language
Tags: typescript, csharp, dotnet, react
Published: 2021-02-25 02:49:11

# But Why?!!
I know some of you out there are thinking why is this person moving from the beloved TypeScript and React to the dreaded and devilish C# platform. I get that C# and .NET have a lot...baggage I guess you could say. For those of you that are C# and .NET(dotnet) devs that are thinking "Well duh, the answer is because C# is an Enterprise level language." That is most definitely not the reason. TypeScript in my opinion and how I have been using the past three years has been just as much an enterprise level language as Java and C#. The reason is simple. Games.

# Why I Got Into Programming 
A few years back, and when I say a few years I mean 6. Yeah that's right in 2015 (6 years ago) I started the adventure of a lifetime. I decided I was going to become a video game developer. I loved playing games. I had a huge amount of things that I wish I could have added to just about every game I was playing at the time how I would make this change or add this feature to better a game. But the one thing I didn't have was the knowledge or know how in order to get the job done. 

I probably did what a lot of people in my shoes did and found the Unreal Engine and realized that they had just released UE 4 and you could start using it for free to learn how to build your own games using their engine. This was a dream come true. I had played several great looking games that ran on the Unreal Engine. Batman Arkham XYZ comes to mind as all of those are built using Unreal Engine. It was set. I was going to learn Unreal Engine. I had been in IT for a little bit at the time. I knew some network scripting and how to build a computer from scratch and all of that. How hard could it be. Plus I really wanted to do it. Like more than anything else in the world I wanted to become a game developer. 

I bought a course on Udemy that was going to teach me how to create a few project games in UE4 and it was going to be great. By the way this was before the blueprint feature that you can use now in UE4. At this point you had to do everything from scratch using a programming language called C++. Uh oh. What is this C++?

# Unreal Engine, more like No Way In Hell Engine
I started down the road of this getting everything installed locally for development and was super excited. Had a nice computer and Visual Studio 2015 installed and ready to go. Got to the first video on C++ and immediately my head went WTF?! What is he talking about? I need to call this an int and open use something like a half ass smile with two eyes? What? ::>>? Huh? Then I started researching. Is C++ a good language to start with? Should I learn C++ as my first language? The answer to these questions from most developers was no. This is a great language. It's fast, handles all of your needs and then some. Makes really great game scripts. Etc. But the number one thing that every post and answer from friends and colleagues all said was it was hard and difficult to master without learning an easier language like Python. 

# Enter Python and Network Scripting
I started to look more into Python since I was a junior Network Admin and was needing to learn how to automate several scripts for our network. I was able to pick up Python with ease. Had a blast with it. Even built a few games using the game engine PyGame. I actually teach a course on Udemy for beginners with Python who want to learn how to code by building games with Python. But I am not going into the details of that course here. But I still wasn't happy. I wasn't building actual things with Python just scripts that more than half of them weren't even being used. Really started to urk me the wrong way. So I tried it again.

# Back to Unreal Engine
I decided I had a few years of Python going for me now. Built a few games and a website or two. Let's see if I can figure out what this C++ language is and how I can create really awesome looking games with UE4. I was able to get into the language and understand it's idiosyncrasies. It's god awful syntax as well. I realized I didn't quite care for this language and how it looked. It wasn't that it was hard to understand now. No it was that the language itself was just butt ugly compared to the elegance that was Python. Python was a great looking language that forced you to do things its way and made you a bit better coder for it. But C++ and I were not going to get along with it's ugliness in play. So I again moved on.

# Enter JavaScript, Node, React and TypeScript
I decided I was going to go into web development because the websites I had created with Python were pretty fun. I was researching new ways to build websites and came across JavaScript with React and Redux. Ok sounds pretty promising. I could even use Django and Python to do the server side code. Great. Let's look into this. I took a few classes here and there and decided that I liked JavaScript's syntax. It wasn't too bad looking. I could build both the front end and back end with the same code thanks to Node. That was awesome. Then I landed my first job as a developer and we decided midway through a project that we were going to switch to this up-and-coming language called TypeScript.

# TypeScript Love
Man did TypeScript and I hit it off. I really liked that it added what I had to do in C++ for UE4. Strongly typed variables. Things were starting to look pretty awesome. Started working on all kinds of projects for work and even ones outside of work. Really wanted to get better at TypeScript and building out applications. I started using it more and more. I incorporated TypeScript into all of my React projects. Started using it with GraphQL and Node as well. It was awesome. Then I decided to go back to games. But this time I decided to give Unity a shot. A language that was created by the same creator of TypeScript Anders Helsberg, helped to create C# and came back to Microsoft to help develop TypeScript as well. 

# Unity for the Win
Well Unity turned out to be a great game engine. C# is a great language to code in and look at. My time with TypeScript helped me grasp the concepts of C# way easier. And I even found out that I can use C# for more than just games. I can use .NET Core for cross platform applications and websites. And I can use Xamarin for mobile apps which is awesome because I was a heavy user of React Native for a long time as well. I am currently still a TypeScript developer by profession. But I am working on my own game in my off hours and weekend. I will definitely update the community on my game when I have more of it to reveal.

# Conclusion
This post wasn't a tutorial post. It wasn't meant to say C# or .NET is better than TypeScript, JavaScript, C++, Java etc. It was a quick summary of what I went through to get to where I am now and how sticking with my goal to become a game developer lead me to using several languages and learning several languages and their frameworks in order to find the language that is best suited for me. If you are struggling with a language but know deep down that you want to do this. That is ok. The language that was first shown to you doesn't have to be the language that you end up using all the time. There are plenty of them out there. Pick the one that will get you closest to your goal. The one that will help you understand the basics that every programming language has and that you need to know in order to better learn the one that you need or want to use. I promise you it will make your life easier. Could I have learned C++ and been a game developer years ago? Of course but I wasn't grasping the concept and syntax of the language. Once I moved to Python it was much easier to grasp the concept of a variable or if, elif, else statements. I hope you enjoyed this post and for those of you that are interested in the game I am building by all means please reach out to me in the comments and I will let you know when I have some updates. Until then happy coding.