One thing that has always confused me is the different titles of people working on software projects. So, we talk of Architects, Project Managers, Business Analysts, Product Owners, Scrum Masters, Technical Leads, and so on.

Does anyone have a good source that defines and explains the differences of such titles? I know we all use them and we all have an idea of what they might mean, but I have been surprised many times being on a project and talking to an Architect, for example, who I thought was a PM.

You hit the nail on the head Too many titles, too many acronyms, confusing roles and responsibilities,.. Is it any wonder most software projects fail nowadays?

I have to star with the disclaimer that I am no expert, but I can give you what I think some of these roles are and how they are different than others.

Architect - Understands the need for the project, sees the business value and is also technically capable of breaking down the project into small design layers that can be handed off to the developers. The important think to remember is that you cannot separate architecture from technology or process, so the architect really own those (Well a good architect, anyway)

Project Manager - This can mean many different things, but it is usually the "Process implementer", making sure the project is done on time and within budget. This role may or may not be present in newer agile projects.

Product Owner - The go-between that makes sure what gets developed meets stakeholder requirements and has business value.

Scrum Master - Facilitator. This role is present on agile teams and is the person that makes sure the developer team has what it needs to do its job.

Business Analyst - Generally works with the PM and sometimes the Architect to translate stakeholder requests and desires to business value, evaluate competitors, scope the market, etc.

Lead Developer - Usually the person that the Architect hands the project to and the one who is responsible on the "how" when implementing a solution. (Architect is the decider of the "what").

Not sure that I can shed light for all those titles and terms, but a while ago I found some good information about what an architect is and I kept it. I don't mind sharing it with you (slightly paraphrasing). I hope it's helpful.

Application architecture contains the elements of visual design and programming, but the core of it is Computer Science. We’re talking Software Architecture, System Analysis, and Information Architecture.

So who are the web programmers then?

Most application architects are great programmers, but not all programmers can develop great applications.

The difference between programming and application architecture is like knowing how to write, and knowing how to write a novel or a play. That sets Shakespeare apart from many who just know how to write.

Engineers versus Architects

What Engineers and Architects do overlap in many areas, so the difference is somewhat blurry. Although there is one major characteristic which can be used to set those two species apart:

Engineers often start with building and perfecting a structure, then plan on making it usable for people. If their design is not going to be used by people, then they just skip that stage.

Architects start by studying what people experience in everyday life, then plan on building a structure that caters to people’s unsatisfied needs. Architects’ creations are often more visually pleasing too! In the ideal case a structure is not only aesthetically pleasing, but also functions in a smart and intelligent manner, in other words the focus is on both form and function.

We often hear about both Software Engineers and Software Architects in the field of Computer Science. Application Architects often conduct Business System Analysis, and Information Architecture during a project to makes sure project requirements and goals meet the end users’ needs.

If it takes you too long to refactor than you are not refactoring enough!