I think this is the right place and time to go into the open with one favorite concern of mine with regard to my professional (software engineering) environment. The issue: "proliferation of job titles in software egineering".
What I mean is the use of the terms "architect", and "designer" which are used, as I insinuate, solely to document ones claim to be standing out from the crowd of "simple" software developers.
I want to start my discussion of this topic by pointing out that software engineering, to my knowledge, is the only engineering discipline that has established this practice. Just think of a "mechanical engineering architect", or an "electrical engineering designer". Anyone showing up with this written on their badge would be met with a strange look (to say the least) by his/her colleagues.
My argument is that, just as in the other engineering disciplines, there does not exist a qualitative differentiation or layering of tasks within the software engineering discipline that would warrant these titles. The whole process of software devlopment is one of design and architecture (if you want to use that latter term. I'd rather leave it to proper architects), up to the point where the compiler hits in and does the menial things. The only task that really has a different character and focus is requirements gathering (or "Analysis" as it was called in the old days), because here the communication with the client and the molding of requirments into a complete and unambiguous specification poses a completely different challenge. I therefore approve the job title "analyst", however, the analyst doesn't necessarily have to be a software engineer. Rather, this role will often be filled by experts from the problem domain (say, business administration) who have acquired additional skills with regard to specifying software.
Another argument is that power without reponsibility is always a bad thing. In many organizations I have seen so-called "architects" deployed to counseling positions where they would influence or make decisions, but not be responsible for their execution. Often, it was never even checked whether the person in question had ever successfully solved the problem at hand. It was simply their personal claim, and their ability to communicate it, that established their credibility. It would have been better to choose someone who can show off concrete experience, and put her in a position where she holds full responsibility for the outcome. That is what I call a lead developer or a team lead, and she will be an experienced software engineer.
My plea is therefore to do away with these ridiculous titles. "Software Architect", "Software Designer", "System Designer", nah! Nobody knows what they do anyway - or can you think of corresponding curricula that would meet the requirements of academic education? They're all software engineers, some senior, some junior, some team leads, some project managers, some wearing suit and tie and others coming around in jeans and shirt.