Arvestades, et arvutiprogrammeerimise definitsioon on nii lai ja programmide kasutamine nii laialt levinud, on tegelikult mitut tüüpi arvutiprogrammeerimist, mida sageli määratletakse täiesti erineval viisil. Kõige elementaarsemad arvutiprogrammeerimise tüübid saab jaotada programmeerija kasutatava programmeerimiskeele (nt C, Lisp või Java®) järgi. Teistes kontekstides võib arvutiprogrammeerimist olla ainult kahte tüüpi – süsteem ja rakendus. Võrguprogrammeerimisel, veebipõhisel programmeerimisel ja töölauaprogrammeerimisel tehakse mõningaid erinevusi. Erinevaid programmeerimisliike saab mõnikord eraldada sihtplatvormiga, näiteks manussüsteemide programmeerimine, reaalajas süsteemi (RTS) programmeerimine või andmebaasi programmeerimine.
Erinevad arvutiprogrammeerimise tüübid on sageli määratletud tarkvara kirjutamiseks kasutatava keelega. Saadaval on palju keeli, kuid need jagunevad laias laastus kas struktureeritud keeltesse (nt C) või objektorienteeritud keeltesse (nt Java®), kusjuures mõlemat kasutavad professionaalid erinevate ülesannete jaoks. Keeled võivad olla ka hädavajalikud, nagu eelnevalt mainitud, või funktsionaalsed, nagu Lisp, kus programmid koosnevad käskude asemel funktsioonide seeriast. Osa arvutiprogrammeerimist tehakse puhtalt skriptikeeltega, mis on tõlgendatavad inimloetavad dokumendid, mis sooritavad toiminguid mõnes teises raamistikus.
Traditsiooniliselt on eristatud kahte tüüpi arvutiprogrammeerimist. Esimene on rakenduste programmeerimine ja hõlmab programmide kirjutamist, mida saab mõne funktsiooni jaoks otse kasutada. Teise võimalusena on olemas süsteemiprogrammeerimine, mille eesmärk on kavandada programme riistvara või raamistike haldamiseks, milles rakendused saavad töötada, näiteks operatsioonisüsteemid.
Võrgu- ja kaugsuhtlustehnoloogia laialdasemalt kasutusele võtmisega hakkasid teatud tüüpi programmeerimised teistest arvutiprogrammeerimise valdkondadest eristuma. Võrgu programmeerimist peetakse erinevaks võrguprotokollide ja riistvaraliideste nõutavate teadmiste tõttu. Veebipõhiste rakenduste või serverite programmeerimine nõuab spetsiifilisi teadmisi turvapiirangute, Interneti-protokollide ja ainulaadsete programmeerimismustrite kohta.
Samuti on teatud tüüpi arvutiprogramme, mis on spetsiifilised teatud valdkonnale või sihtriistvarale. Andmebaasi programmeerimine hõlmab spetsiaalsete päringukeelte, skriptide ja muude elementide kasutamist spetsiifiliste andmebaasiinfrastruktuuridega suhtlemiseks. Mängu programmeerimine hõlmab teadmisi graafika riistvara, graafika algoritmide ja mõnikord ka spetsiaalsete optimeerimistehnikate kohta. Manussüsteemid, nagu pihuseadmed või konsoolid, võivad hõlmata unikaalseid riistvaraspetsifikatsioone ja teadmisi hankijate teekide kohta. Täiustatud reaalajas süsteemiprogrammeerimine võib hõlmata tõrkekindla juhtimistarkvara kirjutamist tuumaelektrijaamade või sõjaväe riistvara jaoks.