I'm currently a senior research software engineer at a large company and am being offered a "senior staff engineer" position somewhere else. I am not sure if the new position's title conveys a sideways move or an advancement.

So, all other things being roughly equal (salary, domain of expertise, etc.), what is the external difference between these software engineer titles (in general and regardless of any particular company, if possible):


senior engineer
senior research engineer
senior staff engineer
member of technical staff
principal engineer


Edit:
Let me elaborate on "member of technical staff" since it's kind of uncommon. I think it's a high title, commonly associated with research. I know that Oracle, VMWare, and the old Bell Labs have these titles. See: Member of Technical Staff . I know what it means, but I don't know how it stacks up against the other titles, which is why I asked.

"So all things being equal" They're not. These titles are not equivalent.

I would rank them like this, highest to lowest:


Principal Engineer
Senior Staff Engineer
Staff Engineer
Senior Engineer / Senior Research Engineer


In general, "senior" implies depth of experience and maturity to work independently with less direct guidance in day to day activities.  An engineer can expect to receive assignments or tasks and external prioritization.  A Senior Engineer should expect to identify and prioritize such tasks for themselves.

A Senior Engineer is typically someone with deep knowledge of a technology or product line and experience with multiple release cycles.

A Senior Research Engineer sounds like someone who is not as involved in production cycles but is more focused on algorithms or long term strategic work.

"Member of the Technical Staff" does not imply any seniority or programming experience.  A receptionist can be a Member of the Technical Staff.

A Staff Engineer typically has deep experience with and contributes to multiple technologies and product lines across a company.

A Senior Staff Engineer does all the staff engineer stuff, plus works more in a leadership role across multiple product lines or technologies. Senior staff should also be thinking ahead for strategic planning and execution.

A Principal Engineer is often the top of the technical ladder in many companies, or just short of "Technical Fellow" or "Chief Scientist". Principals are also called architects in various fashions.  Principal Engineers are responsible for macro scale architecture of a software technology or product line, and providing guidance and oversight to multiple development teams working on different products or technologies to ensure that the technologies interoperate or connect to each other appropriately.

These are my opinions not as an HR manager but as an engineer who as worked in (and helped define) all of these roles.
