Why Microsoft Developers Need a Style Guide 262
snydeq writes "What your interface communicates to users can be just as important as what your software does, writes Fatal Exception's Neil McAllister in discussing the latest edition of the 'Microsoft Manual of Style', a style guide aimed at designers and developers who create Microsoft software, as well as those who write about it. 'The gist of much of Microsoft's advice is that a user's relationship with computer software is a unique one, and it's important to craft the language of software UIs accordingly,' McAllister writes. 'Occasionally, Microsoft's recommendations verge on the absurd. For example, you might not think it necessary to admonish developers to "not use slang that may be considered profane or derogatory, such as 'pimp' or 'bitch,'" but apparently it is.'"
Rude words (Score:5, Informative)
Obviously they do have to put in the bit about not using words that some might find offensive in case someone, having a bad day, put it in and they had no come back.
It's quite incredible what some developers, at any size of company, will do sometimes.
Bad title (Score:5, Informative)
I just want to go on record as saying I hate this headline. I didn't pick it. Furthermore, I don't think there's anything in particular about Microsoft developers that makes them "need a style guide" more than anybody else, and that notion had absolutely nothing to do with my column. I just thought it was interesting that a Microsoft style guide exists, that it's available for sale, and that it has some interesting stuff in it about writing for software UIs that a lot of developers probably don't think about. That's about it.
Master/slave (Score:5, Informative)
Similarly, the relationship between USB peripherals could be described as "master/slave," but these terms could also be considered offensive. (The "Microsoft Manual of Style" says such language is prohibited in "at least one U.S. municipality.")
Dear Neil McAllister,
That terminology originally comes from disk drive buses, and the municipality is Los Angeles [snopes.com]. Are you really a tech writer?
Sincerely,
Suspicious
Re:Master/slave (Score:5, Informative)
Addendum:
Huh?
Dear Neil McAllister,
Netscape named their implementation of ECMAScript as 'JavaScript' as the result of a cross-promotional stunt with Sun. Netscape was bought by AOL. AOL merged with Time-Warner. This merger was the largest acquisition in business history. I can't believe you don't know this.
Sincerely,
Thinking You Were Born Yesterday, Or Perhaps Last Week At The Earliest
Re:Master/slave (Score:5, Informative)
Netscape named their implementation of ECMAScript as 'JavaScript' as the result of a cross-promotional stunt with Sun.
Except I seem to recall JavaScript pre-dated ECMAScript - and the ECMAScript Wikpedia page [wikipedia.org] seems to support my recollection of the timing.
The naming was certainly a promotional stunt, though.
No other platform has a style guide? (Score:5, Informative)
https://developer.apple.com/library/IOs/#documentation/UserExperience/Conceptual/MobileHIG/Introduction/Introduction.html [apple.com] ...
https://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.html [apple.com]
http://developer.android.com/design/index.html [android.com]
http://developer.gnome.org/hig-book/ [gnome.org]
http://docs.blackberry.com/en/developers/deliverables/36511/index.jsp?name=UI+Guidelines+-+BlackBerry+SmartphonesBlackBerry+Smartphones7.1&language=English&userType=21&category=BlackBerry+UI+Guidelines&subCategory= [blackberry.com]
http://docs.blackberry.com/en/developers/deliverables/27299/index.jsp?name=UI+Guidelines+-+BlackBerry+PlayBook+TabletBlackBerry+PlayBook+Tablet1.0&language=English&userType=21&category=BlackBerry+UI+Guidelines&subCategory= [blackberry.com]
http://wiki.eclipse.org/User_Interface_Guidelines [eclipse.org]
Yeah, its hilarious an unusual that Microsoft publishes a design guide for their OS because obviously the author didn't spend 5 minutes on Google...
Re:Master/slave (Score:4, Informative)
It's much older than that [historyoftechnology.org].
Re:I have an idea for the style guide (Score:3, Informative)
Re:I have an idea for the style guide (Score:5, Informative)
There were a lot of who went through college in the early-mid 90s where Hungarian notation was considered proper software development and scores were marked down in various programming classes if you didn't adhere to it. It was the late-90s/early-2000s when people apparently discovered that it was a very, very bad idea especially as we refactored 5-10 year old code. Now it seems we're happy if you just use camel-case.
Re:Bad title (Score:5, Informative)
no, it doesn't happen anymore. The original style guide was good...
Which one was the original one? Was it the one for Vista and Windows 7 [microsoft.com]? Or Windows XP [microsoft.com]? Or this tome for Windows 98, 2000 and XP [microsoft.com] (which was also available in book format [amazon.com])? And I have this one for Windows 95 [amazon.com] on my bookshelf.
I am sure that Windows 3.x had them too. For all the faults of Microsoft, you can't say that they don't like publishing books on how to program their operating systems.
Fast forward to the XAML/WPF/C# era and all that went out the window in favour of "rich" UIs where you have a stupid coloured orb that everyone thinks is decoration until you realise it's the main system menu, and every application has a different set of awful skins.
I agree with you on rise of flashy, non-standard user interfaces, but if you want to adhere to an official style guide now you can still use the ones written for each Windows platform (see my first link).
Re:I have an idea for the style guide (Score:5, Informative)
How about, when naming variables, you have to put the first letter of the typename in the start of the variable name!
Hungarian notation isn't about using the typename at all.
Indeed. Here is some good reading on the actual purpose of Hungarian notation, [joelonsoftware.com] although of course it's used wrong far more often than not. I've never used it myself, correctly or otherwise, but I acknowledge that the original intent was at least sensible.
Re:I have an idea for the style guide (Score:3, Informative)
Re:I have an idea for the style guide (Score:4, Informative)
The real reason for the rise of Hungarian Notation is that the Microsoft C compiler didn't do type checking for some time after other C compilers had it. If you wanted to have a clue what type you were using you adopted Charles Simonyi's notation (which was used by FORTRAN devs at the time).
Cite? The early Microsoft C compiler was Lattice C, which was an ANSI C compiler. It had to have typechecking.
Also, everything I read says Simonyi invented his notation, or at least the rudiments of it, in the 70s while working for Xerox PARC. So it couldn't have been a reaction to a deficient MS compiler that didn't yet exist.
Re:I have an idea for the style guide (Score:5, Informative)
The third explanation in this thread, and not the correct one either.
Originally, Hungarian notation was used by the Apps group in Microsoft. It was used to indicate things that were not expressed in the C type system. For example, an integer referring to a column number in a spreadsheet would be colsFoo, while another referring to a row would be rowsFoo. If you wrote something like if (rowCurrent When the Systems group adopted the convention, they started using it for the variable type, not its meaning. This completely defeated the point, but the Systems group version was the one that caught on due to their greater influence within the company.
C is one of the few Algol-family languages where this is actually necessary. In most others, you can create a columns type and a rows type that are both integers but can not be implicitly cast to the other.
Re:Nobody is happy (Score:4, Informative)
> Most POSIX APIs return true on error and false on success.
You were being funny but it comes down to granularity.
* For success you only need to know that it passed.
* If the function fails you want more details.
Here is an example:
Make sense?