Що стосується деяких видів типових помилок, яких може припустись розробник програми, то вони можуть бути такими:
 1) вибраний невірний алгоритм (наприклад, для чисельного розв’язання систем лінійних алгебраїчних рівнянь існують різні методи, зокрема, метод Гаусса, метод Зейделя, метод прогонки і т.д. Ці методи є збіжними при виконанні певних (своїх для кожного метода) умов, які накладаються на систему рівнянь, і цей факт обов’язково необхідно враховувати при виборі метода в кожному конкретному випадку);
 2) помилки аналізу (невірне програмування правильного алгоритму);
 3) семантичні помилки (наприклад, якийсь оператор насправді діє не зовсім так, або зовсім не так, як передбачає програміст);
 4) помилки при виконанні операцій (наприклад, ділення на нуль, втрата точності, вихід за межі типу даних);
 5) помилки даних (наприклад, символьні замість числових);
 6) неініціалізовані змінні; змінні без початкових значень – часта помилка в програмах, яку важко знайти debugger’ом, оскільки останній якраз може проініціалізувати змінну;
 7) непроініціалізовані вказівники, які використуваються так, наче вони адресують динамічні змінні, можуть привести до тяжких наслідків для програми;
 8) індексація з виходом за межі масиву, тобто використання як елементів масиву змінних, що знаходяться поза його межами;
 9) непередбачені особливі випадки вводу-виводу – наприклад, коли не обробляється сигнал кінця файлу.
 І якщо про синтаксичні помилки піклується компілятор, то помилки, перелічені вище, можуть бути виявлені лише на етапі тестування.