My opinion is that if you really want to learn something towards building a real-life business skill and build your own business, you have to put yourself under pressure and find someone willing to pay you first.
If you are just getting started out as a web designer, web developer, graphic designer or other creative businesses like photography or artwork - the best way to learn is to find a client first, then build your skill. Otherwise, you sit in a vacuum and learn skills that no one else is really willing to pay for.
This is how schools and universities work. They teach you years of concepts and theories in a vacuum. Once you start getting your own clients, or even working at an office somewhere else, all the things you learned in theoretical classes will be essentially useless.
What's better is instead to build a minimally viable website and start looking for clients. Look for anyone willing to pay you anything at all. Even if it is $50 USD to get your first client to develop a one-page website. You might spend 50 hours on your first project, for $1 per hour of work. But you will have spent 50 hours spending time on a really project and made even a little money, than to spend thousands of dollars on a college education where you never dealt with a really client at all - being in total debt.
How do you learn web code or web design skills for projects?
But the first year learning Squarespace CSS was really tough. Often times it was a lot of brainstorming ideas, since there are so many ways to do things with code, and then learning from previous projects. There are things I do today that I remember "I have done that before" and then look at an old project to see how I did it. There are thousands and thousands of things you can do with coding, and too many too remember, so it's important to be able to research and pull from previous experience, rather than trying to learn it all at once.
What about learning things other than web developing coding, like SEO, online marketing or graphic design?
That's another thing I have learned over several years is through the same methods of finding clients and learning as quickly as possible to find solutions, such as working with Adobe Illustrator, Photoshop, SEO, Google Adwords, Facebook Ads and email marketing with Mailchimp. I do all of these services for clients.
Again, learning from new projects is more helpful than trying to learn it before taking on a client. You'll never know everything you need to know until you start working on real-life projects.
When you start out with your first few clients, it's a great opportunity to tackle a project (especially with a client that only has a low budget) and the learn as-needed, doing google searches for what the client needs. You probably wont do an amazing job, but if a client has a $200 USD budget for doing SEO or Adwords, then they aren't going to get the best work in the world anyways, so it is a good way to get experience. I would put up your services on your website in all the things you are interested in, and take clients that are willing to learn with you. That's always been my style of learning, because I only learn things that clients actually find valuable, instead of learning things that no one is willing to pay for.
I teach people how to start their own online businesses - like Squarespace web design, SEO, photography, Mailchimp email marketing, online advertising - As well as finding clients, bidding on projects, negotiating terms and the like. Inquire about available mentoring programs to firstname.lastname@example.org