And The Awarding Goes To
October 26th, 2009What distinguishes developers on the Mac from those who design for other platforms such as Windows and Linux? We often answer the question with a flip response that makes us feel good about ourselves:
- Mac developers are perfectionists.
- Mac developers are community-oriented.
- Mac developers are not obsessed with the bottom line.
- Mac developers are passionate.
But admit it: these characteristics are common to developers on all platforms. So why do Mac developers consistently produce the most refined, friendly, user-empowering, beautiful software on the planet? (My opinion only! You’re welcome to yours). I believe that excellence is achieved by these passionate, community-oriented perfectionists who are not obsessed with the bottom line, and that the Mac ecosystem supports these four characteristics in a more balanced manner than any other platform.
The Four Characteristics
How do these characteristics help to propel a developer towards success? What does it mean to exude these qualities, and how do they concretely impact one’s ability to produce excellent software?
Perfectionism is commonly considered to be a fault, and in excess it can certainly be one. For the purposes of this discussion I consider perfectionism to describe the quality in a developer that drives her to always go “one step further” with the elegance of a solution. One step further than what? Than an average peer would expect of her. By consistently exceeding expectations, even by a small amount, a software perfectionist goes a long way towards producing those “this is freaking amazing!” reactions among users, and helps to raise the expectations bar among peers ever higher.
Community-orientation describes the extent to which developers choose not to work inside a vacuum. A platform whose developers share ideas, code, criticism, and praise over social networking technologies, mailing lists, and blogs like this, is a stronger community. Each participant gains access to a percentage of the other members’ experience and equipment, producing a multiplier effect on productivity and the consensus standard of excellence.
A developer who is not obsessed with the bottom line clings to a non-monetary motivation as the primary reason for his work. Whether that motivation is to create software that is beautiful in appearance, smaller in code size, or more shareable among community members, the lack of financial obsession will permit him to travel further down that path than he otherwise would. Developers who are obsessed with the bottom line understand that in identifying and filling a specific need among users, they reap the maximum return on their development investment, without wasting resources on frivolous refinements.
Given the obsession with financial return by society at large, a developer who chooses perfectionism, community, and the pursuit of excellence for its own sake would be judged a fool by many. Prioritization of these values over cold hard hash is such an uphill battle in society, that only a person who is incredibly passionate about what they do is likely to overcome the forces that fight against it. Passion drives individual developers to continue bucking the trend, and to carry on relentlessly towards the idealistic goals of the community as a whole.
Bringing It All Together
To reiterate my point: I believe that the Mac platform rewards for these characteristics in a more balanced manner than any other platform. Which is not to say that Mac developers have the “best” of these characteristics. On the contrary, we have lucked into a scenario where we have the most pragmatic proportions of each, which sometimes means more, and sometimes means less.
Now we come to the part of the article where I offend everybody, by offering my painfully stereotypical views of the three major platforms: Linux, Windows, and Mac OS X. Look, I realize I’m generalizing, but try to find the kernel of truth in what I’m offering. Sure, I’m talking out of my ass, but maybe it has something interesting to say.
Take Linux, for example. Developers on this platform are undeniably passionate, community-oriented, and intensely unobsessed with the bottom line. But this is not enough to produce excellent software. Possibly because perfectionism (at least in user-facing interfaces) has never become a priority among Linux developers, their solutions are inevitably disappointing to those of us who have grown to appreciate the usability of the Mac. But their passionate rebuke of the bottom line has nonetheless allowed them to advance their priority for intensely shareable and well-optimized low-level code.
Windows developers are most likely to recognize a market opportunity and to run towards that goal, producing software that is imperfect but which meets the letter of user requirements. It’s uncommon for Windows users to celebrate a perfectionist nuance of some application, because applying those refinements takes valuable development time and doesn’t obviously advance towards the goal of a marketable product. Because this standard of excellence has been maintained at a relatively low level over the years, Windows users on the whole are not even aware that there exists a higher standard to be met.
So what makes the Mac so freaking special? We’re a small enough group that community cohesion is practically fulfilled by default. If you spend a few years in the Mac developer community, there’s a good chance you’ll meet everybody else who cares to meet everybody else. Because of this strong community bond, we have a situation where this mythical expectations bar is not only being constantly raised, but everybody in the community can see that it’s so, and encourages one another to push it still higher.
Because we are not obsessed with the bottom line, we can pursue our quaint preference for usability and beautiful design, without the constant fear of “missing an easy sell.” We restrict features for the good of the product, even when adding them might prove financially rewarding in the short term. But we are not unconscious of the financial implications of our products. We understand that in order to continue propelling ourselves down this path towards software Shangri-La, we need to earn enough money to keep our enterprises going. We embrace the techniques of earning money as a means to further the primary goal of producing excellent software.
Because the allure of the market has us constantly considering the financial rewards, it would be easy to lose track of our sights and become obsessed with the cash. But passion in the community has remained so strong, that we tend to remain fixated on excellence and pragmatically curious about the cash. Because the user base that has evolved over time on the Mac does acknowledge this excellence, we’re more likely to continue making a reasonable income even as we deprioritize that as the main goal.
Patting Ourselves On The Back
We feel so good about our lofty development ideals, that we spend a lot of time kicking back and reflecting on what a great job we’re doing. Some of us even write lengthy blog posts sycophantically congratulating ourselves on a collective “job well done.” Jerks.
In spite of our skillful self-adulation, we also appreciate and seek the opportunity to be rewarded with admiration from presumably unbiased groups. That is to say, we’re interested in awards.
In the Mac developer world the most prestigious awards are the Apple Design Award and the Macworld “Editor’s Choice Awards”, or Eddys. Outside of these two major commendations, there is little structured limelight for developers who are pursuing excellence. Understandably, it is a great honor to receive one of these awards, but given the relatively small number of developers who are recognized each year, most developers are unlikely to ever receive one.
Sensing the thirst for additional developer recognition, Michael McCracken proposes a community run version of the Apple Design Awards, where developers would themselves determine and dole out rewards for what we respect most among our peers. A major rationale is to remove Apple’s bias for applications that make most use of the technologies that Apple is pushing, and this seems like a laudable goal. Of course, Macworld’s Eddys are already fulfilling this to some extent, and the “Reader’s Choice Awards” that they also hand out do a good job of capturing the priorities of the customer base.
But what Michael is proposing would be something akin to what the Academy Awards provide to professionals in the film industry: the opportunity to judge and be judged for excellence by your peers. The people who really get what you’re trying to go for, and whether you’ve achieved it.
I think it’s an interesting idea, and I have to admit I take some comfort in the idea of receiving awards. I was lucky enough to win an Eddy award for MarsEdit a few years ago, and it was a major motivator and all-around good feeling. I respect people like Jason Fried of 37signals, who rejects the value of awards in the software and web industry. From the 37signals web site:
37signals does not enter award competitions. We believe that the self-congratulating awards “scene” encourages agencies to misplace their priorities on the opinions of their peers, rather than the needs of clients and their customers.
I can relate to this sentiment, and I have seen some developers have their priorities apparently hijacked by efforts to meet the criteria, for instance, of an Apple Design Award. I recall chatting with Manton Reece on Core Intuition (probably Episode 18: Who Will Be The Lead Singer) about the design awards, where I consoled myself about failing to win the coveted Apple award. I spoke of how gratifying it is simply to get positive feedback from customers in the form of friendly email notes, or yes, the welcome act of purchasing. These small but recurring motivational rewards, I dubbed the “Customer Design Awards.” It’s probably worth reminding ourselves that these are in fact the most important awards of all, but anything new that comes with a cute statue or plaque would still be welcomed!
October 26th, 2009 at 5:18 pm
I was definitely thinking about the Academy Awards.
I also suspect that the web-app awards “scene” Jason Fried mentioned arose from a pretty different community than the OS X desktop app scene, and I trust OS X developers not to change the way they write apps because of an award…
October 26th, 2009 at 5:26 pm
Oh, and I thought of another category I’d love but you’d never see at the ADA:
“Best improvement on abandoned built-in functionality”.
October 26th, 2009 at 5:59 pm
As someone learning both Cocoa and C# I can give you another reason Mac apps look better, work better, and make Mac developers look better: Interface Builder beats the snot out of the Windows Forms Designer in Visual Studio. While the Visual Studio IDE’s text editor tends to steal XCode’s text editors lunch money every day the GUI designer isn’t even as good as what REALBasic had back in the 1.x days. It is easy to make an app look good in Interface Builder but it is a challenge to make something that doesn’t look like a dead hamster after it has been mauled by a cat (or perhaps a Snow Leopard) in the Windows Forms Designer. Also Microsoft doesn’t provide nearly as many useful drag and drop standardized components as Apple does. Want an Edit Menu with the standard Copy, Paste, Cut, Delete, and Select All functionality? From what I have seen you have to implement it on your own (or get it from a third party).
October 26th, 2009 at 6:07 pm
I value customer feedback, both of praise and of constructive criticism, above all else. I can’t directly quantify this, but I believe that this does help to result in a positive feedback loop that leads to increased sales.
Sometimes I’ll have a slow sales period, and get a bit discouraged. But, at some point, I’ll get an e-mail from a customer with a question, a comment, a suggestion, or something like that. When I’m able to make things better for the customer and they let me know–or, more rarely, they let me know right off the bat that they’re happy and they really like my software–that’s a strong shot in the arm. It tells me that the work I do is valuable for others, and staying with it is the best thing to do.
October 26th, 2009 at 6:36 pm
@Twist –
While I agree with your sentiment that its easier to create visually appealing interfaces using Interface Builder vs Visual Studio, I’d submit your comparison is flawed. If you are trying to build a modern Windows app using Windows Forms you will drive yourself crazy; this is why Microsoft is pushing WPF and the Expression Studio tools. I can’t imagine a scenario where I would start a new project using Windows Forms (just my $.02).
Sorry, back to the subject at hand… thanks for the thoughtful essay Daniel. As someone attempting to live in both the Windows and Mac development worlds, your comparisons line up quite well with my own experience. I would love to see a developer community driven recognition of others’ work. So many Mac applications are (or at least appear to be) true labors of love, it would only be fitting.
October 26th, 2009 at 6:43 pm
Interesting article, however I’ll have to be one of those people that disagrees (in part) with some of your statements.
I am a .NET developer, but also do development for the iPhone, in Objective-C, not MonoTouch ;-)
I do agree that there are many quality applications for the Mac platform, just as there is for *nix and windows. However I think that quality software has NOTHING to do with what platform the developer is writing for, it’s up to the individual developer and I can guarantee that there are just as many lazy Mac developers as there are Windows and Linux developers.
I enjoy developing for all platforms, and put the same effort and thought in to them, regardless.
As for the whole Windows developers only think about $$$ and produce sub-par software is just plain BS. If anyone is producing COMMERCIAL software products and are doing so as their only means of income, commercial reality comes in to it. If you want to get a product out your client is not going to accept that you are 18 months behind because it doesn’t have enough spit and polish, nor will they accept an application that is riddled with bugs. Again, this is not unique to what platform you are developing for, it’s just commercial reality.
It would be interesting to see the ratio of hobbyist vs. commercial developers on each platform, but I don’t think you could get an accurate and unbiased set of statistics.
Lastly, I do like the Apple community, most people are very helpful and will share their ideas and code, however I don’t think that is unique to the Apple community, and if you look at the oloh stats (https://www.ohloh.net/languages/compare?measure=commits&percent=&l0=-1&l1=csharp&l2=java&l3=objective_c&l4=perl&l5=php&l6=python&l7=ruby&l8=-1&commit=Update) you’ll see that open source Objective-C projects are well behind other platforms.
All in all, as I’ve stated, I like developing on all platforms, and to be honest I am still getting used to the intricacies of XCode and find myself much less efficient as I am in VS2008 + Resharper, but then again, I use VS 80% of the time when developing, so can’t pass judgement, as I know it takes new devs to Visual Studio a bit of time and coaching to leverage the full power of the IDE.
Just my two cents :-)
Al
October 26th, 2009 at 7:31 pm
I primely consider myself a Mac developer, however I’ve also been loosely involved in some Linux projects and that has given me some insights that I would like to share.
It is actually questionable to define what Linux is. I think that the technical answer would be that Linux is essentially the Linux kernel and only the Linux kernel. It doesn’t have a graphical user interface and it doesn’t actually do that much. You are really not supposed to ever see it.
Therefor I don’t see Linux as one entity. It’s not really interesting that I run Linux. I could run a BSD kernel or a SunOS kernel. That doesn’t do any difference from the user’s point of view.
What I do find interesting is the desktop environment you’re using. Take GNOME as an example. It’s a portable desktop environment built especially with usability in mind, about making excellent software. It’s almost as close to the Mac as you can possibly get and I have found many similarities between Mac and GNOME developers.
I think that many people just like you may feel confused about the fact that Linux has no graphical user interface and that if you want to use one you can choose one yourself. That there is no consistency.
I do agree that it could sometimes be useful with a more streamlined Linux platform, but when you think about it we actually have the same thing on the Mac platform. You can take Darwin, or even just the XNU kernel from Mac OS X and run GNOME on it. Although this has not been as popular as with Linux it’s definitely possible and some people are doing that. Does it make the Mac developers act the same as the Linux developers you are talking about? Not really. Because we are not XNU developers, and the same thing goes with the GNOME developers. They are not Linux developers, they are GNOME developers.
October 26th, 2009 at 9:21 pm
Al Says:
Actually, I don’t think anyone can ‘guarantee’ anything of the sort in that class of statement on any topic.
No, but when prioritizing what gets fixed, what gets DONE, actually, the developer and the client are both going to look at the market for the software.
In other words, what’s “good enough” for Windows users in many cases isn’t even on the same continent as what’s “good enough” for Mac users. I’d argue that Mac users would live with fewer features that are done with extrarordinary spit and polish that have a feature-laden app that produces little joy in its use. And vice versa for Windows users.
So when you’re trying to get that product out the door and reality intrudes and hands you the knife, what basically happens is that Mac developers cut deep and Windows developers cut across. Not because Mac developers are better or Windows developers are somehow more savvy, but because that’s what will users will expect in the final product.
As for YOU, Jalkut, you !#$!#$!@#$ Landed f*cking Gentry of Mac Development. Always on your !@#$!@#$ highfalutin horse about something or other.
A Rix Pox on you! ;-)
October 27th, 2009 at 9:44 am
I support the indie developer scene by buying Mac shareware, sometimes individually, and sometimes as a bundle. Some of it is wonderful. Some of it is utterly forgettable.
As someone coming from the commercial Windows software world, I see a really “big fish in a small pond” attitude:
1. The mac shareware world has these packaged-up-with-ribbon-and-bow tiny little blips of functionality that nobody would give you anything for, anywhere else but on the mac, where it seems nearly useless bits of shareware with pretty icons in the dock stand for something, and people pull out their visa cards and buy stuff, because this is the Mac, and here we are, we pay for every little thing.
2. Having grown used to the massive commercial software marketplace serving the Windows majority, I still find it jarring how much less functionality, and less available software I can find for Mac, than I could find for Windows. Commercial software on Windows tends to be a sharp-edged thing. Most vertical market software I’ve experienced was a painful thing. Glitchy. Buggy. Crashy. But one did get the job done.
And there’s something to that.
So everybody, the down side of that perfectionism is that you have, on the Mac, almost none of the functionality of the vertical market software that is available for windows. You have 1 developer working on Mac software for every 100 working on Windows software. And you have a choice of 1000 screen-capture programs on Mac, whereas on Windows, you have software for every hobby, every profession, every workplace, every industry on the planet.
So, let’s pat ourselves on the back people.
Hello. Anyone. Home. In. There.
I’m a big mac fan. And I’m embarrassed at the things Mac developers take pride in. It’s not the shiny icons that make our macs useful. It’s the massive amount of productivity you get out of the core (Operating system and bundled apps, and the various popular commercial apps). The shareware scene adds a bit to it. But how many users power up their macs and run shareware apps, and only shareware, all day? How useful, really, in terms of minutes of use, per user, per day, are we aiming at?
Warren
October 27th, 2009 at 11:47 am
Hi Warren, it’s good to have your opposing viewpoint. I can definitely see the flip/downside if you value functionality over form. I guess what my rant comes down to is, this is how I like to make software, this is how a lot of other Mac developers like to make software, and it works for us on the Mac because the majority of customers support these priorities.
October 28th, 2009 at 2:51 am
Using shareware apps all day? OK, not *exclusively*: but between TextMate(*), MailPlane, and PathFinder (shareware), Firefox, Skim, GeoGebra, and LaTeX (freeware), and Terminal (builtin) you’ve already covered a very large chunk of my day’s software-based work. Fatso’s like Excel and Matlab get dragged out on occasion, but it’s relatively rare. Similarly for lots of small shareware apps: VoodooPad, MarsEdit and friends…
Cheers,
Paul
(*) BBEdit for others plays the same role, no doubt…
October 29th, 2009 at 3:11 pm
I love MailPlane. and Firefox. I’d say I log a lot of hours on those.
If I needed them, I’m sure MarsEdit and VoodooPad are great products.
And, to counter my own argument, form and fit-and-finish are part of being functional. I just am a pragmatist at the end of the day.
Warren