CryptoZombies is a great way for anyone to learn Solidity. I've found many guides and have past programming experience in Python, web development, Ruby and Java, but none really explain all details of Solidity. This "game" breaks it down and starts at the beginning of what and int is.
It's still an ongoing course with updates every few weeks, but the first few will already teach you a large portion of the language and smart contracts.