Some problem-solving techniques include algorithms, heuristics, trial-and-error and insight. An algorithm is a step-by-step approach that always yields the correct solution but can be very time-consuming. Heuristics rely on assumptions and rules of thumb that may not be correct for all situations.
Trial-and-error may work if there are only a few possible solutions to the problem. If there are many solutions, using heuristics to reduce the possible solutions to a more manageable number can allow trial-and-error techniques to work quite well. Insight is often used to solve problems, but the underlying mental processes that occur are unknown. Brainstorming sessions are intended to facilitate the use of insight as a problem-solving technique.