1. Algorithms and problem-solving
This is a big chapter of computer science learning and it helps you form your way of thinking and it also helps get through interview processes and getting into internships/starting a new job.
It seemed very hard for me at first, because every problem seemed out of my reach. The thing is: you don't have to think about it this way!
- taking it step by step. Start with understanding what an algorithm is, work with a single, simple data structure (like an array), understand what happens behind the lines of code you write.
- read a book on it/watch a course. Let me know if you want more book/courses recommendations. An example would be https://techdevguide.withgoogle.com/resources/topics/algorithms/?no-filter=true (Google Tech Dev Guide)
- Practice! There are multiple sites to do this on. Try Hackerrank, CodeWars, LeetCode (my personal favourite, because there are discussions on every problem and you can find solutions from others)
2. Debugging and finding a solution to a complex problem
There is a time when you are working on a project, and you encounter a bug/a problem and you just have no idea how to handle it. That's ok. That doesn't make you a "bad programmer". It happens to everyone once in a while and it happens a lot especially when you have little experience, because every situation is a new one.
In order to overcome this, try to get a bigger picture of what is happening. Ask yourself "WHY" questions. Check method definitions if you're calling a method. Look the problem up on Google (yes, that is a normal thing to do :) ). If you still can't figure it out, take a small break from it. Sometimes the solution or a new thing to try comes when you're during the break.
Let me know if you have other questions :)
Dinesh recommends the following next steps: