Sometimes I hate being a programmer

There are two things that make me hate being a programmer.

Too many ideas, not enough time

I hate being a programmer when I have an idea for an app (or any sort of code) but no time to write it. I’ve written before about my dream app, but it kills me that I don’t have enough time to write it. There’s a particular version of solitaire that I really love playing that is devilishly difficult and really interesting, but the app is totally buggy and it drives me nuts. I could rewrite it, because the logic of Solitaire isn’t that difficult, but I don’t have enough time. I want to write a Mac app for browsing and posting on the Swift forums. I want to write a better version of the system Keychain Access app. I think the Wallet app on iOS desperately needs me to rewrite it. I have about half a dozen ideas for apps around tooling and supplementing the developer experience.

And I don’t have time to write them.

This kills me. It makes me hate being a programmer because I feel like I never have time to write the things I want to write.

I have to write this again?

I hate being a programmer when I’m faced with the prospect of writing some code that just isn’t interesting to write. Or, maybe it’s interesting, but I also am aware of how huge the problem space is. My classic example of this is local persistence. The sheer drudgery of writing a persistence layer for your data model is positively soul-sucking. Throw in syncing over a network and offline mode and you’re staring down the barrel of implementing vector clocks and CRDTs and crazy logic to resume stuff on app launch and why am I in this profession again?

But.

But then.

Sometimes you write some code that just takes your breath away. You write something so profoundly elegant that you wonder how you could ever write any code better than this ever again. And then it’s worth it.


Related️️ Posts️

The Laws of Core Data
A Better MVC, Part 5: An Evolution
Swift Protocols Wishlist
Simplifying Swift framework development
Reading your own entitlements
Misusing enums
Level up your debugging skills
A Better MVC, Part 4: Future Directions
A Better MVC, Part 3: Fixing Massive View Controller
A Better MVC, Part 2: Fixing Encapsulation
A Better MVC, Part 1: The Problems
Edit distance and edit steps