Atsižvelgiant į tai, kad kompiuterių programavimo apibrėžimas yra toks platus, o programų naudojimas toks plačiai paplitęs, iš tikrųjų yra daug kompiuterių programavimo tipų, dažnai apibrėžiančių labai skirtingai. Paprasčiausias kompiuterių programavimo rūšis galima suskirstyti pagal programuotojo naudojamą programavimo kalbą, pvz., C, Lisp arba Java®. Kitais atvejais gali būti tik dviejų tipų kompiuterių programavimas – sistema ir programa. Yra keletas skirtumų tarp tinklo programavimo, žiniatinklio programavimo ir darbalaukio programavimo. Įvairios programavimo rūšys kartais gali būti atskirtos pagal tikslinę platformą, pavyzdžiui, įterptųjų sistemų programavimas, realaus laiko sistemos (RTS) programavimas arba duomenų bazių programavimas.
Įvairūs kompiuterių programavimo tipai dažnai apibrėžiami kalba, naudojama programinei įrangai rašyti. Yra daug kalbų, tačiau jos iš esmės skirstomos į struktūrines kalbas, tokias kaip C, arba į objektus orientuotas kalbas, pvz., Java®, abi jas dažniausiai naudoja profesionalai įvairioms užduotims atlikti. Kalbos taip pat gali būti būtinos, kaip anksčiau minėtos, arba funkcinės, kaip Lisp, kai programos susideda iš eilės funkcijų, o ne komandų. Kai kurie kompiuterių programavimo darbai atliekami tik naudojant scenarijų kalbas, kurios yra interpretuojami žmogaus skaitomi dokumentai, atliekantys operacijas kitoje sistemoje.
Tradiciškai buvo skiriamos dvi plačios kompiuterių programavimo rūšys. Pirmasis yra taikomųjų programų programavimas ir apima programų, kurios gali būti tiesiogiai naudojamos kai kurioms funkcijoms, rašymą. Taip pat yra sistemos programavimas, kuriuo siekiama sukurti programas, skirtas valdyti aparatinę įrangą arba sistemas, kuriose gali veikti programos, pavyzdžiui, operacinės sistemos.
Plačiau pradėjus naudoti tinklų ir nuotolinio ryšio technologijas, tam tikros programavimo rūšys pradėjo skirtis nuo kitų kompiuterių programavimo sričių. Tinklo programavimas laikomas kitokiu, nes reikia žinių apie tinklo protokolus ir aparatinės įrangos sąsajas. Norint programuoti žiniatinklio programas ar serverius, reikia specialių žinių apie saugumo apribojimus, interneto protokolus ir unikalius programavimo modelius.
Taip pat yra kompiuterių programavimo tipų, būdingų tam tikrai sričiai arba tikslinei aparatūrai. Duomenų bazės programavimas apima specialių užklausų kalbų, scenarijų ir kitų elementų naudojimą sąveikai su konkrečiomis duomenų bazių infrastruktūromis. Žaidimų programavimas apima žinias apie grafinę aparatinę įrangą, grafinius algoritmus ir kartais specialias optimizavimo technikas. Įterptosios sistemos, pvz., rankiniai įrenginiai ar pultai, gali apimti unikalias aparatinės įrangos specifikacijas ir žinias apie pardavėjų bibliotekas. Pažangesnis realaus laiko sistemos programavimas gali apimti saugaus valdymo programinės įrangos rašymą atominėms elektrinėms arba karinei aparatūrai.