Break it down
After communication, the most important skill is the ability to break large problems into smaller, less complicated problems.
If you can divide a big problem into a series of smaller problems that are more easily tested and verified, the task is easier to tackle, easier to troubleshoot and overall easier to solve.
For example, it is a mistake to write every single line of computer program before ever trying to run it. Instead, write a small section of the program, run it, fix whatever bugs there are, before moving on to the next small section. This makes it easier to find the mistakes and verify that each individual step is running correctly. Always try to solve simple versions of your problem first and then add complexity in steps until you reach your final goal.
Do not try to solve all of the problems at once, solve them one at a time, then tackle the next.
In my experience, the smartest and most ambitious persons among us are the most likely to fail at this. Perhaps school does not sufficiently challenge these people and so they never develop the skills to solve large problems.