Graduated in Digital Media M.Sc. now developing the next generation of educational software. Since a while I develop full stack in Javascript using Meteor. Love fitness and Muay Thai after work.
Architect - Conceptual, system design, super high level, technological choices on highest level with high impact, strategical (also in combination with higher business goals), sometimes overlapping with higher management, very few actual coding involved, very high / long-term stakes involved (<-- the last is the reason for the high payment)
Engineer - Conceptual on the actual software project (requirements, design pattern, methodology, teams etc.), designs and "lives" the whole development llifecycle, mentoring other developers, strong theoretical (also mathematics, security, algorithms etc.) AND practical (language features, performance etc.) knowledge and skills, high / mid-to-long-term stakes involved, also often makes choices about things like code quality / formatting, test-design, documentation style, variable naming etc., reason for high payment is the overall high level of knowledge and skill in various areas
Developer - Conceptual on parts of the software (designing components and features, may also involve design pattern, algorithmic choices etc.), more focus on the practical side, lot's of implementation of classes, routines, tests etc. but still with principles in mind like kiss/dry/solid etc., mid level stakes, if architects and engineers are on a strategical level then developers are like the "tactical" unit
Programmer - Very few conceptual work, mostly implementing by given requirements, often work that can be outsourced, few to no stakes (component can be broken but also being replaced)
My totally subjective observation of the roles:
Architect - Conceptual, system design, super high level, technological choices on highest level with high impact, strategical (also in combination with higher business goals), sometimes overlapping with higher management, very few actual coding involved, very high / long-term stakes involved (<-- the last is the reason for the high payment)
Engineer - Conceptual on the actual software project (requirements, design pattern, methodology, teams etc.), designs and "lives" the whole development llifecycle, mentoring other developers, strong theoretical (also mathematics, security, algorithms etc.) AND practical (language features, performance etc.) knowledge and skills, high / mid-to-long-term stakes involved, also often makes choices about things like code quality / formatting, test-design, documentation style, variable naming etc., reason for high payment is the overall high level of knowledge and skill in various areas
Developer - Conceptual on parts of the software (designing components and features, may also involve design pattern, algorithmic choices etc.), more focus on the practical side, lot's of implementation of classes, routines, tests etc. but still with principles in mind like kiss/dry/solid etc., mid level stakes, if architects and engineers are on a strategical level then developers are like the "tactical" unit
Programmer - Very few conceptual work, mostly implementing by given requirements, often work that can be outsourced, few to no stakes (component can be broken but also being replaced)
Thank you very much for helping me to understand differences clearly.