(UPDATE: My opinion has changed)
So, every so often, when I’m not busy making production apps for clients that have to work, be reliable, be easy to read, be easy to extend, be easy to debug, and so on, I have a look at Swift. I know I’m admitting something that perhaps one best not admit; I don’t use Swift yet, really. I haven’t fully embraced it. And I’ll tell you why.
I’m a creative developer. Also, I live in Germany. I therefore hate bureaucracy. There’s a connection. Germany for me has at times been a near death experience…. death by 1000 paper cuts. With Objective-C, and all those Cocoa Frameworks, I know these tools very well. As a creative developer, I am as interested in the beauty of the project on the outside as I am with the beauty of it on the inside. I would reckon I’m pretty good at writing Objective-C code. Obviously because of experience and a commitment to quality.
I understand there’s a learning curve with anything new. I get that. I clash with Swift when I have a creative idea and I just want to build the thing I want to try out. App development is a strange voodoo; you can have a good idea on paper, then once it’s in your hand and you interact with it, it makes that idea perhaps less awesome or less useful than you thought. So, the ability to do rapid prototyping is of great interest to me.
Enter the strictness of Swift and its compiler. For me it’s like going to any German ministry to get something done. You turn up with your form (well, forms) with the hope of getting it stamped and approved today. They turn you away for some reason. It’s always some reason. Sometimes they invent reasons because they don’t like the look of you. The civil servants don’t think creatively nor solution-oriented. You can’t ask for help. You only have to state what function you would like them to carry out today. The number of times they give you that stare as if to say “Invalid input. Invalid input. Invalid input.” and you expect smoke to start billowing out their ears at any second. Similarly, the Swift compiler annoys the hell out of me because the error messages are still kind of cryptic, not always referring to the actual error and potential solution to the problem (comparing to Objective-C here… which also loses its way from time to time). Basically “sorry, can’t do it. Go bother someone else.”
No, I’m a free spirit. I like the dynamic nature of Objective-C. I like being able to say “I know this is bending the rules a bit, but please just do it, because I know what I’m doing here.” and the compiler will do it. Maybe your code crashes at runtime, but maybe not. In the end, experience will often have a strong say here.
Say I actually did get my Swift code running. I’m not an early adopter. I’m just not. With any software product, I prefer to sit back and wait, let them iron all the kinks out, then I’ll be interested. I have too many other hobbies and interests that also take my time, so to want to update my old, running code, because now the language itself has changed and is no longer compatible and I am forced to update it, just so it will run, does not sound like a desirable use of my time.
Then I hear just around 10% of apps in the app store actually have Swift code in them. People make it seem like if you can’t code in Swift you are massively behind the times and are unemployable because it’s *all Swift* now….
I don’t know, for all these reasons, I still sit back and wait. I try to keep up on the language in general, but for me I’d just like to say “sort yourselves out, and let us know when it’s ready for general consumption, because right now I don’t like make-work projects. I just want to build great things, quickly.” Sitting in front of a cryptic compiler error message because of typing or unwind errors is not my idea of swiftly creating anything at all.