I’m devoting this week’s edition of the WIR to a single news item. Sometimes something gets stuck in my craw, and I have to cough it out or choke on it (hopefully none of you are reading this over lunch …).
Yet another attempt to create programming for dummies …
Just today, I came across a news article discussing a recent Apple patent application for a technology to allow “non-programmers” to create iOS applications.
This seems to be the holy grail of software design, to get those pesky overpaid software developers out of the loop and let end-users create their own software. I’ll return to the particulars of the Apple application in a moment, but first I want to discuss the more general myth, because it is a myth, that there’s some magic bullet that could let lay people create applications.
The underlying misunderstanding is that it is something technical that is standing between “Joe Sixpack” and the software of his dreams. The line of reasoning goes that because languages are hard to understand and require specialized knowledge, there’s a heavy learning curve before a new person could be productive. In reality, the particulars of a specific platform are largely irrelevant to whether a skilled software engineer can be productive in it, though there are certainly languages and operating systems that are easier to code for than others. But the real difference between a productive engineer and a slow one lies in how good the engineer is at thinking about software, not C or Java or VB.
Almost without exception, any software engineer I talk to thinks it’s insane when an employer would rather hire someone with two years total experience, all of it in a specific language, rather than one with 10 years experience in a variety of languages, all other factors being equal. When I think about a problem, I don’t think in Java or Objective-C, I think in algorithms and data structures. Then, once I understand it, I implement it in whatever language is appropriate.
I believe that a lot of the attitude one sees toward software engineering — that it’s an “easy” profession that “anyone” could do if it weren’t for the “obfuscated” technology — comes from the fact that it’s a relatively well-paid profession that doesn’t require a post-graduate degree. I match or out-earn most people slaving away with doctorates in the sciences, yet I only have a lowly bachelors, and not even a BS. “Clearly,” we must be making things artificially hard so we can preserve our fat incomes.
In a sense, they are right, in that it doesn’t take huge amounts of book learning to be a great programmer. What it takes is an innate sense of how to break apart problems and see the issues and pitfalls that might reach out to bite you. It also takes a certain logical bent of mind that allows you to get to the root of the invariable problems that are going to occur.
Really good software engineers are like great musicians. They have practiced their craft, because nothing comes for free, but they also have a spark of something great inside them to begin with that makes them special. And the analogy is especially apt because while there are always tools being created to make it easier for “anyone” to create music, it still takes a special talent to make great music.
Which brings us back to Apple’s patent. Like most DWIM (do what I mean) technologies for programming, it handles a very specific and fairly trivial set of applications, mainly designed for things like promoting a restaurant. No one is going to be writing “Angry Birds” using it. Calling it a tool to let anyone program is like saying that Dreamweaver lets anyone create a complex ecommerce site integrated into a back-end inventory management system.
The world is always going to need skilled software engineers, at least until we create artificial intelligences capable of developing their own software based on vague end-user requirements. So, we’re good to go for at least the next 10 years.
Please send tips and leads here.