

Ask HN: How are Mac programmers different from Windows programmers? - hussam

I keep on hearing that, even non-Apple, Mac programs are more elegantly made (clean, focused, and with attention to details) than their Windows counterparts. Why is that? Are Mac programmers adhering to some design principles that their counterparts are not? Does the OS X environment encourage better development? or is the premise faulty to begin with?
======
evanmoran
This premise is faulty. The programmers are the same, it is simply what sells
well and what qualities are emphasized that are different on each platform.

------
cmontgomeryb
I bought my first Mac ever back in September 2010. Prior to this I was a
Windows and Linux user, and now routinely use all 3 platforms.

My immediate perception was how important design was in Mac software. It's
common to see the beauty and simplicity of a UI being used as a major selling
point, which is not the case on Windows.

Though both Windows and OSX have HIG guidelines, they are routinely ignored by
their creators _and_ 3rd party developers. I think the fact that
Apple/Microsoft ignore them gives a license for 3rd party developers too also.
It was quite a shock to me when the first time I updated my Mac, the
close/minimize buttons in iTunes rotated by 90 degrees!

I believe part of the reason that people like to have beautiful apps on OSX is
that if you are a Mac user, you probably _chose_ to be; whereas Windows is
almost the default due to its ubiquity.

I agree completely with evanmoran; the developers are the same, but what sells
on each platform differs.

------
makecheck
Part of it is the customer base; you probably buy a Mac because Windows
doesn't do what you want, and so the programs have to be different enough. One
way to justify using a different machine is to have apps that put in more
effort to be really good.

But also, it's a matter of copying what you see. When learning to program for
the first time, a developer seems to do most of his or her learning on one
platform, and copy that style for the most part (both the good _and_ the bad,
in everything from the design of GUIs to programming APIs). Regardless of what
you think of either company, is there any doubt that Apple is better at coming
up with good examples of design, than Microsoft? I consider Windows to be
mediocrity breeding mediocrity; while this isn't 100% true, it's true enough
for me to hate using the average PC.

Diversity is also a good indicator of quality; the more methods a programmer
is familiar with, the more likely a program is to be well-designed. As a
single platform, Mac OS X is pretty diverse; it comes with lots of tools, and
is influenced by many different roots (Unix philosophy; NeXT/IBM with
Objective-C/Smalltalk; classic Mac OS GUI elements; etc.).

------
gyardley
Some Mac developers would argue that Mac development, being marginalized for
so long, led to a distinct subculture with an emphasis on artistic values,
community, and high production quality.

There's a quite lengthy study of this subculture called 'Indie Fever'
(<http://www.madebysofa.com/indiefever/>), which is worth reading, although
I'd argue the gold rush environment created by iOS and App Store has weakened
this community quite a bit.

Unless you go to conferences, you now can most easily see the 'indie Mac
developer' aesthetic reflected in snark, like Read The Fucking HIG
(<http://readthefuckinghig.tumblr.com/>).

------
jolan
I think Apple's Human Interface Guidelines helps push developers in the right
direction:

[http://developer.apple.com/library/mac/#documentation/UserEx...](http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html)

~~~
rchowe
The HIG is dead (at least according to gruber
[http://daringfireball.net/2011/01/uniformity_vs_individualit...](http://daringfireball.net/2011/01/uniformity_vs_individuality_in_mac_ui_design)).

------
Aaronontheweb
I think it's something of a faulty premise - both platforms have UI design
guidelines (Ribbon interface, Chrome, etc...) - Apple's are more extensive
IMHO, but that's a developer guidance issue and not a platform capability
issue.

I think the perception of comes from a bunch of legacy Win32 apps that are
still lingering around which have the crusty old design.

Newer apps made on Windows using WPF (Windows Presentation Foundation) look
great - like the Zune client, Visual Studio, Expression Blend, and third party
apps like MetroTwit and Paint.NET. WPF uses a mark-up language to build UI
elements and is thus more designer-friendly than WinForms and older Windows UI
technologies - this fact in combination with the Aero UI leads to more
elegant-looking Windows apps imho.

Apple has a longer-history of offering designer-friendly tools and UI
guidelines to go with it, so that's probably where the perception comes from,
but I'd argue it's a dated premise now.

~~~
rchowe
The thing about WPF apps is that none of visual studio, expression blend, or
the zune client use a standard windows UI – cocoa makes it fairly easy to
create an app that looks like xcode, and WPF seems that it makes it easy to
style controls in a CSS fashion (I don't know; I haven't used it). I'd prefer
consistency, even ugly consistency, over something nonstandard. Apple's gotten
a little lax about this... see app store and iTunes.

~~~
Aaronontheweb
Rchowe, I agree with your criticism actually. The ribbon UI is really the only
thing that's standard other than the parts of the experience enforced by the
Aero engine itself.

One of the things I like about making WP7 apps are the Metro UI guidelines -
it makes it a lot easier to build great looking applications when you have to
follow conventions in order to publish.

------
MoreMoschops
Mac programmers programme on Macs, Windows programmers programme on Windows.
Any other differences between them are not related.

~~~
foljs
a) "Are not related" to what?

b) Really? You have never heard of a programming _culture_ , and how that
could differ in Mac vs Windows vs UNIX programmers?

------
maximilianburke
I would think it's false, even with the surging popularity of Apple computers
recently there are still far more people using Windows and far more developers
writing Windows applications. With more applications being developed comes a
much greater number of unreliable, slow applications with poor user
interfaces.

Though I wonder if the use of Objective-C, and lack of any safety scissors-
esque programming environments like Visual Basic, is helping keep out cruft
like Bulk Rename Utility (<http://bulkrenameutility.co.uk/Screenshots.php>).

~~~
brudgers
> _"poor user interfaces_ "

<http://www.militaryfactory.com/cockpits/imgs/f16.jpg>

Interfaces designed for experts tend not to hide important information and
high performance features.

This Mac based product (<http://www.publicspace.net/ABetterFinderRename/>)
apparently doesn't allow search and replace operations at the same time as
sequential numbering even though it almost certainly allows both.

~~~
foljs
> Interfaces designed for experts tend not to hide important information and
> high performance features.

That you want "not to hide important information and high performance
features" does not imply the interface has to be poorly designed. A well
designed interface can accomplish both.

Most interfaces "designed for experts" are poorly designed crap --and make the
work of the "experts" needlessly hard. That some swear by them is mostly
"Stockholm Syndrome" (or it gives them a false sense of accomplishment to use
something so badly designed, er, I mean "designed for experts".

~~~
brudgers
When you're flying an F16, you don't want "drop flares" and "launch
sidewinders" on two different menus and the radar on a third, so the interface
isn't designed with grandma in mind. That's the difference between the
interface for the Windows utility and the one for the Mac...the Windows
utility allows you to drop flares and launch sidewinders at the same time.

The Mac interface uses modes for crying out loud.

~~~
foljs
> The Mac interface uses modes for crying out loud.

You'll find out that a well designed F16 interface also uses modes. You don't
want to "launch missiles" and "adjust height" in the same menu.

Oh, and the "expert interface" par excellence, Vim, also uses modes..

