6 ms·
Great article. Swift is one of those rare opportunities where the barriers to entry are reset, and any dev willing to put in the effort can be rewarded. Feels l
by wiremine 12y ago
Great article. Swift is one of those rare opportunities where the barriers to entry are reset, and any dev willing to put in the effort can be rewarded. Feels like Java felt 17/18 years ago, but only much more accelerated. The big, BIG difference is you need to commit to a single platform, whereas Java ran/runs on Windows, Mac, Linux, etc.
Swift isn't a language that opens your mind like Lisp or Haskell, but it seems like it is a language that can reset a career.
- webwielder 12y agoYou mean "Java ran/runs poorly on Windows, Mac, Linux, etc.", right?
- _pmf_ 12y agoHaha, a snide jab at Java. How intriguingly novel!
- 72deluxe 12y agoYeah, but I remember in 1995 and afterwards where Java products popped up and applets appeared in every webpage, and it was truly slow, particularly for paupers still languishing with small amounts of RAM. Anyone remember JBuilder? Things have probably changed significantly from then, but I do remember it being slow. Compared to today's generation who get frustrated when a webpage doesn't appear within about 3 seconds, they would lose their mind if they were transported back to 1995 (with the general speed of everything being slower).
- interpol_p 12y agoI've been developing a mid-sized project in Swift since its release. And while the language feels new and interesting, the only thing that matters (and has remained largely the same) is the Cocoa touch API. One's career is built more on knowing the ins and outs of the significant collection of frameworks provided by Apple, not the language. The language can be used to explore new design patterns and implementations, but it's really the API that makes it capable. I think Swift is as much a barrier to entry as Objective-C (i.e., not a very big barrier). The hard part is knowing the APIs available, when to use them, how to use them, and how not to use them. That has not been reset with the release of Swift; in my experience with the language so far.
- eridius 12y agoThe next generation of Cocoa APIs will be developed with Swift in mind. Every Cocoa API today is developed for the features and limitations of Obj-C. And yes, for a number of years to come, APIs will still retain Obj-C compatibility. But we'll also start seeing Swift-only APIs (even if these are functionally equivalent to other Obj-C APIs), using design patterns that are appropriate for Swift instead of Obj-C. So yes, you do need to know the Cocoa APIs. That's extremely important for developing applications today. But the applications of tomorrow will be developed using APIs we don't have now, APIs that are based around idioms and design patterns that will be developed over the next year (or few years) as people explore Swift and figure out what they can do with it that's different from Obj-C. Apple will undoubtedly define many of the idioms and design patterns themselves. But there will be many that emerge from the community, from experiments that people do and open-source libraries they write.
- interpol_p 12y agoI agree that Swift will influence the development of future APIs, however I think my point that it will not reset careers still stands. I don't believe that languages influence API design very much — unless they are of a fundamentally different paradigm, which Swift is not. Most of the iOS concepts I see new developers struggle with are related to architectural decisions not informed by language design. For example, the biggest thing I see new iOS devs struggle with is reusable table/collection view cells: the concept of cells moving into a pool once scrolled off-screen and re-used was made for performance reasons, new developers often attach model state to their cells and end up with all sorts of bugs. This is not a language issue. APIs are where the majority of the learning is. For example, if you try Reactive Cocoa (or Swift RX), you are going to be thinking about your app design in a completely different way. Same thing applies to auto-layout, device trait collections, layer-backed view hierarchies, and so on. These concepts are not likely to be influenced by Swift, and these are the things that really matter. That said, I do see Swift eventually dropping message-passing-heavy APIs (NSNotificationCenter, target:selector patterns) in favour of more strongly typed APIs. But most developers should not find the transition jarring.
- n1ghtmare_ 12y ago
- frou_dh 12y agoBeing in on the ground floor of Swift doesn't confer the ability to ship good apps, which is the actual career-maker. The old hands of iOS/Mac development retain their advantage over the newcomer even if they ignore Swift until after it has settled down.
- scrollaway 12y agoTruly I wish Swift was cross platform, then I would commit myself to learning it and doing cool things with it. As it stands though, it's just another walled garden. Aren't developers tired of those yet? Even microsoft started opening up .NET a lot more. Who, in 2014, creates a new programming language and thinks it's a good idea to lock in the developers to Apple products? Maybe the language will be a revelation and it'll be implemented by volunteers on Linux and what not. But until then, what's the point? Tell me, iOS/OSX developers, why bother? I want to know why people think it's a good idea to learn Swift at this point (other than purely for technical curiosity which is great).
- interpol_p 12y ago> Tell me, iOS/OSX developers, why bother? Learning Swift really isn't a big deal. If you want to make something, then just make it. If you need to learn something that might not be permanently useful: so what? Really, the knowledge you learn when developing an app is not "wasted" because the language is proprietary. The important parts will relate to design and architecture, not implementation details such as language used. Once you are a competent programmer you don't really "learn" new languages, anyway. You just jump in and use them, then look up reference when you get stuck. It's a trivial thing in the scope of building an application or a game. > Maybe the language will be a revelation and it'll be implemented by volunteers on Linux and what not. But until then, what's the point? What's the point of developing in Objective-C? For practical purposes it is a proprietary language. Yet it is used by many people and used successfully. The point is to build something that will be used. Your argument applies equally to many successful languages and development environments. I don't think Swift should really bother you, considering what it is designed to replace.
- IanCal 12y ago> Learning Swift really isn't a big deal. Often I feel that learning a new language is more like learning a local dialect or slang than a truly new language. Some languages are very different, but I'd wager that if you're looking to learn swift you've probably worked with another very similar language before. Sure there'll be some stumbling blocks, but you can get to a point of "this works, but probably isn't the best or fastest way for this language" fairly quickly by trying things and copy-pasting errors into google. > If you need to learn something that might not be permanently useful: so what? Indeed, and unless it's a really poor language you'll probably take something useful away from it. Maybe it'll be a language-feature that saves a lot of boilerplate that makes you wonder if you can implement in your own favourite language. Maybe it'll be an awesome package manager or module structure. Maybe it'll just be fun or make you think more about how different approaches work for different situations.
- SeanLuke 12y ago> Feels like Java felt 17/18 years ago, but only much more accelerated. The article mentions that Swift wasn't tested by building a nontrivial application prior to release. It's worth mentioning that Java was tested this way: Sun built HotJava.
- gurkendoktor 12y agoMost of my iOS client projects are dumb wrappers around a JSON API. Even with the most mind-blowing language in the world, I would still be worrying about session timeouts, client-side persistence and navigating a tree of view controllers. I don't understand why people get so excited about Swift while the APIs we need to build actual apps only grow more and more bloaty.
- nailer 12y agoIt's better than that. Java 17/18 years ago was still not designed compared to similar languages of the time - particularly Python 1. Swift, on day 0, is a typed language that requires far less token noise than Java did on day 0 (and still does today).