This is more or less the list of skills you need to be considered a skilled iOS Engineer. The order it is not exhaustive. For some people the order can be different. Others will include or remove some elements.

UIKit Foundation CoreLocation MapKit Networking — NSURLSession Multithreading — NSOperationQueue CoreData Maybe CoreAnimation Maybe AVFoundation Unit Testing Dependency Injection Forget CoreData. Use Realm. Architectural Patterns — MVVM Architectural Patterns — VIPER ReactiveCocoa / RxSwift

Greenwich Park. London.

When I started coding iOS, around five years ago, the seniority was at point 9. Probably around two years ago to be a skilled developer point 11 was needed. Nowadays without 13 or 14 you can be considered a Mid Level iOS developer.

It makes sense, though. Five years ago, someone with two years iOS experience was considered a Senior. This is totally impossible today.

Evolution is everything

It is obvious that an iOS developer cannot stop evolving. Apple is releasing a new iOS version every year, so not evolving means getting outdated. You can discover any type of surprise during an Apple Keynote: Swift.

A team to evolve

To properly evolve you need a good team. If you are working alone, you are not evolving. Or at least you are losing a lot of opportunities to evolve.

During my years as an iOS developer, I only worked with one good team. Although I can consider the team as really good, we were only in step 10! Although we were far from excellence, they helped me evolve a lot. I’m really proud of this team

Search a team.

It has been never my case, however, if you already have a team, but you think you cannot evolve with them: quit! Start searching a new one!

During the interview process test the company team.

During face-to-face interview, be sure that they know more than you.

A team or a mentor

I’m speaking all the time about having a team. Do not read it literally. If you can work in a team of two developers where the other person can mentor your evolution, you are lucky!

Recruitment process

If you analyze yourself and you discover that you need a new company, search the proper one. Do not rush accepting the first offer.

One of the first questions a recruiter and the company will ask you is why you want to leave. If you fail going to a shitty company it will be really hard to explain why you want to leave only after two or four months.

Interview the company

Use the interview process to interview the company. Do not just go there to be hired. Go to the interviews to interview them, to check their skills. Be sure you can evolve as a developer. Many companies fail in the recruitment process because they just hire people with the same set of skills. Avoid these ones! Search a mentor during the interview process. Be sure you can evolve with them. If you found one of these companies: fight for the job!

Use them the evolve

Use the interview process to grow as developer. I know it is hard to be rejected. However, from every “No” I had in my career, I learned something new.

Do it yourself

So, if you just accepted a job where you will work alone, do it yourself. Evolve during the weekend. Check the list to find out where you are.

Open the last Coding Challenge you did. Review it. Today, can you do it better? What will you do different? Does not matter if your last coding challenge was done two weeks ago, I’m sure you can improve it with what you learned during this time.

No new ideas?

If you do not have the basic skill set ready (points 1 to 9) focus there. If you think you are fully competent with the basic skills, focus in the other ones.

Pick up one of the list. Read articles, search tutorials, go to meet-ups. Tag your old coding challenge and refactor it with your new skills. Not happy enough? Do it again. Search for more people speaking. Read a book!