"Learning results from what the student does and thinks and only from what the student does and thinks. The teacher can advance learning only by influencing what the student does to learn." Herb Simon quoted in Solving a Teaching Problem
Herb Simon is quoted in Solving a Teaching Problem as saying that "learning results from what the student does and thinks and only from what the student does and thinks. The teacher can advance learning only by influencing what the student does to learn." This means that if you want to learn how to become a proactive programmer then you must take on challenging programming tasks! This site's projects site will help you to gain the knowledge and skills of proactive programming as you "learn by doing".
How challenging should the projects be? How many projects do you need to complete to learn to program? Although it is difficult to precisely answer these questions for each person, it is fair to say that learning to program involves a significant amount of failure. In fact, studies of machine learning algorithms that learned to complete complex tasks suggest that they learned better when they failed in their efforts about 15% of the time.1 Even though you are not an algorithm, it is worth bearing in mind that failure through a trial-and-error process is a normal and beneficial — albeit frustrating! — part of becoming a proactive programmer.
Yet, how much failure is too much? Michael Hilton likes to tell his students "it is okay to experience failure as long as you are learning" and that you should contact him "if you are failing and not learning". Since you might not be Michael's student, you probably should not contact him if you face challenges! But, if you have a detailed question about any of the projects on this site, you are invited to post in the GitHub Discussions Forum. Or, if you want to have a quick discussion about a technical topic then you can ask it in the Allegheny College Computer Science Discord Server (for Allegheny College students) or the Proactive Programmers Discord Server (for all learners).
Before you dive into the projects on this site, let's first consider how different types of learning exhibit different levels of cognitive difficulty and how the projects you complete will be assessed depending on your learning context.