O programador/desenvolvedor escreve o código de determinada funcionalidade no sistema. Por exemplo, um botão num formulário que execute a ação de salvar um documento.
Mas imagine se esse botão for executado um milhão de vezes, por vários usuários. Isso certamente pode gerar alguns problemas de performance, caso o sistema não esteja preparado. Aí entra então o papel do arquiteto, que cuida do sistema de uma maneira mais ampla, cobrindo não apenas aspectos de performance, mas também de escalabilidade, segurança, etc.
Na minha opinião, qualquer um que mete a mão em código (de linguagem de programação) é programador.
Essas dezenas de títulos não fazem sentido pra mim, não sei quem inventou, se foi a Sun e ela achou que títulos diferentes iriam ficar legais nas certificações, mas não vejo sentido…
Se você usa os melhores conceitos de engenharia de software, design patterns, conhece bem de arquitetura, e faz um código ótimo, você no final das contas tá sendo um ótimo programador.
Como se programador fosse a classe Object do Java.
Se contratam um engenheiro civil, pra “levantar” uma parede, ele está sendo um pedreiro naquele momento, não interessa se ele vai usar todos os conceitos de engenharia que ele aprendeu ou não.
Eu até sinto um certo orgulho do título “programador”.
Sempre que perguntam com o que eu trabalho (não importando se fui contratado como Analista Programador, etc), eu digo que sou programador de computador. E se for alguém da área eu entro em mais detalhes.