A while ago I stumbled upon an extremely handy website pomo.tv, which gives an overview of talks given at various iOS/MAC/Swift conferences throughout the world. I really enjoy watching these talks so when I heard about MDevcon, a conference in my hometown Amsterdam, I got very excited and signed myself up for both days of the conference. This post is a write up of some of my experiences in those two days.

When thinking about architecture you should not think about rules but more about principles. Not every project is the same so we can not use the same approach all the time.

The first day, tutorial day, I attended an interesting session by Jorge D. Ortiz-Fuentes about clean architecture of iOS Apps. The clean architecture approach involves several layers of abstractions and strong adherence to the single responsibility principle and dependency inversion principle which leads to a very decoupled system. Some advantages of this approach are:

  • Highly testable code: Test the business rules without the UI, Web Server etc.
  • Independent of UI (e.g. easily switch out a UITableView for a UICollectionView)
  • Independent of service and database (e.g. easily move from parse to lets say Firebase)

This was a interesting session which made me think a lot about a how I architecture my own apps. Since it’s quite an extensive subject to cover in just a few hours we only scratched the surface of it but I would really like to try this out in a future project.

You are not working for other designers you are working for the people who have no idea what it is you do, don’t care about what you do, but just want an app that works so they can go on with their lives

Conference day started with a talk from designer, developer and also member of the band airplane mode Joseph Cieplinski. His talk was about how he feels that a lot of designers design to impress other designers. His advise to not only designers but also developers was to take more time to learn from other people instead of competing with them, because in the end of the day its not about those people you compete with but about the group that you are building this product for, the user!

Later that day Marin Todorov, iOS Dev and author at raywenderlich.com, talked about how in the past year he has become a better developer by spending more time away from the computer. A lot times we are scarred that if we spend less time on our craft we will fall behind, which is not always true. Marin for example decided to spend more time away from the computer by picking up cooking and long distance running. What he noticed is that by focusing on something completely else he gave his mind the chance to process the things he was working on. Therefore when he would come back to his code he would have a better understanding of how the problems he was facing could be solved. A lot of the things he talked about are not new concepts but things we tend to forget sometimes in our everyday lives. That’s why I think it is good to remind ourselves of this every once in while.

Being open source is the exact opposite of sitting in the corner of the office with your screen aimed towards the wall. In that spot very bad code is born!

Something else he talked about is about becoming more ‘open source’. With this he means that we always should look for feedback on our work and our projects. We might find out that some of the things we are very proud of can be done better in a different way, but if we would have not gotten that feedback we would have missed an opportunity to learn and get better. Marin found this out himself when he was writing an framework for fast JSON parsing. First he had not shared it with anyone and he was feeling very confident about his code. But when he proudly shared it with other developers he found out that his code wasn’t as great as he thought it was. But after all the feedback his project got so much better and eventually he was able to release a great framework. His advice was to look for feedback early and to not only look for feedback within your own community. For example try to talk to an android engineer and instead of debating which platform is better try to find out how they would approach their problems and get things done.

Other talks that I liked a lot where ‘Unit testing and mocking in swift’ by Ben Asher, ‘Asynchronous NSOperations at your command’ by Andrew MCKnight and ‘Hello Watch OS 2” By NatashaTheRobot. Overall it were to amazing days full of interesting talks which I learned a lot from. It was great meeting so many people with the same interests from all this different countries and it inspired me to get better. I hope to attend another conference soon.