Software Engineering, Project Management, and Effectiveness
“People only see what they are prepared to see.” - Ralph Waldo Emerson
At the beginning of the year, I like to take a quick survey of the Microsoft application platform. It helps me figure out where to put my bets and where to explore. It’s a “see the forest, from the trees” exercise.
And oh, what a forest it is. The beauty is it covers a wide spectrum and supports so many scenarios. The challenge is finding your way around. To find my way around, I map out the platform and I think in terms of application types:
By thinking about deployment targets such as cloud or desktop or browser or phone, etc. it makes it very easy to get in the ballpark in terms of context and technologies very quickly. From there, I can worry about things like presentation or data access stacks or language platforms (native, .NET, or scripting.) It’s also a quick way to explore relevant quality attributes (security, performance, reliability) or evaluate architectural styles. In other words, it’s a way to hack through information overload and cut to the chase.
Microsoft Application Platform at a Glance This is my draft map of the platform. It’s a strawman that I use to walk the platform, find clusters of technologies, figure out what’s changed, and evaluate the latest story. It’s easier for me to have conversations about the platform with customers or product teams when I start with a shared frame. The hard part is putting the initial map together. The easy part is improving it through feedback. If something is missing, it’s easy to add. If something is wrong, it’s easy to fix.
As simple as the map looks, it compacts a lot of information. I stuck the code names in where I could find them. Enjoy …
Where To Find Out More I’m a fan of teaching people to fish, as well as giving some starter fish. Aside from people, events, and social media, the three best ways I know to figure out what’s happening on the platform are Wikipedia, Channel9, and the MSDN Dev Centers. I started you out with some pages below …
Channel9 Training Centers
MSDN Dev Centers
Fabulous! Great post as usual- just what i was looking for the past week!
Do you also have a second column for each of these that show primary competitors for each segment? If that is internal only, pls send me a link at anutthar at microsoft.com
Excellent !!! I am going to print this table and stick it on my desk to keep an eye on.
Nice post. Some more features that could be included are MSBuild, PowerShell etc. It would also be nice to provide information on some widely used community/open source frameworks as alternative to some MS technologies available in various areas like Build/Deployment/Configuration frameworks (like NAnt), ORM (like NHibernate), Unit testing frameworks(like NUnit), Mocking frameworks etc.
It would be cool if you just put the links in the table where you're listing the products/technologies.
Nice post. It would be nice if you had a link to samples; like samples from codeplex.
Whoa ... can you spell "complexity"???
@Mike - I'm with you. Wow. Someone used the term "programmer pornography" on a mailing list recently - how fitting. Let's make some more frameworks! Woo!
Thank you. Done.
Thank you. I'll consider for an upcoming post.
Thank you. Rounding up samples would be a challenge. However, there is quite an interesting catalog at the All-In-One Code Framework http://cfx.codeplex.com/ ... it's more than 290 code examples covering 24 MS technologies.
How and what would you simplify?
This is great. A couple things I'd quibble about.
You mean to say Linq2Sql. Data Access is just one particular provider plugin into LINQ - LINQ should go in the infrastructure category (if at all, since it's now a part of the .NET framework).
Also, its a little weird seeing F# included on the list but not IronPython or IronRuby since those along with C# and VB.NET are the "big 5" microsoft-supported languages.
Other than that. Great list!
Great points. Done. I added a language bucket.
I think you focused mainly on the recent technologies, especially those used in the .NET world - even if I use too only .NET at work, I can't forget that there is still a LOT of people currently using other technologies from the MS stack:
and many others..
Even is Microsoft wants to see some of these 'dead', it's very hard to get rid of the huge code base and the skills people build with effort during many years on all those technologies..
Yes, that's right -- I focused on mapping out the newer technology stack and yes, many people still use earlier technologies and there are many large code bases on the earlier stacks.