Por que programar não é pra qualquer um?

Responder essa, parece que estão querendo colocar os programadores em um patamar superior. SQN. Programadores precisam se dedicar muito nessa profissão.

A profissão de programador, como um todo, demanda que o profissional seja capaz de desmembrar tarefas complexas em passos menores e facilmente executáveis, utilizando uma linguagem extremamente precisa e que não admite erros.

Programas simples como solicitar que um led acenda ao abrirmos uma porta, demandam uma série de instruções que precisam estar ordenadas na sequência correta e devem ser sintática e semanticamente corretas.

Exemplificando, para o Arduino, um programa desses que acende ou apaga um led a partir do monitoramento de um sensor, seria mais ou menos assim:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <Arduino.h>
 
int ledPortaAberta=8;
int ledPortaFechada=10;
int sensorPorta=6;
 
#define DESLIGADO LOW
#define LIGADO HIGH
 
void setup(){
    pinMode(ledPortaAberta, OUTPUT);
    pinMode(ledPortaFechada, OUTPUT);
    pinMode(sensorPorta, INPUT);
    Serial.begin(9600);
}
 
void loop(){
     
    if (digitalRead(sensorPorta)==LIGADO){
        digitalWrite(ledPortaAberta, DESLIGADO);
        digitalWrite(ledPortaFechada, LIGADO);
        Serial.println("Porta fechada");
    }
    else {
        digitalWrite(ledPortaAberta, LIGADO);
        digitalWrite(ledPortaFechada, DESLIGADO);
        Serial.println("Porta aberta");
    }
    delay(1);
}

Conforme dito, o programa não deve ter nenhum erro sintático, caso contrário ele não ele não irá compilar e muito menos será possível gerar o código executável abaixo:

Ainda assim, não basta saber escrever o programa, colocar os comandos na sequência correta, seguir todas regras da linguagem, saber compilar, gerar esse código hexadecimal e até entender cada um dos comandos hexa acima.

O programa também tem que ser semanticamente correto.

A semântica, o sentido das palavras bem como a interpretação das sentenças e dos enunciados utilizados nessa linguagem acima devem refletir exatamente o que foi solicitado em linguagem natural, “quando uma porta se abre, um led se acende e quanto a mesma porta se fecha, o led tem que apagar”.

O trabalho do programador é converter um requisito em linguagem natural para a linguagem formal.

Esse trabalho de fazer a conversão e garantir que a semântica de ambas linguagens estejam alinhadas é onde está a arte e o desafio que programadores enfrentam todos os dias.

Dá para aprender, mas eu diria que poucos são metódicos o suficiente para tal.

É uma questão de perfil, nada mais.

Resposta originalmente postada no Quora em 29/maio/2020 e fonte da foto do teclado: https://www.cybercentralcorp.com/blog/

Last updated by at .