C3 & Clean Architecture workshops iOS

A couple of months ago my friends from the iOS team went to MCE^3 conf in Warsaw. You can read about their trip on our Tooploox blog. They were hyped about Jorge D. Ortiz’s talk about Clean Architecture. We wanted to invite him to Wrocław and learn about it a little bit more.
As we couldn’t fit a full 5 days of workshops in our schedule, we had to prepare and catch up with some things of our own. Our preparation lasted about two months. On most Wednesdays we gathered, both the Android and the iOS team and discussed certain issues. We learned together about Clean Architecture general concepts, Dependency Injection and Inversion, various Design Patterns, eg. various Factories, Command and Strategy. There were presentations, live coding, Jorge talks watching, Uncle Bob talks watching. I would say we thought we had a pretty good grip on the subject. At least we believed so.

Before the workshops we decided to organize a little conference (or rather unconference as some would say). I could not say too much about organization (kudos to Magda and Jakub). I was a bit late due to a gigantic traffic jam in Wroclaw on that day in, however I was there for the most of the time. As for limited promotion we'd had, there were plenty of people there. Our first speaker Jakub described his experiences with backend Swift on our Slacket application. Please do check out Slacket on our Github. Then Jorge gave his talk about Clean Architecture on mobile and super powers. It was hard for me to judge it, as we had seen that one during one of our tech talks, and we had prepared from it. However some of my friends said it was great. Last but not least, I gave a little speech about Design Patterns in Swift and community role in discovering them.
Then came the main part - the Workshops. It will be quite hard to describe it as the scope and material covered was quite vast. I will try to give you a glimpse of the workshops without spoiling it too much.
On the first day - Thursday, Jorge started with a quick presentation of current architecture concepts, like MVC, MVP and MVVM. Then we started converting an example from MVC to MVP which is a preferred way in clean architecture. I had mixed feelings about it. It looked great and I could see the benefits, but somehow it was similar to widely used MVVM, and it was hard to differentiate them initially.

Then step by step, on consecutive days we had implemented more and more of Clean Architecture into the project. Entity Gateways, Use Cases then Use Case factories, with every hour I was a little tad better with this and on the last day it was really trivial to add new functionality to our example app. On that moment I realized the power that this approach gives. It makes it really easy to improve, add features and test the application. All the initial effort was totally worth it.

As an iOS team we had few problems. First of all: the storyboards. In our production code we had avoided storyboards so we had a hard time accommodating to it. For us it would have gone a lot quicker if we had used coordinators initially. Another issue was team size so after splitting up to 2 teams it went smoothly.
The whole idea of workshops and the event itself was a blast. I would like to thank everyone at Tooploox and of course Jorge D. Ortiz who is a great guy and a terrific speaker. It was a major learning experience for me not only about programming and iOS architecture but also about team play, as coding is a social activity. I hope there will be more events like that here in years to come. Maybe we could get Uncle Bob to come and hate on Swift a little bit.