Boa tarde, Gabriel! A função de um programador nada mais é do que solucionar problemas através de desenvolvimento de softwares. O programador sempre tem que estar atualizado das melhores ferramentas e ter domínio de variadas linguagens de programação para que consiga dar conta de eventuais problemas que podem aparecer. O mercado está em alta e com bastante demanda, tanto dentro do Brasil, quanto fora. E acredito que chegar mostrando essas "subáreas" que você perguntou, podem acabar te confundindo logo de ínicio, te recomendo pesquisar sobre a profissão, afinal existe SIM muito conteúdo gratuito disponibilizado na internet, por mais que o conteúdo pago as vezes seja mais fácil de encontrar, acredito eu que não haja necessidade.

@Gugasth, sobre programador 'solucionar', geralmente não é o caso. A não ser quando é o caso de que é 'colocado' como programador mais exerce a função Engenheiro ou Arquiteto de Software FullStack. A parte de solucionar está muito mais voltada a parte de análise.