De la manière dont je comprends le terme, l'ingénierie consiste à appliquer les résultats de la science et la méthode scientifique elle-même à un problème concret. Certains programmeurs le font, d'autres non. Prenez le débogage, par exemple : L'approche scientifique/ingénierie serait de collecter des données, de former des hypothèses, de tester/essayer de falsifier les hypothèses, de former de nouvelles hypothèses et ainsi de suite. Mais je suis sûr que vous avez vu des programmeurs qui se contentent de modifier un code bogué sur la base d'hypothèses non testées jusqu'à ce qu'il fonctionne (une fois).
Dans une offre d'emploi, je supposerais qu'un programmeur ne fait qu'écrire du code, alors qu'un développeur/ingénieur logiciel est censé mener à bien l'ensemble du processus de développement d'un logiciel. C'est-à-dire qu'il doit parler aux utilisateurs (potentiels) d'un produit, comprendre leurs besoins et concevoir le logiciel de manière à ce qu'il aide les utilisateurs à résoudre leurs problèmes. Elle doit également concevoir le logiciel de manière à ce qu'il puisse être maintenu et étendu à l'avenir. L'écriture du programme ne représente qu'une petite partie de ce processus. Pour les équipes plus importantes, il peut être judicieux d'avoir quelques développeurs et davantage de programmeurs pour les aider à effectuer le "travail de base".