One of the common challenges in learning programming is when a student has mastered the basics—variables, operators, functions, and so on. Most topics make sense theoretically, but often, when it comes to applying this knowledge to real-world tasks, students find themselves at a loss. This can lead to frustration and self-doubt. They might ask themselves if they are spending enough time studying or if they truly understand the syntax, basic principles, and concepts of programming.
What to Do If You Can’t Develop Programs Despite Having the Necessary Knowledge?
Here are some insights from experienced programmers addressing these concerns:
Remember, those who gave up didn’t become programmers. Only those who persisted did.
First Response:
This situation is normal and is often referred to as “not having enough practice.” Understanding how someone else’s code works is a good start, as 80% of programmers solve problems this way. They search for solutions, adapt them to their projects, refactor code as needed, and get paid for it. The difference between a beginner and a senior programmer is often just the amount of time invested. Experienced programmers have spent anywhere from 2,000 to 10,000 hours studying, compared to the 100-200 hours you might have invested so far. The key is to practice by solving typical (and atypical) problems for 5-8 hours a day, and regularly assess your progress. If there is no improvement after six months, you might need to work on not just programming skills but also logical and critical thinking and breaking tasks into smaller subtasks.
Second Response:
Don’t give up. The idea that programming “isn’t for you” is nonsense.
“Specialization is for insects.”
The quote “Specialization is for insects” is attributed to Robert A. Heinlein, a renowned American science fiction author. This phrase emphasizes the value of versatility and broad skill sets in humans, suggesting that unlike insects, which thrive through specialization, humans benefit from being able to handle a wide variety of tasks. This philosophy encourages learning and practicing multiple skills rather than focusing narrowly on one area.
Heinlein’s quote is from his 1973 novel “Time Enough for Love,” where he elaborates that a well-rounded individual should be capable of a diverse range of activities, from changing a diaper to programming a computer. This idea is widely appreciated in various fields, including programming, where flexibility and the ability to adapt to different problems are highly valued
Whether you’re into humanities or sciences, physics or literature, it doesn’t matter. Anyone can learn anything, from writing music to solving Maxwell’s equations, to programming in Objective-C. The crucial elements are a desire to understand and practice. Read programs as you would read books. We grew up without computers, with access to machine time for only an hour a week. We read listings in books, wrote them in notebooks, discussed them, and found mistakes. Do the same: read existing projects, solve problems, and look at solutions. It’s normal and beneficial to read other people’s code. If you can’t solve a problem, try again or look up the answer and solve a similar problem. Read code as if it’s an interesting book—after all, you have a computer and can run it repeatedly. If you can’t write something from scratch, use a beginner’s guide like Big Nerd Ranch, which builds a minimally functional application step by step with explanations. Play with existing projects, change the font, color scheme, rearrange the interface, add some functionality—make it fun! If you suffer while learning, it will be a miserable experience. Have fun and good luck!
Third Response:
Practice is essential. Even if you’re just starting, keep practicing. Experienced programmers, when given a task like “Visitor Tracking System,” already have 5,000 lines of code and database table structures in their heads; they just need to write it down. Usually, formalizing a task involves breaking it down into smaller, more manageable parts that can be googled individually. Searching “Visitor Tracking System code” might not yield results, but searching “working with databases” or “creating a table in a database” will provide plenty of solutions. Therefore, practice breaking down tasks into smaller parts.
Fourth Response:
There is no canonical way to program; just as everyone’s handwriting is unique, so is their code. Programming is a result of thinking. The main thing is not to get discouraged or lose your passion for it. Practice makes progress! Work through problems step-by-step, from simple to complex.
Fifth Response:
- Lack of practice.
- Lack of quality practice. You’re working on other people’s tasks, often written in a formal language that’s hard to understand. Set your own tasks, something you want to create.
- Having the necessary knowledge isn’t just about reading; it means being able to use it. The basic elements you listed are akin to the alphabet—not knowledge, but a skill to read and write. Knowledge means being able to use arrays, functions, conditions, and loops effectively.
If you believe IT is your calling, keep at it and see where you are in a year.
Sixth Response:
I bought several courses that involve creating real projects, not just “to-do lists,” and followed along with the instructor. By repeating everything in the first course, I learned how React interacts with Node, how to write APIs, how to deploy, and so on. By the second course, I adapted the content to my needs, creating my project with only about 30% of the original course content remaining. This approach made me understand the necessity of each method or function. Theory without practical application in your own projects is an erroneous learning path.
Seventh Response:
Practice. Come up with a project. Or ask ChatGPT for project ideas. Learn by focusing on practical uses of concepts, like “how and where to use a conditional operator with a Boolean argument.” Remember, those who gave up didn’t become programmers. Only those who persisted did.
This article was written after reviewing various topics related to this issue.