För att få enheten att fungera som användaren behöver måste den programmeras korrekt (skriv ett program för en dator, utveckla en logikkrets för en FPGA, skriv information till ROM, etc.). Ett stort antal åtgärder kan kallas programmering, men i vanlig mening är det att skriva datorprogram.
I snäv bemärkelse betyder programmering (eller kodning) att man skriver program (instruktioner för en dator) på ett specifikt programmeringsspråk enligt en skapad algoritm. Vanligtvis har de mänsklig läsbar syntax. Människor som är engagerade i programmering kallas programmerare (kodare eller helt enkelt "kodare"), och de som skapar algoritmer kallas algoritmer. I vid bemärkelse bör programmering förstås som hela utbudet av aktiviteter som är förknippade med skapande och underhåll av programvaruprodukter (datorprogram) i funktionsdugligt skick. Den mest exakta är den moderna termen - "programvaruteknik" (eller helt enkelt "programvaruteknik"). Specialister inom detta område är engagerade i att sätta upp uppgifter, utforma program, bygga algoritmer, skriva programtext, testa, felsöka, dokumentera och underhålla. Alla datorprogrammeringar baseras på användningen av programmeringsspråk. För att köra ett program på en dator är det nödvändigt att använda översättare som översätter ett mänskligt läsbart språk (ett skrivet program) till språket i maskininstruktionerna. Det finns två typer av översättare - tolkar och kompilatorer. Huvudskillnaden mellan dem är att den första omedelbart kör programmet, medan den andra helt enkelt översätter det till språket för maskininstruktioner utan att det körs vidare. För att köra ett program måste det först kompileras eller tolkas. Tidigare var du tvungen att skriva program och sedan kompilera dem separat, vilket komplicerade test- och felsökningen. För närvarande finns det olika integrerade utvecklingsmiljöer. IDE inkluderar redaktörer för redigering och inmatning av programtexter och olika översättare från olika språk. Dessutom kan de inkludera olika andra rutiner som underlättar processen för att skapa, testa och underhålla programvaruprodukter.