Then we need better code visualization that even marketing people can understand...
In general, I'd argue that it's engineering's responsibility to ensure that management gets the engineering contraints, which must include significant time spent designing a solution before constructing it. This is exactly the role engineering plays here at
Microsoft, across the board.
Windows 7 is a great example (as are several iterations of Windows client and server, Exchange, Office, Visual Studio, SQL Server, SilverLight, Media Server, Home Server, C#, VB, VC++, Live Mesh, PhotoSynth, Azure, etc, etc, etc) of how a well thought out engineering design (which
requires time as a basic ingredient) will yield a very usable, predictable, stable, performant, reliable product. Design, in all contexts, is a transitive property of any human-constructed system, like software.
Code visualisation is important, but marketing people are usually just like people in the street. Software piracy really masks the complexity of software. As long as people think that they can just download a film, or use cracked/hacked software, then
the vast majority of folks will always misunderstand the fact that this is an engineering event.
My girlfriend used to see just the hardware side of things. "I want a Mac because it looks pretty", and "your ugly grey boxes are hideous". It has taken some convincing [her] that writing software is harder than a network administrator implementing active directory.
For most people, someone that configures esoteric aspects of servers, is the same as a software developer. Obviously I
to differ, having done both jobs, but as long as people have the cool
applications that make doing things effortless on their phones, televisions and so forth, then they will always think that writing software is a piece-of-cake.
Microsoft is embracing engineering concepts as well, but their history is not without problems either. Even Windows 7 has limitations that mean that they cannot change ugly decade year old dialog boxes. Internet Explorer 8 still has a load of icons that are
ancient (this new version has the same icons as IE7). The forthcoming Visual Studio 2010 as exactly the same limitation where it will ship with decade year old icons. It is like redecorating your house and retaining the same carpet.
From a coding point of view, ASP.NET MVC 1.0 is just a week old, and without doubt the way websites will be built, but this engineering design has been missing for years, coincidentally, the MVVM pattern in Silverlight and WPF is also new and will be
henceforth and forthwith.
Change in software implementation happens very slowly, Vista and Visual Studio 20085 procurement are ostensible examples that Microsoft has not always been the most flexible in altering its design and engineering practices.
figuerres is right when he says that most software projects are simply thrashed out, with the focus on just getting the thing working first. Evidence can be found by looking for job adverts that require
or Microsoft Patterns & Practices knowledge. In an ideal world knowledge of this or the
Framework Design guidelines
would be essential but not so, unfortunately.