Om het apparaat te laten werken zoals de gebruiker het nodig heeft, moet het correct worden geprogrammeerd (schrijf een programma voor een computer, ontwikkel een logisch circuit voor een FPGA, schrijf informatie naar ROM, enz.). Een groot aantal handelingen kan programmeren worden genoemd, maar in de gebruikelijke zin is het het schrijven van computerprogramma's.
In enge zin betekent programmeren (of coderen) het schrijven van programma's (instructies voor een computer) in een specifieke programmeertaal volgens een gecreëerd algoritme. Meestal hebben ze een door mensen leesbare syntaxis. Mensen die zich bezighouden met programmeren worden programmeurs (coders of gewoon "coders") genoemd, en degenen die algoritmen maken, worden algoritmen genoemd. In brede zin moet programmeren worden opgevat als het hele scala van activiteiten die verband houden met het creëren en onderhouden van softwareproducten (computersoftware) in goede staat. De meest accurate is de moderne term - "software engineering" (of gewoon "software engineering"). Specialisten op dit gebied houden zich bezig met het instellen van taken, het ontwerpen van programma's, het bouwen van algoritmen, het schrijven van programmatekst, testen, debuggen, documenteren en onderhouden. Elke computerprogrammering is gebaseerd op het gebruik van programmeertalen. Om een programma op een computer uit te voeren, is het noodzakelijk om vertalers te gebruiken die een voor mensen leesbare taal (een geschreven programma) vertalen in de taal van machine-instructies. Er zijn twee soorten vertalers: tolken en compilers. Het belangrijkste verschil tussen beide is dat de eerste het programma onmiddellijk uitvoert, terwijl de tweede het eenvoudig vertaalt in de taal van machine-instructies, zonder het verder uit te voeren. Om een programma uit te voeren, moet het eerst worden gecompileerd of geïnterpreteerd. Voorheen moest je programma's schrijven en ze vervolgens apart compileren, wat het test- en debugproces bemoeilijkte. Momenteel zijn er verschillende Integrated Development Environments. IDE's bevatten editors voor het bewerken en invoeren van programmateksten en verschillende vertalers uit verschillende talen. Daarnaast kunnen ze verschillende andere routines bevatten die het proces van het maken, testen en onderhouden van softwareproducten vergemakkelijken.