Biorąc pod uwagę, że definicja programowania komputerowego jest tak szeroka, a użycie programów tak wszechobecne, w rzeczywistości istnieje wiele rodzajów programowania komputerowego, często definiowanych na zupełnie różne sposoby. Najbardziej podstawowe rodzaje programowania komputerowego można podzielić według języka programowania — takiego jak C, Lisp lub Java® — używanego przez programistę. W innych kontekstach mogą istnieć tylko dwa rodzaje programowania komputerowego — system i aplikacja. Istnieją pewne rozróżnienia między programowaniem sieciowym, programowaniem internetowym i programowaniem komputerowym. Różne rodzaje programowania, takie jak programowanie systemów wbudowanych, programowanie systemów czasu rzeczywistego (RTS) lub programowanie baz danych, mogą czasami być rozdzielone przez platformę docelową.
Różne typy programowania komputerowego są często definiowane przez język używany do pisania oprogramowania. Dostępnych jest wiele języków, ale zasadniczo należą one do języków strukturalnych, takich jak C, lub języków zorientowanych obiektowo, takich jak Java®, z których oba są powszechnie używane przez profesjonalistów do różnych zadań. Języki również mogą być imperatywne, jak te wspomniane wcześniej, lub funkcjonalne, jak Lisp, w którym programy składają się z szeregu funkcji zamiast poleceń. Niektóre programy komputerowe są wykonywane wyłącznie za pomocą języków skryptowych, które są interpretowanymi dokumentami czytelnymi dla człowieka, które wykonują operacje w innej strukturze.
Tradycyjnie rozróżnia się dwa szerokie rodzaje programowania komputerowego. Pierwszym z nich jest programowanie aplikacji i polega na pisaniu programów, które mogą być bezpośrednio użyte do niektórych funkcji. Alternatywnie istnieje programowanie systemowe, które ma na celu projektowanie programów do zarządzania sprzętem lub frameworkami, w których mogą działać aplikacje, takie jak systemy operacyjne.
W miarę upowszechniania się technologii sieci i komunikacji zdalnej, pewne rodzaje programowania zaczęły wyróżniać się na tle innych dziedzin programowania komputerowego. Programowanie sieciowe jest uważane za inne ze względu na wymaganą znajomość protokołów sieciowych i interfejsów sprzętowych. Programowanie aplikacji internetowych lub serwerów wymaga szczegółowej wiedzy na temat ograniczeń bezpieczeństwa, protokołów internetowych i unikalnych wzorców projektowych programowania.
Istnieją również rodzaje programowania komputerowego, które są specyficzne dla określonej dziedziny lub sprzętu docelowego. Programowanie baz danych wymaga użycia specjalnych języków zapytań, skryptów i innych elementów do interakcji z określonymi infrastrukturami baz danych. Programowanie gier wymaga znajomości sprzętu graficznego, algorytmów graficznych, a czasem specjalnych technik optymalizacji. Systemy wbudowane, takie jak urządzenia przenośne lub konsole, mogą obejmować unikalne specyfikacje sprzętowe i znajomość bibliotek dostawców. Bardziej zaawansowane programowanie systemów w czasie rzeczywistym może obejmować pisanie bezpiecznego oprogramowania sterującego dla elektrowni jądrowych lub sprzętu wojskowego.