Para que o dispositivo funcione conforme as necessidades do usuário, ele deve ser programado corretamente (escrever um programa para um computador, desenvolver um circuito lógico para um FPGA, gravar informações em ROM, etc.). Um grande número de ações pode ser chamado de programação, mas no sentido usual é escrever programas de computador.
Em um sentido restrito, programação (ou codificação) significa escrever programas (instruções para um computador) em uma linguagem de programação específica de acordo com um algoritmo criado. Normalmente, eles têm sintaxe legível por humanos. As pessoas que se dedicam à programação são chamadas de programadores (codificadores ou simplesmente "codificadores"), e aqueles que criam algoritmos são chamados de algoritmos. Em um sentido amplo, programação deve ser entendida como todo o conjunto de atividades que estão associadas à criação e manutenção de produtos de software (software de computador) em funcionamento. O mais preciso é o termo moderno - "engenharia de software" (ou simplesmente "engenharia de software"). Os especialistas neste campo estão empenhados em definir tarefas, projetar programas, construir algoritmos, escrever textos de programas, testar, depurar, documentar e manter. Qualquer programação de computador é baseada no uso de linguagens de programação. Para executar um programa em um computador, é necessário usar tradutores que irão traduzir uma linguagem legível por humanos (um programa escrito) para a linguagem de instruções de máquina. Existem dois tipos de tradutores - intérpretes e compiladores. A principal diferença entre eles é que o primeiro executa o programa imediatamente, enquanto o segundo simplesmente o traduz para a linguagem de instruções de máquina, sem executá-lo mais. Para executar um programa, ele deve primeiro ser compilado ou interpretado. Anteriormente, você tinha que escrever programas e depois compilá-los separadamente, o que complicava o processo de teste e depuração. Atualmente, existem diversos Ambientes de Desenvolvimento Integrado. IDEs incluem editores para editar e inserir textos de programas e vários tradutores de diferentes idiomas. Além disso, eles podem incluir várias outras rotinas que facilitam o processo de criação, teste e manutenção de produtos de software.