I'd highly recommend starting out with this intro course from Harvard University on edX before looking at any other courses -
https://www.edx.org/course/cs50s-introduction-computer-science-harvardx-cs50xThis is a free online version of the introductory Programming/CompSci course that Harvard CS graduates study when they begin their degree (no prior programming experience required). Programming itself is all about learning how to solve problems using a programming language, and that's what this course teaches (mostly in the C language, but don't worry too much about whether it's C, Java, Python, C++, C#, etc.. The 'core' skill in programming is not about the language, it's about learning how to
think computationally - the programming language is really just a tool.. ).
All courses on edX are free (ignore the paid-for certificates) - there are a lot of free programming and computer science courses by global top universities, so you can generally expect a good standard from these.
Harvard have released their "follow up" (part 2) of the CS50 course here (it's not on edX yet) - it focuses on more advanced programming by writing 'classic' computer games:
https://cs50.github.io/games/ There are loads of free tech/programming/engineering courses on Udacity - most of these are written in partnership with large tech companies:
https://eu.udacity.com/Udacity has some courses from Google which teach Java programming and how to build Android apps using Java with Android Studio. Java is arguably one of the most widely used and popular languages in universities and businesses.
TeamTreehouse also has a lot of courses - these aren't free (Monthly subscription fee), but they're very well structured and are great for learning "full stack" software engineering and web development:
https://teamtreehouse.com/tracksedX also has a bunch of Microsoft courses for Microsoft technologies (Focused around C# and the .NET framework. C# is probably the most popular "second" alternative to Java in the world of commercial software development). If you're interested in the Microsoft Stack, have a look at these courses, in roughly this order:
While you're learning, make sure you're aware of
https://stackoverflow.com - if you ever find yourself "stuck" against a problem, there's a good chance that somebody else will have asked about (and answered) the same problem as you on StackOverflow.
Lastly, don't forget Google, and always use the official documentation for whichever programming language you're using to find definitive/
authoritative references and examples. the Oracle website has the Java language documentation. Microsoft's MSDN website has the official C# and .NET documentation. Python.org contains the official Python language docs, etc.