Professional Developer here. Many people have a talent for tinkering, but very few seem to develop into high quality coders. I will argue if you’re working on your own, without input from other developers (or a teacher/marker if taking a course), you will miss out on valuable feedback about your strengths and weaknesses that would lead you to becoming more proficient.
A great majority of programs/apps that get developed boil down to data management apps. They use some sort of nice front end to gather data from the user, and store in intelligently into some form of database for later extraction or reporting. To do this sort of app on your own, you need a lot of skills which are normally provided by an entire team in a corporate environment. Corporately, you have people like project managers, UI specialists, graphic artists/designers, database designers/admins, front end web developers, back end/server (business logic) software developers, testing specialists, deployment specialists, devops/build/tools specialists, customer support agents, and on and on. Each of these people brings a set of skills. You can theoretically master them all yourself, but whew, that’s a lot of work.
As for which language to learn, I doubt there is just one, unfortunately. But if you want to start somewhere, probably the most useful would be something on the web front end. JavaScript is kinda gross, and allows really bad habits, but all the tooling is basically free. There are specializations of JavaScript, like TypeScript or CoffeeScript (and I’m sure others) that allow for better software practices. Tied to JavaScript is NodeJS and the whole Electron infrastructure (desktop apps.)
Personally I prefer an object oriented strongly typed language. My language of choice is Java. It runs in a virtual machine, which means it’s portable to many (most/all) platforms… so I am not locked into any particular platform. It’s still evolving, so it’s not aging out… I think reports call it the most used language in corporate development. The tools are freely available (Eclipse and AdoptOpenJDK and Maven/Gradle.) It can create server back ends and client front ends.
If you want the most powerful up and coming language for system level coding… look into Rust. It’s ugly to my eyes, but seems to be growing in popularity. It was invented by Mozilla and is being used in Firefox. It has all the library infrastructure (cargo) and a growing body of developer who claim to love it. It is C/C++ but with some modern safety built in.
No matter what, you’ll probably want to learn about databases and database design. Get a free relational database (I recommend Postgres, but there are many, MariaDB, MySQL, SQLite and all the NoSQL databases.) This will require to learn some SQL to use them usefully. And most especially, learn about stored queries so you don’t start developing software that is easy to exploit.
On that final point… no matter what language you learn… if you intend it to be accessible by someone online, then PLEASE learn techniques for SECURE SOFTWARE DESIGN so you don’t make the current epidemic of insecure apps even worse.