Once upon a time, iOS development tools were fairly simple and static. Objective C was a mature language that was founded on good old C. Cocoapods was only accepted as, 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 was 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 the old Eclipse experience), buggy syntax highlighter (sorry not buggy, not working), and sleeplessness, 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, to not cause 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 review 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 working 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 introducing new bugs into the 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 both our applications and frameworks internally and publicly.
Capture: In in-app development, creating a bug scenario is a daunting task. With Capture, our QA teams easily point the faulty UI implementations and crash situations.