I’ve written an app is Swift, but I couldn’t claim to be much more than an advanced beginner. The question is though, “how much Swift do I need to understand to write good apps?” Secondarily, “how much Swift do I need to understand to get a job as a Swift developer?” These sound similar, but they are definitely two different things.
A Good App
I made a decent app (Triglotta 2) with my advanced beginner skills. It’s pretty basic and although there is some complex text processing a deep knowledge of Swift wasn’t needed. That being said, there is probably code that is not very idiomatic and considering the code base started from Swift 1.0, I’m sure there are unwrapped variables and control flows that look wrong if not problematic.
To make a good app, meaning robust, flexible, and extensible will take a deeper understanding of Swift. Table Talk Quiz should push me a great deal in that direction. My vision is to have the quiz portion be the foundation for multiple apps going forward and to be that foundation I want the code to be good. So to make a good app I have some idea about where I need to increase my skills.
A Swift Job
Now to get a job as a Swift developer, that’s another story. If you look at something like these swift interview questions there are concepts that, while technically useful, aren’t great predictors of whether someone who would be good at developing apps for your team. This makes me recall the Java interviewers that always asked about double checked locking and pass by value vs pass by reference. I’ve seen a bunch of production code that has the double checked locking problem, but in practice I’ve never seen an error caused by it. I’ve also never seen a problem arise because of pass by value vs pass by reference confusion. Nobody I know tries to write code that complicated or tricky.
Where does that leave my thinking with Swift? I’m not sure how much I’m going to need to use functions and closures as arguments. I probably should know that they can. What about mapping and filtering? How deeply should I understand them? Once again, I’m not sure how much the type of apps I’m going to write will need them. Will that mean I couldn’t find a job as a Swift developer? I think it will depend on what the company and the role values. If they want someone who has a solid grasp of the fundamentals and can ship software then I think I can get to that point. If they want someone who has an intimate knowledge of the language and how to get the most out of it, I doubt I will get to that point. The types of apps that I conceptualize don’t require that depth of language knowledge and I need to make the decision to prioritize an understanding of Swift that will help me ship apps as opposed to understand the language.