A base da programação não é uma coisa só, mas diversas "diciplinas" importantes.
- Algoritmos
- Logica booleana
- Estrutura de dados
- Paradigmas de programação: imperativo, declarativo, funcional, orientado a objetos, maquina de estados (sendo o último muito util para firmwares de microcontroladores)
Nota: Eu ia adicionar Matemática na lista (já foi discutido sobre aqui), mas ao meu ver é algo fundamental, elementar que toda profissão exige, em maior ou menor grau.
Essas são hard-skills necessárias se você quiser sentir que sabe o que está fazendo.
No entanto existem algumas soft-skills importantes ao meu ver:
- Inglês tecnico
- Boa comunicação
- Capacidade de destrinchar problemas grandes em menores
- Organização (pessoal, temporal e de codigo)