Even though I don’t think that software development is engineering; these two passages spoke to me in terms of project roles that should be distinguised on larger projects: architect and architectural engineer (they apply to structural engineering, but I am going to stretch them here) :
Architecture is a communicative art that situates human activity within a horizon of possibilities, the art and science of designing buildings. A wider definition would include within its scope the design of the total built environment, from the macrolevel of town planning, urban design, and landscape architecture to the microlevel of furniture and product design. Architecture, equally importantly, also refers to the product of such a design.
Architects are responsible for the form and appearance of a building with a focus on the way that people use and experience the spaces of the building. The Architectural Engineer is responsible for ensuring that “the building works” – that it stands up, that the HVAC system operates, that light and power are delivered as needed. Architectural Engineers use primarily the tools of engineering to achieve optimum system selection and sizing within the overall constraints usually set by the Architect.
These days you are lucky to find people who can fulfill the former alone, let alone both roles.