Nothing Is Permanent Except Change - How Software Architects Can Embrace Change
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.

Posted by Jonathan Allen on May 25, 2011
During the first week of May InfoQ went to Redmond for an informal meeting to discuss emerging trends. Normally when we go on this sort of fact-finding mission the reporter’s notes are off the record but we asked for permission to publish them as-is. With the exception of removing email addresses and one piece of NDA material, these are the notes shared within our editorial staff.
Our guide for the first day and a primary point of contact.
The days of .NET only or Java only are gone and they are most likely never coming back. The focus needs to be on how we can integrate various platforms.
The massive reorg we’ve been hearing rumors about is real, but it is also no big deal. Externally everything is the same, internally they consolidated various functions for developer into a common group in order to be better aligned between the engineering and business groups. (This relates specifically to the changes in the developer division; a couple more changes occurred across the server & tools business that David did not comment on.)
Why jQuery instead of Prototype or another library? Because it is being used by 40% of sites and is expected to grow to 55% this year.
Heavy emphasis on using open source for ASP.NET. Reasons given:
Modernizer is an essential tools for moving forward with HTML 5.
Web Matrix is the tool for Web Pages, their lightweight IDE to compete directly with PHP.
Three ways to create web pages using ASP.NET and Visual Studio:
All three techniques can be used in the same website; there is no need to restrict yourself to only one model.
Web Forms still represents over majority of all ASP.NET-based sites. Heavy emphasis on moving features pioneered in ASP.NET MVC into Web Forms.
The Razor view model was designed for Web Pages first, then adopted by MVC 3.
Support for both HTML 5 and down-level browsers is essential. But how to do it?
These are all ideas they are considering, no specific features have been planned.
Python Tools for Visual Studio are being developed by Microsoft’s Technical Computing division. InfoQ Reference: http://www.infoq.com/news/2011/04/VS-CPython
VBA – Waiting for contact information. (Provided Jay Schmelzer’s name via David.)
VB/C#: Currently there is an equal adoption rate and an equal number of questions for each inside Microsoft’s forums. As expected, the way each is being actually used greatly overlaps
Three areas of emphasis:
F# is NOT part of the language co-evolution. It is being built for a more targeted audience than VB/C#, which are general purpose programming languages.
Currently Lisa recommends IronPython for embedded scripting. There is a lot of desire, both from Microsoft product teams and outside developers, for a more robust story for embedded scripting.
We really need a queue that focuses on databases, both traditional ones and NoSQL. That would require hiring three to five editors with a deep understanding of ORMs and DBA credentials.
I requested better ways to handle auto-implemented properties in C#/VB, and she suggested I submit a one-page proposal. Specifically for the situation where we need to support IPropertyChangeNotification in WPF/Silverlight.
What is going to replace VBA for embedded scripting with an internally hosted IDE? (Followup = Jay Schmelzer)
We screwed up when we released Expression Studio. We were positing this as a way to go after Adobe and the designer market. We have since spent the last four years trying to say, “No, this isn’t just for designers. This is for anyone building a user interface.”
Jon was talking quite a bit about what Rick Barraza’s session at MIX and the phrase “Everyone is a designer”. Basically their argument is that everyone building a user interface is a designer. They may not necessary be trained as a designer yet, but they are still serving that role.
There are currently no guidelines on how to use Blend correctly, especially from a developer or developer/designer perspective. More importantly, there is not no official guidance on how to keep projects Blendable and avoid pain down the road. Jon promised a slide-deck on this topic from his presentation at Dev Connections. “The deck is actually highlighting some good starting points for developers trying Blend for the first time… helping provide some focus on features that can provide an easy win for them… rather than helping them keep the projects Blendable”
Likewise there is no guidance on how to properly manage resource dictionaries in WPF/Silverlight.
Expression Blend and Visual Studio will not be merged.
“Texture” is important. This is more about the feel of the application than its appearance. This includes the little usability touches such as transitions for showing/hiding information.
A focus on workflows and usability is crucial for internal applications. Every year companies lose countless hours and money because of clumsy user interfaces on their internal applications. For example, Microsoft’s internal application for booking flights/hotels makes comparing prices very difficult. This means employees waste a lot of time just on this supposedly simple task and rarely get the best rate for their intended trip.

Thanks. Posting "raw" notes like this made a really interesting article.
Re Automatic properties, I submitted a suggestion to Microsoft here: connect.microsoft.com/VisualStudio/feedback/det.... You might like to read Mads Torgersen's reply there. Good luck with getting your proposal accepted - I think it would be great if they did something about this.
I agree. Cool concept; interesting article.
Michael Stal discusses system architecture quality, how to avoid architectural erosion, how to deal with refactoring, and design principles for architecture evolution.
Every developer has had to integrate with another system, API or component. Tis article provides strategies to handle the change and for he separating system boundaries.
Alex Russell talks about the shortcomings of the web platform and how it is evolving in order to adress them. He also explains about how browsers are improving and shares his vision on things to come.
Jeff Lindsay discusses creating distributed and concurrent systems using ZeroMQ – a lightweight message queue-, and gevent – a coroutine-based networking library.
Brian Ketelsen introduces Skynet, a platform for polyglot, distributed and composable services that communicate with each other over RPC/JSON.
Carin Meier tells the story of Alice discovering Monads, meeting three types of monads – Identity, Maybe, State-, and learning how to implement them in Clojure.
The need for agile, queryable, reliable, scalable storage without the pain of SQL schema migration is real. This article uses MongoDB to introduce NoSQL concepts to Java, PHP, and Python developers.
Jérôme Giraud introduces Wink Toolkit, an open source mobile JavaScript framework for HTML5 web or hybrid apps, showing widgets and interactions.
2 comments
Watch Thread Reply