Unfortunately everything in software engineering gets kind of...wibbly-wobbly. I can generalize for you from my experience but you'll see just how weird it can get:

1. Junior SE: Typically not responsible for anything. Expected to be a cost-sink for a bit but will ideally not spend long in this position and advance to whatever the next position is. Usually someone fresh out of school or new to the sub-field.

2. Software Engineer: This title can be an alternate title for Junior, and it can have several ranks inside of it (1-3 in order of experience). This person typically has 0-N years of experience where N is determined by industry. In start ups you see people not spend long here. In more established companies people can spend quite a few years here.

3. Senior Software Engineer: One of the only consistent titles in the industry. Always comes after Software Engineer. This person has experience and is typically responsible for maintaining a single code base, mild planning tasks, and sometimes overseeing 1-2 software engineers/juniors. In more established companies SSE has tiers, with the final tier having responsibility approximately on par with the next rank.

4. Lead Software Engineer: Some companies use this to refer to a final-tier senior.

[At this point the tree bifurcates]

5. Staff Software Engineer: This is an IC track "management" position. Less code contribution, more high level planning and architecture. Will typically oversee a few senior engineers but this is not required. Typically "do-ers" fall into this position and have 7-10 years of experience.

5a. Director/Junior Director/Manager: All of these titles can mean the same or different things and it REALLY depends on the company. At any rate, the "L-equal" title to staff is a people position that specializes in management of engineers.

6. Senior Staff Engineer: Usually awarded late in the staff engineer career path. Either represents the top tier of staff engineer, or as a special "preparation" tier for principal. Roles for principal and senior staff are similar but senior staff will have less expectation.

7. Principal Engineer: In some companies this replaces staff, and principal gets tiers. Generally principals are responsible for staff duties (see 5), but as they advance further in the tiers they become closer to R&D. Typically responsible for engineer oversight and code culture, spiking new services, planning, architecture, etc. The jobs can vary dramatically by company.

After this titles can vary wildly and it wouldn't be possible to nail down exact traits. You typically will have either research engineer, resident engineer, or another very important very small title coming after this.

In the event of data jobs typically engineering jobs are given an extra "data" in front of them. Data engineers (just add Data in front of 1-6 with the exception of people management) have additional responsibilities that involve dev-opsy infrastructure work as well as building pipelines. Usually data engineering positions require more in depth backend knowledge and can be performance critical positions (in contrast "regular" SE positions can be performance critical but typically are not as critical except in special cases).