When I was learning programming I made a lot of mistakes in fact, now I just make less. Not only did I make mistakes I formed some bad habits. Habits which would come back to haunt me time and time again.
In an apprenticeship, an apprentice works side by side with a Craftsman. This way the apprentice develops good habits, best practices and delivers better software than if they were learning alone. This isn’t to say that the apprentice is being spoon fed every information, it’s the apprentice’s responsibility to also take charge of their learning and progress. A good scenario is having an apprentice and craftsmen within an earshot of each other where the apprentice feels comfortable to interrupt their craftsmen with questions from time to time.
Rarely are apprentices given the answer by their craftsmen, what the craftsmen provide is guidance, so while the road is still difficult, it’s less difficult than if the apprentice was learning on their own.
Guidance doesn’t need to only come from the apprentices mentor, guidance can be found from fellow apprentices who have tread a similar path or apprentices currently going through the same struggle. In fact I would say sometimes a fellow apprentices can give better guidance when it comes to struggles related to emotional wellbeing. Because they are also currently going through the hardship
Once the apprentice has reached a certain level, she can begin directly helping their mentor on simple task, over time steadily contributing to complex tasks. And hopefully one day, the apprentice becomes a craftsmen and takes on their own apprentice.