Welcome to the ProblemSolving repository! Here, I've documented my journey of solving over +300 problems and multiple projects. This endeavor has not only honed my skills but also expanded my knowledge base and prepared me for technical interviews. If you're wondering how to learn programming the right way and avoid pitfalls, I've summarized my insights below.
-
Surround Yourself with Positivity: Steer clear of negative influences. Avoid those who discourage you with statements like "it's too hard," "it has no future," or "you won't find jobs." Seek guidance from successful individuals who've made a mark in the field.
-
Distinguish Programming from Programming Languages: Understand that programming involves logic, analysis, and problem-solving. Programming languages are tools to apply your logic and thinking. Master programming itself, as languages can be learned quickly once you possess strong programming fundamentals so Learn programming and never waste your time learning programming languages, because if you are good in programming you can learn any programming language in less than a month’s time..
-
Begin with Fundamental Languages: Avoid modern programming languages initially. They often provide ready-made functions and tools that hinder your logical growth. Just like students learn math concepts before relying on calculators.
again Never start with a modern programming language why? Modern programming languages have a lot of ready-made functions, methods, and tools that will deceive you and prevent you from learning logic and programming the right way… For example: students from grade 1 to 6 in schools they study math (addition, subtraction, multiplications, dividing, fractions…etc) why they study this while we have a calculator?? They study this to strengthen their logic and thinking, imagine you give them a calculator from grade 1 , they will never strengthen their logic. Modern programming languages are good and you have to learn them but you need to learn them in the right time after you strengthen your logic/thinking, exactly like the calculator you can use it but in the right time.
-
Focus on Fundamentals First:
- Learn the chosen programming language's fundamentals.
- Solve a minimum of 2000 problems to refine your skills and logic.
- Delay diving into other topics until you've solved around 500 to 700 problems. This phase will solidify your understanding.
-
Expand Your Knowledge:
- After solving a substantial number of problems (around 2000), spend a month learning a modern programming language.
- Dedicate 1 to 3 weeks to grasp the basics of Databases.
- Undertake your first project; consider starting with a desktop application like University Registration. Begin with a simple version and gradually enhance its functionality.
By following these steps, you'll gain the confidence and expertise to explore new technologies, languages, and fields of interest.
Here are some valuable resources where you can find problems to challenge and improve your skills:
- Brilliant
- Exercism
- HackerRank
- Project Euler
- CPattern Programs (Google Play)
- BeeCrowd Judge
- Codeforces
- Coderbyte
- LeetCode
Wishing you the best in your programming journey! Remember, consistent effort, a positive mindset, and dedication are your allies in becoming a successful programmer.
- Mahmoud Mohamed
- Email: mahmoud.abdalaziz@outlook.com
- LinkedIn: Mahmoud Mohamed Abdalaziz
Happy learning and coding! 🚀