Bliski kontakt ze sprzętem oprócz dużej wydajności i kontroli nad nim, niesie ze sobą również podatność na wystąpienie poważnych błędów takich jak przepełnienie bufora, błędne wskaźniki czy niezainicjowana pamięć. Przepełnienie bufora może uszkodzić sąsiednie segmenty pamięci i spowodować błąd w zupełnie innej linii programu; jest również bardzo skuteczną metodą ataku – pozwala na wykonanie praktycznie dowolnego kodu poprzez nadpisanie wskaźnika powrotnego funkcji. Z tego powodu narzędzia takie jak Valgrind, Purify czy Boundschecker są niemal niezbędne przy tworzeniu nowoczesnych aplikacji w C czy C++.
Języki takie jak Java, PHP i Python zapobiegają większości takich błędów, ale za cenę spadku wydajności programu wynikowego. Jest to akceptowalne w programach, którym większość czasu zabierają zapytania do bazy danych.
Zawody programistyczne Od kilku dekad organizowanych jest szereg konkursów programistycznych skierowanych przeważnie do młodych programistów (uczniów szkół średnich i studentów). W Polsce odbywa się kilka dużych konkursów tego typu, a wśród nich, kierowane do studentów Akademickie Mistrzostwa Polski w Programowaniu Zespołowym, czy skierowana do uczniów szkół średnich Olimpiada Informatyczna organizowana przez Ministerstwo Edukacji. Istnieją też portale skupiające zawodników startujących w tego typu konkursach (zob. online judge), które zawierają zbiory zadań i pozwalają na automatyczne sprawdzanie rozwiązań.