Navigating the Challenges of Developing My First macOS App
Written on
Chapter 1: Introduction to My macOS App Journey
This is the third installment in my series documenting the creation of my first macOS application, which aims to simplify the process of taking screenshots and attaching them to Asana tickets seamlessly. In the initial part, I addressed how to capture global keyboard inputs to activate the screenshot function. The second part, which I initially intended as a standalone piece but felt more appropriate as part of this series, demonstrated how to programmatically capture a screenshot using Swift. In this section, my focus shifts to the final challenge: authenticating with Asana, a process that has not unfolded as smoothly as I had hoped.
This paragraph will result in an indented block of text, typically used for quoting other text.
Section 1.1: The Reality of Learning
An interesting observation I’ve made regarding many tutorials and videos is that they often present a polished final product. Creators frequently go through numerous iterations, edits, and trials before arriving at their ultimate presentation. While this polished approach can enhance the learning experience in certain aspects, it can also obscure the struggles that accompany the journey to completion. When I was learning new concepts, I found it incredibly frustrating that the videos I watched made everything seem effortless. It often felt discouraging—how could I ever achieve the same level of competence without facing significant challenges? There were moments when I considered giving up entirely due to these hurdles.
Let me share, dear reader, that the delay in this series' usual pace was largely due to my struggle with Asana's OAuth2 implementation in Swift.
Section 1.2: A Journey of Failure
I am not a seasoned Swift/iOS/macOS developer, so it’s entirely plausible that my challenges stem from my own inexperience. However, despite reaching out for help—whether through StackOverflow, ChatGPT, or the official Asana and Swift documentation—I found myself at an impasse. I’ve successfully implemented OAuth in web applications before, yet this time, I could not make it work. And you know what? That’s perfectly okay. After three days of relentless troubleshooting, I decided it was time to pivot.
Perhaps this is the overarching theme of my experience: it’s acceptable to change direction, explore new avenues, and acknowledge failure. Many developers can relate to the myriad errors, dead ends, and confusing messages that arise during the development process. It’s important to remember that not everything needs to be flawless or ready for public display. I have accumulated a staggering number of unfinished projects—77 on GitHub alone—and that doesn't account for the countless others in my workspace folder. Each of these projects has played a crucial role in my growth as a developer.
Chapter 2: Embracing Imperfection
In this next video, titled "How to build a macOS app for beginners (2023, Swift, SwiftUI, Xcode 15)," viewers will gain insights into the development process tailored for newcomers to macOS app development.
Another helpful resource is the video, "Build first macOS App in just 5 minutes Xcode, Swift," which provides a quick and straightforward tutorial for aspiring developers.
So, if you're venturing into something new, be kind to yourself. Embrace the learning process, allow for mistakes, and don’t hesitate to abandon ideas that aren’t fruitful. It’s perfectly acceptable to leave projects unfinished, just as it's normal to take time to master skills like walking or reading. Your journey has been a lifetime in the making, and where you stand today is nothing short of remarkable.
With that, I conclude this reflection. I didn’t anticipate venturing down this path when I began writing, but I’m grateful for the opportunity to express these thoughts. Be sure to check out part 3b for the actual code that addresses the obstacles I faced—specifically the Asana authentication through OAuth2.