This post is a reply to Jason Brennan’s post “Objective: Next.” Jason reiterates that programming environment for the iOS is very limited in both language and standard library capabilities, outlines some concrete issues he sees as problematic and calls to liberate programming from textual style. My opinion on that is that this is (a) impossible in the near future, and (b) harmful.

There was a lot said and written about how iOS, Objective-C and Xcode programming ecosystem is, basically, inadequate. The language still maintains most of the basics inherited from early eighties despite all later advances in programming languages design, thus causing frustration of programmers familiar with more friendly and open programming environments. But it’s hard to argue with popularity. Mobile is very attractive for even the best hackers (and businesses), and all those very smart people try to find their ways around the limitations of the technology.

In itself, this is not so much of a problem. Much more problematic is the situation when smart people start extrapolating day-to-day problems with their very narrow, closed and restrictive environment to a programming profession as a whole. Bret Victor quoted in the post (absolutely out of context, in my opinion) probably due to his experience and breadth of worldview manages to avoid this mistake. A common vein in his work has nothing to do with programming per se, but addresses abstractions of any kind: those of mathematics, electrical engineering, animation, etc. His recurring point is that computers can help us expressing our thoughts in more coherent and effective manner, thus being better tools for thought.

One may argue here that developing software is just another type of intellectual activity and therefore can benefit from using better abstractions in the process of programming. I mostly agree with this point, but it’s clear that intellectual leverage offered by any abstractions of this sort would only be valid in a very limited context. To underline this limitation, I’ll use this example. Some of my UI designer friends see very little special in Bret’s presentations and videos. For them, it boils down to the “immediacy of response”, a concept know to everyone in the UI world. It postulates that the result of each action should be immediately obvious for the user, even if the outcome of the requested action is delayed. This is why LED lights in control buttons of your washing machine turn on immediately after you press them, or a “Logging on” spinner is shown after you type your username and password on a web site.

When taken in a simple context of washing machines, this approach makes a lot of sense. It can even be expanded to some basics of programming. There are tools that show you contextual information about the code and the project: see touch operations with code in Codea, for example, or the way left-hand side ruler works in some tools from JetBrains. The daily minutae of iOS development, like updating a font size or not seeing the color when it’s typed in hexadecimal all fall into this category (funny enough, the developer-designer interaction was quoted as a problematic point, but team work is one of the reasons why programming languages are textual.)

It’s scaling those abstractions to the world outside of iOS that will break them. Unifying the process of development of a website, an OS kernel, a real-time software that handles 911 calls, and an iPhone app is a task bordering on impossible.

As I said above, you can’t argue with popularity. It’s normal to ask for better tooling, like Jason does, despite talking about avoiding instrumental thinking, but given the sheer number of young programmers starting their careers as developers on the iOS platform, it’s very dangerous to redefine programming on iOS in such a narrow sense. We don’t want all those young programmers becoming incapable of development anywhere outside of Xcode, or scared of moving past Xcode.

Because it’s when you see how wide the whole spectrum of the programming profession is, you can get truly scared.