Software Engineering, Project Management, and Effectiveness
We posted our ASP.NET 2.0 security videos, performance testing videos, and Visual Studio Team System videos to the MSDN library.
ASP.NET 2.0 Security VideosKeith Brown explains the mechanics behind some common input and data validation security issues and how to address them.
Performance Testing VideosScott Barber explains the big picture for how to approach performance testing as well as how to do workload modeling and performance reporting.
Visual Studio Team System VideosOur team takes you through key source control concepts in Team Foundation Server.
I hope we produce more videos in the coming months. I particularly like factoring "explained" videos from the "how to" videos and keeping the videos short and focused. I think we have more work to do here, but I think we've learned key lessons each time we've done a batch of videos.
Yesterday, Ed helped me word a "law" that I use for important decisions and that I see show up quite a bit in a number of places. It's the law of human relevancy.
The Law of RelevancyNo matter how relevant the information is, it's more relevant with the help of the right people.
The Human ShepherdAll this law really means is that no matter how well you organize and display information, at some point, there's a glass ceiling on how much easier you can make it for somebody to find what they need. There's always a place for the human shepherd.
Usage / Examples
A StoryIn an early version of Practices Checker (a tool meant to verify your solutions against patterns & practices recommendations), we tried to figure out relevant guidance based on the type of project (Web, winForm ...), what technologies (ADO.NET, ASMX ...) you were using, ... etc. We did this automatically and generated what I considered more harm than help (it missed things that were important and created a lot of noise.) I applied the law of relevancy and argued that we'd be better off figuring out how to leverage the user's own relevancy engine and pattern-matching ability over auto-magic guesswork. We then created a tool to help smart people, rather than a "smart" tool that gets in the way.
I'm always on the prowl for sources of profound insight. At my leadership workshop last week, I noticed the instructor had a wealth of practical insights and distinctions that aren't common knowledge. I asked him his favorite sources of information and he listed two:
I was surprised because I had never read either before (the titles weren't appealing to me.) I picked them up this week and it looks like they're packed with lessons learned and news I can use. I think of The Economist as sharing business and organizational practices. I think of Harvard Business Review as personal development applied to the workplace. Here's a sample of some of the titles from this month's Harvard Business Review:
I found an interesting article about contextual decision making. "A Leader's Framework for Decision Making," an article in Harvard Business Review, is about tailoring your decision making approach based on the context. You can use the Cynefin Framework to figure out which context you're operating in, so you can choose the most effective response. The key is whether to categorize, analyze, probe or act.
Context's Characteristics The Cynefin Framework includes five context types:
Fact-based ManagementSimple and complicated are part of the ordered world. How to respond as a leader in simple and complicated scenarios:
Pattern-based LeadershipComplex and chaotic are part of the unordered world. How to respond as a leader in complex and chaotic scenarios:
I'm a fan of patterns. I think of patterns simply as problem and solution pairs. I wandered by The Hogg Blog and noticed Jason's post on The Great Debate: Patterns vs Tooling. Since patterns and tooling both have their place, I think there's less of a debate and more of a gap between state of the art and state of the practice.
Why PatternsI think patterns are an efficient way to share insights. Consolidating 100's of words down into a few is pretty powerful. A pattern language is a great way to map out the terrain of a domain. I think of the pattern language as a constellation of meaningful nuggets. I think the most insighful nuggets are the ones that help you with the toughest forks in the road.
Patterns in PracticeWhile working on our security and performance guidance, our team was able to rapidly solve and share end-to-end solutions for incredibly complex application scenarios. As we worked through customer scenarios, we would pattern match against our deployment patterns and application infrastructure patterns. To put this in perspective, I remember a customer that had been prototyping a solution for six months, that we solved in ~3 hours because we had a collection of patterns to draw from. We got to a vantage point where we could solve some of the toughest architetural issues for customers in a few minutes. Looking back, I wish we had a more agile way for sharing our learnings with more customers, and I think patterns and pattern languages could have been part of the answer.
Key Usage ScenariosThere's lots of uses for patterns, but here's some examples:
Key Issues with PatternsHere's some of the issues I've run into with some patterns and repositories over the years:
Key Opportunities for PatternsI think there's more opportunity than ever for building better pattern libraries and leveraging social software scnearios and tooling opportunities. Here's some examples:
My Favorite Pattern GuidesHere's a few of the pattern guides I've found to be useful:
You can build your own guide using Guidance Explorer. Guidance Explorer is a front-end browser optimized for our patterns & practices guidance store. Here's some of the usage scenarios:
Summary of Steps
Step 1. Create a new view.To create a new view, right-click My Views and click New View. Name your view.
Step 2. Add items to your view.For this example, select some items from the patterns & practices library node and drag and drop them into your view. Note that you can edit the items. Just double-click to bring up the item, then click Edit. Once you are happy with your changes then you can save to your read write libraries (such as My Library.) You can also create new items. For example, right-click My Library and click New Item. You can then add your new item to your View by dragging and dropping.
Step 3. Save your view as a Word doc.Once you are happy with items in your view, right-click the view and save it as a Word doc. Note that you can also choose to save it as HTML.
Voila! You now have your very own, custom guide.
My Related Posts
It was a nice surprise to see that yesterday our patterns & practices Visual Studio Team Foundation Server Guide was among the top downloads on CodePlex.
The HMTL version of the guide is available on MSDN at http://msdn2.microsoft.com/en-us/library/bb668991.aspx.
My Related Posts