Carey Aydelotte a l'idée de base juste, mais je veux ajouter mes deux cents. Ok, peut-être plus comme dix. Peu importe. Je ne suis pas "dans le truc de la brièveté" aujourd'hui. 🙂
Les fronts vs les back ends sont un "axe" de la programmation, dans lequel mes définitions de ces termes s'alignent assez bien avec les siennes. "Ingénieur logiciel" est simplement l'un des nombreux titres d'emploi qui peuvent ou non être le long d'un autre axe, par rapport à d'autres titres comme "développeur de logiciels", "programmeur", "codeur", et ainsi de suite.
Le "peut ou ne peut pas" est parce qu'il y a très peu de définition des différences entre les titres, sauf dans certains endroits qui exigent des certifications pour utiliser le mot "ingénieur". Ainsi, certaines entreprises appellent simplement tous leurs producteurs de code par un tel titre, tandis que d'autres ont une progression de ce qu'elles considèrent comme un titre plus "bas" à des titres plus "exaltés", d'autres laissent les gens choisir leurs propres titres (mais peut-être en ont-ils des préfixes comme "Junior" et "Senior"), etc.
Donc, vous pouvez souvent voir ces axes (et d'autres, comme la langue, l'industrie, etc.) mélangés. Par exemple, vous pouvez voir des personnes avec des titres tels que "Back-End Financial Rails Developer", "Front-End Elm Cryptography Software Engineer", "Full-Stack JavaScript General Random Keyboard Pounder", etc. etc. etc.
Tout cela dit, j'ai généralement entendu "ingénieur logiciel" pour faire référence à des personnes qui sont bien avancées dans leur carrière, équilibrant des compromis à plus long terme, ayant beaucoup plus de devoir sur la qualité du logiciel, et l'entreprise elle-même. Au-delà de cela, leur rôle pourrait être principalement ou exclusivement sur une extrémité ou l'autre, ou "full stack" (les deux extrémités), ou fluctuant.