iOS Environment at Mobven

Once upon a time, iOS development tools were fairly simple and static. Objective C was a mature language which was founded on good old C. Cocoapods was only accepted dependency manager. Then Swift happened. No pointers, no semicolons, no .h files. It offered a safe haven for those who do not know C/C++ or Java. Swift 1.0 was a fun tool to use. Table/Collection views were no longer pain sources, projects became tidier and app prototyping time dramatically reduced. However, every change brings its mess along with it. Swift was no different. Unstable syntax (hail to those who witnessed the 2.0 migration), slow compiling times (like old Eclipse experience), buggy syntax highlighter (sorry not buggy, not working) and sleepless, caffeine-fueled engineers were the first I can write.

Swift is a product distilled from years of experience. Eventually, it will replace Objective-C in many fields but today is not that day. So, for not causing embarrassing production failures and petty crashes, we stick to the good old Objective – C and limit Swift in laboratory experiments. At Mobven, we created an app development process to give a developer an area of freedom.

The development process is fairly simple. The code is written along with unit tests. Then a senior reviews it with the original writer. If everything is OK, the code is merged into the main branch(called dev). CI system builds, tests and publishes with Fabric and cycle end.

To keep cycle in motion, tools must be fixed and reliable. Here is the 5 essential dev tools by Mobven iOS team.

Git: Source control is an indispensable tool for an engineer. It prevents the “new folder (42)” situation. Also, it keeps developers to work on the same codebase. Git is designed to manage enormous codebases and it does its job flawlessly.

Jenkins CI: Jenkins lifts the heavyweight of the cycle. Firstly, it pulls the code, run tests, creates an IPA and distributes it. Secondly, it checks every pushed branch for code quality and code coverage. Many developers hate to write unit tests like documentation but it is the failsafe of an entire application. Preventing to introduce new bugs into codebase is a huge plus and time-saving feature.

Cocoapods: As a dependency manager, Cocoapods works like Ruby Gems. It just works and saves countless hours. We use it both our applications and frameworks internally and publicly.

Capture: In app development, creating bug scenario is a daunting task. With Capture, our QA teams easily point the faulty UI implementations and crash situations.

Momentum: This in-house framework enables us to recreate bug scenarios without any effort. QA teams also use it for automated process test.

In conclusion, there is no one true way to create a mobile application. With consistency and discipline, our team creates an exemplary work. Momentum and Capture are the products of it.


Caner Y. Tatar
Software Engineer