Galin Kardzhilov

Head of iOS Development, Еvori


Architecting iOS Apps with VIPER

It’s always exciting to start a new project. At the start, the determination and motivation are at their highest levels. There’s so much to be done and a lot of room to structure and make things “right” this time. We review and follow the best practices and Apple’s MVC guidelines.

A year later, a few more teammates on the project, a ton of new features and a ton of revised or removed old features, something starts to feel weird. Our pretty MVC has slowly mutated into Massive View Controller. Again.

Debugging and tracing bugs becomes much slower. Bugs get more complex and only the blessed ones, who are very familiar with the code, can fix them without breaking anything else.

Adding new teammates becomes a burden both for their leader and themselves. The code learning curve raises exponentially and sometimes it takes months for a new teammate to get up and running.

Tests coverage becomes modest and adding new features requires a full regression and often refactoring.

By that time, we already know that there must be a better way to structuring our code. But wrapping our brains around a new architecture, implementing it and knowing if it’s worth is not an easy job.

In this session I will share my experience with switching from MVC to VIPER, how it affected the team and our approach to adding new features, implementing tests and resolving existing issues. I will get into the details of setting up all VIPER components so that you can easily try it yourself. You will also be encouraged to share your experience with architecting iOS apps in exchange of some neat bounties.

Level: Intermediate


Galin is a creative and proactive software engineer, with 0xF years of experience. He is the Head of iOS Development at EVORI, ensuring the Printastic app is always delivering a great deal of happiness to people’s lives.

Starting his career at an early age and going through various technologies, Galin has been hooked on iOS since the start of the decade. He always aims to write clean, easy to understand and scalable code, while providing the best user experience and team prosperity.

On the rare occasions when he is not coding, he is actively digging into marketing, business and leadership materials as well as holes in the beach sand.