1.) Make sure you 100% understand the problem. Ask the right questions, to get a clear picture of the problem. 2.) Divide and conquer: Break a big problem into smaller sub-problems 3.) Don't be afraid to do as much research as you have to 4.) For bigger problems, write a pseudo-code before writing the actual code