This sort of seems to assume that it is at all possible to gain knowledge and experience without making mistakes.
Hiring people who do not perform seems like a profound waste of resources. Doing projects that fail seems like a profound waste of resources. Learning technology that will not be helpful later in your life seems like a profound waste of resources.
When was the last time you found a cookbook where a significant portion of recipes stayed with you for the rest of your life?
Your comment embodies one of the core tenets of what makes a great programmer. Great programmers are comfortable navigating ambiguity. They make mistakes but quickly correct course. They know how to test ideas in a way that yields signals faster. They know that they need to make mistakes, and know how to keep the cost of those mistakes low.
It’s like being able to walk into a bookstore full of cookbooks, and by skimming a few pages here and there, walk out with 3 fantastic cookbooks.
In other words, good programmers have the ability to quickly understand the full problem space (including business concerns) and efficiently navigate the solution space.