Find the image and markdown version on Github.

iOS Developer Skills Matrix

We should always try to do our best in being objective when we assess ourselves or potential team members.

Unfortunately, the more precise we try to answer the question the further we diverge from the truth.

This skills Matrix is an attempt to define relative requirements for an iOS developer candidate.
It strives to be:

  • precise enough to give an idea which areas to improve
  • vague enough to avoid canonising particular knowledge


Three levels don’t mean that all organisation should have only three levels. Although, having only three levels allows the bigger…

Recently I’ve switched from a developer role to hands-on team lead and decided to share my experience while it is still fresh in memory.

“Hands-on” simply means that I still write code ⌨️


This is how I prefer to match roles and responsibilities:

🗡🗡Tech Lead — a person who is responsible for setting tech agenda for the team, has no direct reports, full-time coding. [Tactical hire]

🗡🛡Team Lead — a person who is responsible for tech agenda and long-term team success, has direct reports, part-time coding. [Strategic hire]

🛡🛡Engineering Manager — a person who is responsible for long-term team success…

Update: slides which I’ve presented on Swift Ninjas meetup.

Dear iOS friend!

It’s been a couple of years since the iOS community started their attempts to design non-UI driven applications. We can all easily recall approaches like Clean Architecture, Flow Coordinators and Redux — none of them became the standard for one reason or the other, but that doesn’t mean we have to give up!

Our goal isn’t that ambitious. We want to be able to:
- Build business logic-driven applications in which our UI doesn’t take centre stage, but instead is just a component like any other;
- Compose…

Let’s approach the topic of creating own architecture in this series of articles.

What is Architecture?

Architecture is the highest level of a system design.

System design is a way to facilitate production of code for an application.

An application is a medium needed to fulfil a (business) goal.

Can I skip it?

Even when you don’t prepare system design before making the app, you still have to think before writing any code, and this is called accidental system design, which leads to accidental architecture (AA).

It is easy to detect accidental architecture:
Q: Why our code is so ugly?
A: Historical reasons…

What will I gain?

The purpose of setting…

Tree-like compilation of topics highly relevant to iOS development available as a living page on Github.

Who is it for?

  • anyone who wants to become an iOS developer
  • iOS developers who desire to become experts
  • iOS developers who are preparing for interviews and need to brush up knowledge
  • iOS developers who need to compile own set of interview questions

Why not a list of interview questions and answers?

It is hard to remain calm every time I encounter such a list since those questions usually have answers. …

In this article, we will go through different ways of presenting screens in the iOS app. We will start with most straightforward cases and eventually go through some advanced scenarios. In a nutshell we will be adding more abstraction layers to make our screens decoupled and navigation testable by unit tests. Some code examples are available here. Please note that the ways of doing navigation that we described here are not necessarily compatible, and it might be a bad idea to use all of them at the same time.

A UIViewController to UIViewController presentation

This is the most basic way of screen presentation which is…

In this article, I want to review the usage of Singleton and Service Locator patterns in iOS and the reasons why they are often called anti-patterns. We’ll learn when and how to use them, while keeping our code testable.


Singleton is a class which has only one instance existing at a time.

Even if you have just started iOS programming, it is very likely that you have already worked with singletons like UIApplication.shared and UIDevice.current. …

It has been years since iOS community started to fight UIKit, and many people have come up with sophisticated ideas about how to bury the UIKit internals under layers of abstraction in their fancy architectures. Some teams rewrite UIKit, fulfilling their engineers’ ego but leaving behind a humongous amount of code to maintain.

Make UIKit work for you

Since I am a lazy person, I always aim only to write code which is necessary and essential. I want to write code which is good enough to fulfil both the product requirements and the code quality standards we have in our team, but a minimum of…

How to build a good iOS architecture by learning from the old one

Port house Antwerp

A bit of history

In 1979 Trygve Reenskaug came up with MVC — a general solution to the problem of giving users control over the information they see from a device. The original tiny document caused an enormous amount of interest, and eventually, many companies and individuals came up with their own understanding and implementations of the MVC idea, not necessarily preserving the original meaning of a Model, View, and Controller.

The original MVC


“Models represent knowledge. A model could be a single object (rather uninteresting), or it could be some structure of objects.” The original MVC report, 1979.


“A view is a (visual) representation of its…

Bohdan Orlov

iOS head. ex @IGcom 📈, @MoonpigUK 🐽, @Badoo 💘 and @chappyapp 🖤 Lets' grow together 🌱@bohdan_orlov

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store