Preface
I started as an iOS developer in 2011. I loved to make iPhone apps and still do to this day. Besides doing mobile development work, I also was involved in some web development while learning Ruby. I loved the short powerful language, and wished I could use a compile-time language like Objective-C, but with the elegance and expressive nature of Ruby.
Then Apple introduced Swift, and it seems like they listened. Swift was a fresh take on programming for me, combining the elegance of a dynamic language with the speed and safety of a static language. I never liked the Objective-C syntax. I used to say things like “Yeah, Objective-C is verbose, but it gets the job done.” But with Swift, however, I find reading and writing code very pleasing again, like I did with Ruby. I could finally use a static language and keep producing work while loving the language I’m working with. It was a good combination for me.
However, it wasn’t love at first sight. Before I truly enjoyed Swift, I struggled a lot with it. Swift looks very friendly, but boy, was it tough sometimes. Everything needs to be safe at compile-time, and I could not mix and match types in arrays anymore. Meanwhile, Swift was only an early version and kept changing; it was hard to keep up. “What are generators? Oh, they are called iterators now? And why use guard? Can’t we use an if statement instead? Pfft, optionals are overrated; we can use simple nil checks?”, and so on. I wouldn’t even consider working with generics.