1 Step is the app that genuinely got me into iOS engineering, which I built back in 2020. It was during the designing and development process that I started getting myself deep into the material and truly discovered my passion for coding and designing.
The idea came to me from a TED Talk held by Stephen Duneier. He would talk about his strategy to reach goals, which fundamentally is to make a goal trackable and easy to take tiny actions for. At the same time, I had this design concept to display goals as mountains and remember being hooked to the fascination combination.
Although I initially envisioned 1 Step to be a competitive app inside the App Store for people who are looking to achieve their goals through tracking, for which I surely came up short, it would teach me a lot of great lessons. Here are the main ones:
I have learned to start a larger project only if I am fully passionate about it. Over the whole development process of 1 Step, I was double-minded about how excited I honestly was for the goal-reaching strategy I was building. Only after publishing it to the App Store have I noticed I wouldn't even want to use it myself and realized: how could I market something at all if I am not fully passionate about it?
Moreover, I love working with other people in a team. For 1 Step, I have spent many, many hours doing all the work on my own. This is fine for smaller projects, but for projects that take more time, I now see little point in doing it alone.
Lastly, it was difficult but fun! I had a great time and got the opportunity to learn many things. I am keener to start something in the future than ever.
Things I learned (iOS Development)
Using the MVVM design pattern on the SwiftUI framework
Learning to write scalable code and structuring a large code base
Building user interfaces with AlignmentGuides, PreferenceKeys and custom Paths
Building and managing complex custom animations, gestures and overlays
Handling dynamic app icons, app appearances along with color themes and text localization
Working with the NSPersistentCloudKitContainer for CoreData with iCloud synchronization, synchronizing NSManagedObjectContext operations
Managing persistent user data with UserDefaults that are synched with CloudKit
Displaying repeating UserNotifications and handling the authentication logic
Running UnitTests for important algorithms
Integrating Firebase Analytics and Crashlytics
Working with StoreKit and managing user purchases
Publishing and managing the app with App Store Connect and TestFlight
Actively taking part in the StackOverflow community, answering and writing many questions
Things I learned (Design)
Planning and designing app user interfaces
Working with Sketch and creating working prototypes
Creating vector graphics, custom icons and rendering design mock ups
Researching user experience
Making and integrating tutorial gifs for new users