Software Engineering, Project Management, and Effectiveness
Today we released our patterns & practices Improving Web Service security: Scenarios and Implementation Guidance for WCF on MSDN. Using end-to-end application scenarios, this guide shows you how to design and implement authentication and authorization in WCF. You'll learn how to improve the security of your WCF services through prescriptive guidance including guidelines, a Q&A, practices at a glance, and step-by-step how to articles. The guide is the result of a collaborative effort between patterns & practices, WCF team members, and industry experts.
Key Scenarios Here's the key scenarios:
Contents at a Glance
Contributors / Reviewers
As part of our patterns & practices Application Architecture Guide 2.0 project, we created sets of videos to help get you up to speed fast. We have a train the trainer video, step-by-step How To videos, Explained videos, and some videos About the Guide.
Index of Videos
Train the Trainer
About the Guide
I wrote a post, Keys for Skilled Happiness, on Sources of Insight. Some people are born with a better disposition, while others have to work at it. You don't have to work harder, you have to work smarter. Luckily, we have a great body of knowledge on happiness to draw from now. My notes are based on Carlin Flora's article, The Pursuit of Happiness in Psychology Today. Some insights are obvious, while others are surprising.
Here's a summary of the keys:
This post is a simple way to browse the bulk of my patterns & practices work on MSDN and CodePlex. After I walk customers through things, the next question is usually, "OK, so where do we find this?" This is the link I'll be sharing.
Books / Guides
Practices at a Glance
Threats and Countermeasures
Questions and Answers
ASP.NET Security How Tos
WCF Security How Tos
Visual Studio Team System
My Related Posts
Composite Application Guidance for WPF and Silverlight v2.0 (PRISM) is now available.
What is PRISM The Composite Client Application Guidance is designed to help you more easily build modular Windows Presentation Foundation (WPF) and Silverlight client line of business applications.
Goals of the Release Providing guidance on building modular and composite Silverlight applications. Simplifying the composition of the user interface. Providing guidance and light tooling on reusing code between Silverlight and WPF.
What's in This Release
I wrote a post on Architectural Styles on Shaping Software. I tried to distill what I've learned on presenting architectural styles to various folks. Architectural styles are basically sets of principles that shape an application. By using architectural styles, you can abstract the conversation from the technologies. For example, you can talk about SOA and key principles, before getting into debates over whether WCF or ASMX is the right technology. In fact, I would argue that architectural styles are the backdrop that you overlay technologies on.
Jim Kouzes, author of The Leadership Challenge, 4th Edition , wrote a guest post for me at Sources of Insight on The Top 10 Leadership Lessons. Jim's post generated a lot of feedback and some great questions. As a follow up to some of the questions, Jim has written another guest post, Questions and Answers on the Top 10 Leadership Lessons, where he explores some of these questions in depth.
I shared my notes from The Bootstrapper's Bible on Sources of Insight. The Bootstrapper's Bible, by Seth Godin is full of insights and actions for improving your effectiveness in starting businesses. Seth includes a rich set of rules and guidelines to help you avoid costly mistakes and to avoid throwing your time and energy down paths that will never work out. From mental models to metaphors, Seth provides a great set of prescriptive guidance for getting your game on. One of the biggest "ah has" for me was figuring out whether you're an entrepreneur or a freelancer in terms of your business mindset.
One of the questions I get asked is how did we execute our patterns & practices Application Architecture Guide 2.0 project, on time and on budget? It was a six month project, during which we ....
2 Keys to Success We used two keys to success:
Fix Time, Flex Scope One of the most successful patterns I've used for years now is to fix time, and flex scope. The idea is to deliver incremental value and find a way to flow value along the way rather than wait for one big bang at the end. This allows you to deliver the most timely and relevant value with a healthy worklife balance. It helps reduce project risk along the way. More importantly, it helps get your stakeholders on board, by showing them results versus just trust you to the end. Scope is the best to flex because there's the least amount of precision or accuracy up front, and it enables you to respond to the market or stakeholder concerns more effectively.
Agile Guidance Engineering This is the secret sauce. I call it Agile Guidance Engineering:
In a nutshell, Agile Guidance Engineering is about building guidance using nuggets of specific types (how tos, guidelines, checklists ... etc.) and composing them into books. The books themselves are actually an information model. The information model is designed to both structure the content as well as structure the problem domain. We vet the nuggets as we go for feedback, and we prioritize, tune, and improve them along the way.
I've used Agile Guidance Engineering successfully to build the following Microsoft patterns & practices Blue Books:
One lesson I've learned time and again is that it's about the people. You can be on a lousy project with great people and still have a great time. The reverse is not always true. Of course, the ideal world is a great project with great people. I've been lucky enough to have enjoyed several adventures with great people while trying to change the world.
As part of mid-year review, I'm taking a stroll down memory lane. To do so, I created a snapshot of people I've worked with while writing books in patterns & practices over the years. Looking into the past always gives me insight into the future. I use it to find personal success patterns. It also helps me get a new vantage point for project analysis.
The first thing I learned by looking at the list of people I've worked with is how the right project can really grow your network. The other thing is how you can also predict a project's success largely by who's involved. The thing that really stands out for me is that the most successful projects were ones that created an intersection of the right problems, with the right people, with the right passions and strengths. That's what dream teams and compelling missions are made of. A simple test of whether you have the right team is whether you want to run towards or away from the problem.
Here's the snapshot I used for my analysis ...
Application Architecture Guide 2.0
Improving Web Services Security
Team Development with Visual Studio Team Foundation Server
Performance Testing Guidance
Improving .NET Application Performance and Scalability
Improving Web Application Security: Threats and Countermeasures
Building Secure ASP.NET Applications
I'm honored to have a guest post at Sources of Insight from Jay Heinrichs on The 10 Best Ways to Persuade. Jay is the author of best seller Thank You for Arguing: What Aristotle, Lincoln, and Homer Simpson Can Teach Us About the Art of Persuasion. I originally found out about Jay's work through a mentor and it helped me greatly improve my effectiveness in key scenarios, as well as understand why and how influence works.
Here's a summary of the key techniques: