How and why I built iOS Bootstrapping Framework
About me
I am a passionate mobile app engineer with an AAS degree in Software Engineering. I have 5 years of experience working with everything from start ups to enterprise level software.
The problem I wanted to solve
During my time working with all these startups, I was frustrated with the amount of time that it took to bootstrap projects with all the necessary components. Frequently used components are API/Networking Wrappers, Local Storage, Keychain Storage, Cacheing, Apple Pay, In App Purchases, Localization, etc. Those that frequently create mobile projects from scratch will recognize that these are time consuming tasks that often end up being similar to other projects they've worked on with only minor differences between.
What is iOS Bootstrapping Framework?
I built my own custom framework that bootstraps all these frequently used components into one library. It is capable of condensing lengthy files into short concise code snippets so that your code can focus on what matters which is often making money. Local Storage, for example, goes from being a 20 line snippet of code to a ONE LINER to either retrieve something or store something. I like to think of this framework as something that gives you the ability to focus on the logic of your business and worry less about the minute details of how to, for example, initiate an apple pay request.
Another thing that the framework does is provide lots of extensions to classes that you already use. An extension to the UIImageView class, for example, allows you to cache an image from a URL and display it in ONE LINE of code and never have to fetch it again on other image views until you want to. These extensions also provide handy IBInspectables that allow you to add things like corner radiuses and borders to your views all within the storyboard without every having to write any code.
Tech stack
The tech stack was written entirely using Swift.
The process of building iOS Bootstrapping Framework
It took me a long time to get to a point where the framework was as robust as it is. It has taken me 3+ years to refine it to what it is today. Anytime I build a new project and come across something that I could use again in another application, I stop and add it to this framework. I take the extra time to build it in a way that is is SUPER simple to use. We've all used a framework or third party library before that is more of a headache to use than writing it yourself. I wanted this particular framework to be so easy to use that you wonder how it's even possible to do something so complicated in a line of code or in a simple subclass.
Challenges I faced
The main challenge I faced was my coworkers adopting the framework and giving me their constructive feedback. They knew how intuitive I wanted this framework to be and made sure to let me know when I could make something easier or more feature rich.
Key learnings
I have learned so much about the iOS ecosystem throughout the time that I've been building this. This sort of goes along with everything else I've said in this post, but I've also learned how to quickly bootstrap new projects for companies in a way that gets them to the finish line as fast as possible. After all, that's why they hired me, right?
Tips and advice
My advice to everyone is to build your own framework! To be completely honest with you, this repository of code has been an extremely valuable asset for me when interviewing for jobs. I often tell employers that I not only come with a lot of experience, but I also come with a lot of pre written code that can get the project live faster than any one developer could from scratch. After all, this is what I'm passionate about - helping companies get off the ground as fast as possible!
Final thoughts and next steps
One day, I hope to publish my framework publicly. For now, it is still a work in progress. I'm very critical of my own work and a bit of a perfectionist. I want to make sure it is ready to be adopted by all sorts of projects and is flexible enough to work in all of them. It's close and I will be sure to notify everyone when I do release it. In the mean time, I encourage everyone to build their own. It's something to be passionate and excited about and like I mentioned earlier, a huge bargaining assets when looking for jobs, especially for prospective junior devs. Happy coding, everyone!