As I always say, take a look at Refactoring guru, there are some usual problems that a developer needs to fight in a daily basis. And Sourcemarking it's a nice source too.
Programming a computer /- system is much more different than 'programming the digital video recorder to record a TV show today at 8 PM'. The latter is just a configuration of an existing system.
General aspects of programming are conditions, loops, and lists. It's impossible to command a computer /- system to react (instruction) without waiting (loop) for something (conditions) to happen.
Most languages I know have relatively easy constructs for loops and conditions and combinations of both concepts. Working with lists to calculate or filter or find is a typical use case for what programming novices can implement.
@tommyjune cool i invited some devs to answer :) i started to write the whole history of computing gg .... which i deleted TMI :D -> they tend to give clearer and more concise answers than me ;D ...
Marco Alka
Software Engineer, Technical Consultant & Mentor
What are general aspects of programming? Math? Logic? They are not distinct to programming, though. You need them at least in physics and el. engineering, too. Everything else highly depends on the language and what you want to implement. If you want to make a website, you need a lot more abstract concepts compared to writing an operating system, which requires a lot of hardware knowledge. If you write a program in ASM or Basic, you will have to deal with completely different problems compared to using Kotlin or Rust.
As such, I recommend using a platform, like CodeWars, which lets you choose your language and then build up knowledge in that language with little problems. It teaches you a bit about programming, about the language and about real-world problems. It might be more focused than what you are looking for, though.