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