I am not self-taught. I went to school to obtain a B.S. in Computer Science. I’ve been in the industry for one year. This is not to say that having a CS degree is a requirement (as there is a plethora of evidence to suggest otherwise), but to acknowledge that this is my journey. It may be completely different from yours, yet we can still end up in the same city, same office, same team, doing the same job. I've seen it and can attest that it is possible to learn on your own!
There are plenty of resources available online to start programming. In addition, computer technology has a variety of domains, including database management systems (DBMS), internet of things (IOT), web development, and more to explore once you get the hang of it.
The principal step for beginning developers is to choose ONE programming language to start. This is because there are underlying foundations for all languages and too many growing languages to count on one hand, so let’s get really good at building with one.
I like to say that “Programming languages are really the same language but with different accents.” For example, one nuance amongst “language neighbors” is that the way a programmer declares, or names, variables may differ.
Here is a list of common languages today:
Java - My first language. Used mainly for backend development. It’s part of a cluster of languages called object-oriented programming (OOP) languages. This, in and of itself, is a separate detailed post. It is slightly more tedious to learn in the beginning, but not impossible and very useful in the end.
C++/C# - Not interchangeable with Java, but tends to be spoken in the same sentence. The primary difference is that these are platform dependent, which is useful for game development. C# is also more proprietary and associated with a Microsoft development stack. A development stack is a specific group of technologies used in building an application.
Swift/Kotlin - These are used for mobile application development. The former is reserved for iOS development. Built by Apple, for Apple. The latter is for Android development and similar to Java.
Python - Tends to look the least like the other languages, while maintaining the necessary concepts. One of the hottest and more versatile of the languages because of the gentle learning curve and readability. It’s a “code what you mean and mean what you code” type of language. This is another option that I suggest using to get your feet wet.
Once you’ve settled on a language of choice, you can start filtering out all of the internet code-torial noise.
freeCodeCamp.org - I hear rave reviews for those that go into bootcamp or apprenticeship that attribute this site as their starting point. FREE
Test Automation University - Abbreviated as TAU. Up and coming but also highly appraised. I’ve used this myself and found a better understanding of concepts that I’ve been using for yeaarsss in Java. I’ve also used it to learn Python in a couple days. It includes code-alongs and quizzes to test your understanding. FREE
Udacity - A popular site with a wide variety of content. However, you have to pay for some. I have not used this.
codecademy - This is very helpful! I used it to learn Angular when I was short on time. It includes code-alongs to build something as you’re learning. It may offer a pro version, but, for your purposes, you can get what you need for FREE.
Youtube - I think it’s underrated. When I’m doing something specific and snapshots from tutorials are not helping, I resort to Youtube to get what I need done. Sometimes, videos better explain the missing links between the snapshots. Also FREE.
Some languages are maintained by a company or organization, and may come with their own tutorials, such as ReactJS. You can find these with a simple Google for the language.
Whichever resource you choose, find a tutorial, start it, and stick with it! Any final product, no matter how unappealing or inefficient the code, is an accomplishment. I proudly claim my code, even if I don't want it to ever see the light of day. But that’s what makes us programmers. Always learning, always improving, always spending too much time on semicolons.