The lack of standardized job titles in the software indusrty makes it diffucult to compare one job to another. Is a developer the same thing as an engineer? Is an Engineer III the same as a Senior Engineer? How about a MTS and an Architect?
Here are some job titles I've seen, in no particular order:
It seems like every employer has a unique career path for the iOS developer. Good luck determining if a job opportunity is a step up in your career path.
The lack of standardization also makes it difficult to know if there is a technical iOS career path beyond the any given title. If you join company A as a senior developer, do they have a higher role you can move in to? Or is management your only option?
Summary: New Graduate iOS developers can fix bugs and implement new features, but will need lots of supervision and time to learn new skills.
In my experience, the New Graduate is usually called a "new college graduate". These days you can find talented iOS developers graduating from bootcamps or from watching WWDC videos, so the word "college" might not be necessary.
Oddly, some employers seem to hire students in bulk and assign them roles without consulting them. In those cases, an iOS bootcamp graduate might know a lot more about iOS than a generic college grad who might not even own an iPhone.
The way new graduates are selected varies by quite a bit from company to company. As I mentioned, some just hire in bulk, presuably looking at grades, how smart the candidate seems, or just using some form of gut feel (which may be quite biased!). Other companies look for positive signs of specific skills: portfolios of work, coding challenges, and so on.
In general, I expect a new college grad to have some understanding of software engineering concepts like memory management, threading, Object-Oriented programming, and so on. They also need to be able to write some code to get work done, but not necessarily in Swift or Objective-C. Ideally they also know some of the concepts of source control and pull reuqests.
New graduates should have:
Summary: Junior level iOS developers can build a simple app from scratch, debug many issues, and implement parts of major features. They may need some guidance so that they don't miss more simple or reliable solutions to problems.
Junior Software Developers generally have a year or two of iOS experience working on a team with more senior iOS developers. They should understand the git basics, and how to use pull requests, and how healthy peer code review works.
In additin to a New Graduate's skills, they should easily be able to:
They should have some working experience with:
Summary: Like a new graduate, a developer who has switched careers may need significant supervision and time to learn new skills. Where they differ is that they may already have mastery of related skill sets.
Folks who have just changed careers to make iOS apps vary. They might be designers, or product managers, or artists, or janitors in their previous life. They might even have developed for a different platform, as I did when I switched from developing software in the semiconductor industry to iOS development. My primary expectation from this kind of developer is strong motivation to learn iOS. They'll probably need some guidance from a more senior iOS developer to master the iOS specific skills.
A career change software developer should a have the same abilities as a new graduate at a minimum.
Summary: Senior level iOS developers can build an app from scratch, debug challenging issues, and implement major features.
Senior Software Developers should have several years of experience developing iOS apps on a team. They should have all the junior software developer skills and the following.
They should have mastery of:
They should have competence in:
Summary: Principal level iOS developers can figure out the bugs that other (really smart, less-skilled) developers added to a project. They can fix most of these bugs without rewriting the app. They also have experience implementing a broad variety of app features, and should have expertise in one or more of the more specialized areas of app development (e.g. Audio, NFC, etc). In addition, they should have practical experience outside of iOS app development (often in web development).
Principal Software developers should be able to tackle any problem or feature in any iOS app. In addition, they should be able to represent the technical interests of their team to other teams and to any level of management. They need an excellent understanding of their iOS app, and enough competence in other technical areas, such as web development to understand the technical concerns outside their app.
All of the skills of the senior developers and: