I’m primarily a web developer. Everything I build, whether it’s for work or for fun, is destined for the web. I love it, building stuff for the web has been a part of my life since I first cobbled together a Star Trek fan site in my tween years. But I’ve also wanted to broaden my horizons a bit beyond the web, and create something for another platform I love; the Mac.
I’ve dipped my toes into building desktop apps in Electron with my app Classic Calc, but I wasn’t all that fulfilled by building it. It was a good exercise, but it felt inauthentic, like I was cheating, so I lost interest. That was about a year-and-a-half ago.
After a few days of this, I decided to try my hand at building a basic app: a Markdown text editor. Over the course of a couple nights (and one or two lunch breaks), I built Scrib. Is it something I’d suggest using? Nope. But to be fair, I’d readily suggest it over CSS Shadow Tool, one of my first attempts at an interactive web app.
I pushed this project aside too. Unlike my Electron app though, I wasn’t unfulfilled or bored. I was overwhelmed. SwiftUI can be a finicky beast for seasoned developers, but I’d never written a line of it until recently so I was feeling totally lost. I felt stupid. The pride I felt in creating a functional Mac app was replaced with harsh self-critique. So I dove headfirst back into web development projects, my comfort zone.
So what did I learn that I can apply to my future endeavors to build a Mac app? Honestly, it’s something I already knew, but maybe I just needed to be reminded of: Start small, and don’t try to do everything at once.
I made a mistake trying to just immerse myself in everything Swift, but, as a result, I feel like I actually learned very little. What I should have done, and will do when I’m ready to dive back in, is start at step one. I know the fundamentals of programming, but that’s like trying to speak a language when you know the grammar but not the vocabulary. So I need to just forget about SwiftUI and building functional apps, and just start with the core language and get comfortable with that. Maybe write some command line tools and work my way up from there.
It’s definitely hard for me when learning something new to not immediately put myself down for not being good at it on my first go. It’s unrealistic, and unproductive, but for some reason it’s my natural inclination. The boot camp format mitigated that a bit, between the structured lessons and interacting with people who were in the same boat of having no idea what the frick we were doing.