Makwan Barzan
Makwan's Blog


Makwan's Blog

Things I'm Glad I Learned During My iOS Development Journey

Photo by Maxwell Nelson on Unsplash

Things I'm Glad I Learned During My iOS Development Journey

Makwan Barzan's photo
Makwan Barzan
·May 1, 2023·

4 min read

Play this article

Table of contents

Life is full of excitement and surprises, so does whatever journey you're in. During my iOS development journey, I have learned so much exciting stuff that I am always glad to get to know them. So, I would like to share them with you.

It doesn't matter whether you're an iOS developer or not. I hope you can find this article handy and motivational somehow since it will contain some general phases.

Let's get into the topic by mentioning each of them. 🚀

Quality always matters

It doesn't matter if you're in a rush or not. You must always write high-quality code. You shouldn't even care about harsh deadlines for that. By saying it, I mean to follow architectures, design patterns, and clean code. You'll eventually realise that you have done yourself a favour!

Writing tests isn't optional

The best favour you do with your users is to deliver them a bug-free product, regardless if it's a side-project or a client project. By writing unit tests, you'll ensure that. Thus, writing tests seem like a mandatory rather than an option.

Environment strategies should always be considerable

Before getting my first development job, I had no idea about environment strategies or what is project environment. Now I know how stupid I was. If you want to deploy new versions of your products properly, you should follow deployment strategies. For more, please refer to this source.

Third-parties are your enemies

When I was a junior, I was obsessed with adding a variety of third-party libraries into my projects and relying on them (I revealed another stupidity of mine, I know). It's clear that they could save you so much time, but you should keep them as little as possible and be careful with what you're about to rely on. They might have major changes in the future. Nevertheless, you'll be forced to obey whatever design pattern they're using, and that's not in your favour.

Learning source control is a mandatory

As soon as you join a software development team, you probably get to deal with source control to manage the project that you'll work on. For that, you must be familiar with at least one source control, and that might be the Git source control. It really doesn't matter whether you want to depend on GUI-based software or the terminal.

To get started with the Git source control, head over to this source.

Don't try to learn everything

Instead of trying to learn everything, master what you know. Otherwise, you basically waste your time. For instance, if you're an iOS developer and want to learn every single framework, such as UIKit and ARKit, you must master UIKit first. Then, you can move forward with whatever else you want to learn next.

You may never or not constantly need every framework. Learn them when you need them.

Time for the iOS-specific ones. 🪄

Programmatic UI building over Storyboard

I don't blame you if Storyboard looks promising. But it really is not. It's easy to use at first. But when your views are getting more complex, it's a hell of a job to modify one single element. On the other hand, programmatic UIs are straightforward to modify. However, it might take some time to get used to it at first.

Breakpoints are saving your day

If I mention one magical Xcode feature, it'll be Breakpoints. Junior and even intermediate iOS developers might mainly rely upon print methods for debugging purposes. Well, to save yourself so much precious time, Breakpoints have your back. The main purposes of Breakpoints are for seeing whether a specific line is being triggered or for seeing its values. If you double-click on them, you'll notice that you can do way too much more with them!

Make Swift Package Manager your main package manager source

Before introducing Swift Package Manager by Apple for adding third-party libraries into Xcode projects, we had to deal with either Carthage or CocoaPods package managers. Still, there are remaining libraries that don't support Swift Package Manager. But instead of using Carthage or CocoaPods for them, I would rather suggest injecting the libraries manually through XCFramework.

Keep your derived data clean

If you're an iOS developer, you know what kind of pain the derived data might cause. I usually clean my Xcode's derived data right before the weekend starts, so I can freshly get back to work. I would suggest you do the same.


For a better career experience, consider writing quality code, writing tests, following environment strategies, avoiding using too many libraries, learning source control, and learning things when you need them.

For iOS developers; depend on building UIs programmatically instead of Storyboard, use Breakpoints instead of print methods, mainly depend on Swift Package manager, and keep your derived data clean.

Enjoy coding and may your journey be filled with awesome surprises too. ✨

Share this