Great, it’s an amazing job. You’ve got great benefits like choosing your own working hours and home office, competitive pay and all kinds of businesses need programmers. You prefer the freedom and familiarity of a startup? We got you covert. You prefer the stability and structure of a multi-billion dollar business? No problem either. There is also the aspect of stability of the job itself and it isn’t going anywhere anytime soon.

Like with any other job I would urge you to think about why you chose this job.

In the past, I’ve read articles stating “everyone can become a programmer”. Personally, I strongly disagree. In my humble opinion, it requires a certain way of thinking and an attitude that not everybody has.

First of all, you should obviously be fascinated by tech and IT. If the topic you want to learn doesn’t interest you it is gonna be way harder to understand. That is true for programming as it is for every other job there is. Nobody would become a Barista if he hates coffee.

The IT business is incredibly fast moving. The tech you work with now might become obsolete in a few years. That means that you need to keep learning new programming languages, frameworks, libraries etc. If you don’t enjoy exploring new stuff and experimenting with them might lose touch and end up unemployed because what you started out with isn’t used anymore and you didn’t bother learning anything new.

Last and probably most importantly, programming requires a very logical way to think about problems in order to solve them. You also need to enjoy solving problems and you should prepare yourself to spend not only hours but days and maybe even weeks to solve a certain problem.

You see the aforementioned criteria in yourself? Great if not and you still think you would be amazing at this job don’t let me discourage you, it is just my opinion and I might be wrong.

“What technologies should I start with?”

Instead of what you should learn, I want to start with how you should go on about it. As an example, I will talk about web development. There are two very different ways, top to bottom and the inverse bottom to top. In both cases you would start learning a programming language, let’s take Ruby as an example.
After having a basic understanding of the syntax and programming basics (data types, control structures) you might go on to install Ruby on Rails as a framework in the top to bottom approach. Because you don’t wanna learn CSS you install Bootstrap and thanks to Rails Active Record you don’t have to write any SQL yourself, so you go ahead and also install Postgres.
Following a video tutorial, you will have developed your own To Do list within the day. You feel amazing you are a programmer after less than a day!!! But in reality you know nothing. So going forward you will encounter a lot of problems you don’t understand because you don’t know how the underlying technologies work.

That’s what I did the first time around.

What I propose instead is the bottom to top approach. You learn Ruby as you did before, but you don’t jump ahead and install any new frameworks or gems. Instead, you stick to writing standalone Ruby scripts. Learn how to access files, connect with an API and print the data locally, recursively read all the folders in your operating system and print them out, you get the idea.
Next, I would urge you to learn how to test your code. Testing can be hard to get into, so you might be inclined to just do it later. That’s what I did and getting into testing only gets harder the more complex the program is. Testing small scripts that have very limited functionality is the best way to start testing and that’s what you do anyway right now.
For now, you are confident with your Ruby skills and you want to keep expanding your knowledge. So you go ahead and learn HTML and CSS, don’t use any frameworks! After that, you can start learning SQL. If you really want to use a Ruby framework use Sinatra instead of Rails in the beginning. The last bit you might need is some Javascript to spice up your frontend.
Take small steps and only start with the next technology if you are confident with the one you work with right now.
This approach will definitely produce slower and less impressive results, but it will save you a lot of time and frustration in the long run because you will have at least a basic grasp in every field.

For the actual technology, you should start with, that largely depends on your preference and what field you want to work in. My general advice is to use a well-established programming language to start with. The newest, hottest stuff that everybody is talking about, but was just released a few month ago will have way less material available for you. Which means that learning it is gonna be way harder.
Besides that use a Version Control System like Git from the very beginning. It will allow you to see the changes you made in the paste. Even better, if you broke your program and don’t know what went wrong, you can simply set your code back how it was the last time you saved (committed) it. And as I mentioned before learn to test your code as early as possible. It will make your code more robust and drive better design.