Rebuttal to Bangkok Post
Community Editorial
A recent article in the Bangkok Post commenced with:
My advice, if you are a developer and someone asks you to do something on the Mac, is to pretend not to hear them.
Unfortunately, someone who is not familiar with Cocoa or the Mac OS X development environment might read that and derive an understanding that the Mac is in some way an inferior development platform. Though the purpose of the original article is not clear (Is it a review? An editorial?), this editorial is a point-by-point rebuttal, written by visitors to iDevGames’ forum, aimed to clear any damage done to the image of Mac development.
Learning a New Environment Takes Time
In the first two paragraphs, the author admits to being new not only to development on the Mac platform, but to the Mac platform itself. I must ask: If he is as inexperienced with Mac programming as he says he is, why did he accept this assignment? An unfamiliar operating system, an unfamiliar programming language, an unfamiliar framework/API, an unfamiliar development environment, and yet an expectation that everything will look and act just the way another environment does? This is an unreasonable expectation. Differences in two environments are not flaws. It takes time to learn anything as sophisticated as the Macintosh operating system and the Macintosh development tools, and it shouldn’t be expected to be the same as a different product. Unwillingness to admit not knowing how to use it and take the time to learn it ends-not surprisingly-in confusion and unproductive work. Let me emphasize that switching platforms and entering a new professional development environment are not for amateurs.
As far as his problem with the Mac having but one button on its mouse, it is irrelevant. It’s a difference in the platform user experience, not the development tools. A two-button mouse can be used, probably the same one plugged into the original author’s PC right now. The Mac does not require a second mouse button, and for most users it is unnecessary. Those who desire one are free to use one.
The Tools
The author then continues to explain that while installation of Apple’s tools is a snap, obtaining them is not. Being over a 300MB download, this is true for many users, but there’s not much Apple can do about it. However, the development tools come on a CD with the latest release of Mac OS X; also, high speed connections to the Internet and CD burning hardware are commonplace today, so getting hold of the tools should not be difficult for most people—especially developers.
Apple’s developer tools are also free of charge, far more affordable than the Windows tools mentioned in the article. If Project Builder and Interface Builder are not desirable, there are other environments available for the Mac like CodeWarrior, JBuilder, and REALBasic, to name a few.
The author continues:
The latest C development interface is called Cocoa.
This is simply wrong. Cocoa is not “the latest C development environment,” it is based on Objective-C, which is a different language with some very large differences from C. This is clearly explained in the introductory developer documentation, which includes a complete book on Objective-C.
Both the description of using “a typical development environment“ and Apple’s development environment are so horribly oversimplified that it’s difficult to criticize them. The best rebuttal I can think of is that the underlying differences between the environments are much greater than what the IDE looks like, and that the author could not leverage his experience with other tools as much as he would have liked. I seriously doubt he can build an interface in VB that works right on the first try (so add the build/test/edit/rebuild cycle onto that explanation as well) any more than I could sit down in front of Visual Studio, type in some Objective-C, build the equivalent of a nib file, and get a properly working application in a few minutes.
The author continues:
In a nutshell, so far this is the worst development environment I have ever had to use. The most unfortunate part of the Cocoa environment is that the higher-level pieces appear to be separate from the underlying bits, and the links between them are arcane and poorly documented.
The initial statement of this paragraph is quite unprofessional. The remainder reflects a flawed understanding of object-oriented design and, again, the incorrect assumption that Cocoa behaves exactly like other tools he has used just because it performs the same function.
Documentation and help
His complaints of incomplete documentation are valid; this is the largest and most persistent annoyance Apple developers have to put up with. However, one wonders if he is aware of the tightly-knit developer support community, from mailing lists run by Apple to sites like this one, where help is easy to find (assuming you don’t introduce yourself by declaring “this is the worst development environment I have ever had to use“). The article does mention that the author has sent emails to the Mac community and is awaiting a response. Perhaps before writing this article, he should have admitted that his confusion is his own fault, not Apple’s, and waited for replies to come in from those emails.
Conclusion
My advice, if you are a developer and someone asks you to do something on the Mac, is to take the time to look over the tool set and API, familiarize yourself with the basic concepts and how they differ from the rest of your experience, have an open mind about how to solve seemingly familiar problems, and generally behave like any competent programmer encountering an unexplored field of knowledge.
This editorial was written by the combined efforts of the following iDevGames community members: Mark Levin, sealfin, James David Ramsey, kjurtyl, and edited by Chris Burkhardt.
If you are interested in learning about Cocoa, iDevGames recommends the book ‘Cocoa Programming for Mac OS X’ by Aaron Hillegass.
rebuttal,to,bangkok,post