If I Could Turn Back Time, Where Would I Start?
Tags: beginners, programming, tutorial
Published: 2022-08-19 08:19:53

I've had my first programming experience with programming a little over a decade ago, and as somebody who hyper focuses on problem solving it was no wonder that I would get hooked immediately. Now I wouldn't call my self an expert or anything, but I've been finding myself wonder what alternative path I could've taken, which language would've been the best to kickstart my career and save me from many setbacks that I faced during the years. As such I wish to share my two cents with you in this essay, but don't take it to heart, this is merely the opinion and ideas of a random, imposter syndrom infested junior developer so enjoy your stay with us today.

## My First Language
A well known dilema every beginner face is "Which programming language should I start with?", this is the moment that veteran devs will jump out from behind the bush to give a rant on why the language they have been using for the past decade is the best language there is out there and you should learn it and never look back. However, this approach doesn't answer the basic dilema, a beginner isn't looking for a language to use on a specific project but rather a language that they could use to understand the basics of programming.

## The Usual Suspects
In this discussion I will only consider a few programming languages that meet certain criteria. The first is accessibility to learning materials, and by that I mean that I will avoid languages that require you to dig out through a hundred pages book to learn how to return "Hello World!", but rather languages that you can start learning by typing their name into YouTube and you will get a couple of hundred beginner friendly tutorials. I also choose to avoid languages created for a specific purpose such as Micro C and languages made to mess with your mind, i.e. WhiteSpace.

## Programming Syntax
Now we get to dig into the discussion, which programming language would I start with? A common answer, and one that I've given in the past, is Python; and why wouldn't it be an obvious choice? You can "Hello World!" in one line! If you want to make something, there is certainly a module that already made the task too easy! But would is it a good choice for a beginner? No.

Python is great to work with, I worked on several projects using it and I will continue to use it in the future, but have you ever witness somebody who only knew Python attempt to learn a different language? They most probably would look like a beginner all over again. How about the other way around? Ask a C++ dev to learn python, they will have a groovy time. Python is easy to work with, but the issue is that it is too easy, so any gained knowledge would be difficult to transfer when learning another language so I would exclude it as a first choice.

## Loose or Strict Typing?
Why should we waste time specifying the type of the variable we are creating and not let the compiler/interpreter figure it out on it's own when we assign a value to it? That's what JavaScript excel at, what else does it excel at? nonsensical typing errors that will turn even veteran brains to mush. So how would we expect a beginner to figure out errors related to types if they have no idea what types are in the first place? For this reason alone I would exclude JavaScript as a first language.

Why did I not use this argument against Python as well? Well my dear reader, Python would have a fit if you try to perform an addition between an integer and a string.

## How Deep Should We Go
C/C++ don't fall under the previous criteria, but I have a different issue with them, pointers. During the past decade I never found myself considering memory and bit operations unless I was working on a very low level project (microcontrollers much?), otherwise they exist only to torture us common folk who only want to make a square bounce around the screen and cheer at the moment it perfectly hit the corner.

Low level languages are great to understand computer architecture and create great things with limited ressources, but if you are seeking a career in any other field in computer science they would only bring about headaches.

## The Fun of it All
With a process of elimination we find ourselves left with Java and C#, great languages that are on the mid level of difficulty, share a great deal of syntax with a lot of other languages, and offer the best chance to understand typing and more through Object Oriented Programming. So what is the final factor to decide on what I personally would recommend as a first language? Fun.

I remember starting out and spending an hour writing code just to produce a single line on the console, while I was learning to program it became dull very quick. I was looking forward to creating great things like websites, video games, and much much more. But the journey to get there was long and much to my dismay I lost my drive more than once, this is the reason I would put forward Unity 3D as my last argument.

Unity uses C# to control the logic and create new components, and while most of the time it doesn't use the latest release of C#, the fundamentals are all there. It also makes it quite easy to create something satisfying for a beginner be it a platformer, a shooter, a simple physics simulation or any other random idea that might pop into your head. It answers all my criteria while keeping the fun, it has something for everybody and thus it is my personal choice as a starting point for programming.

## Conclusion
As my first post, I expect it to get a lot of criticism and it is welcome since it would help me improve in the future. But I ask of you dear reader who stuck with me until the end, that this is my own opinion based on what I experienced through the years. You might agree or disagree on one or all of the ideas I brought forward, and that is fine. The thing I enjoy the most regarding programming is the diversity, so it wouldn't be fair to expect everybody to agree on a single opinion so feel free to share yours as well, I would be happy to hear back from you and walk a mile in your shoes. Until next time, and have a good day. oh and if you say arrays start at 1 please leave my post as I disagree and would never take you seriously 😒.