Software Engineering, Project Management, and Effectiveness
I'm honored to have a guest post at Sources of Insight from Dr. Ken Sylvester on The Top 5 Characteristics of Leaders. Dr. Sylvester has taught Negotiation Strategies at Microsoft for many years. He's president of Organization Strategy Institute (OSI) and has more than 35 years of experience as a leadership and management consultant and professional negotiator.
Here's a summary of Dr. Sylvester's top five characteristics of leaders:
Ray Ozzie had a chance to review our Microsoft patterns & practices Application Architecture Guide 2.0, and this is what he had to say:
“This guide is a tremendous compilation of patterns, practices, architectural styles and other principles to be used when structuring a contemporary .NET application. Whether developing software targeted at the PC or a phone; or developing services for the web or an enterprise server; or developing a composite software+services solution, this book will provide you a wealth of useful and practical guidance.”
Today marks 100,000 downloads of our Microsoft patterns & practices Application Architecture Guide 2.0. That's a significant milestone. The guide gets downloaded about 750 times a day.
To help put it in perspective, here's some quick comparisons:
My Related Posts
I wrote a post about Security Hot Spots on Shaping Software. Hot Spots are a way to organize and share information more effectively. Hot Spots are also a way to turn Pareto's principle (the 80/20 rule) into action. By focusing on the hot spots, you find the levers in the system that produce the greatest results. You can use these levers to help find security flaws or improve security engineering. Read my post to find the what, why and how of Security Hot Spots.
Our Microsoft patterns & practices Application Architecture Guide is now linked from the ASP.NET Home. Many thanks to Joe Stagner for making this happen.
You can read Scott Guthrie's foreword for the guide online. Here's the key features of the guide at a glance:
From an ASP.NET standpoint, you get design level guidance for Web applications, and there's a technology matrix at the end of the guide. Think of the guide as a map of the terrain to help you find the hot spots for your architecture and design.
.NET Rocks published show #426, Rob Boucher on Application Architecture Guidance. It's an in-depth interview with Rob Boucher from our Microsoft patterns & practices Application Architecture Guide 2.0 project. It's a behind the scenes look at the making of the guide and you get to know Rob along the way. There's a lot of insight about the structure of the guide, as well as the approach we used in the guide. There's also a lot of inside information on the design intentions and usage scenarios. Enjoy!
I posted an update to the Agile Architecture method on Shaping Software. When I originally posted about the Agile Architecture method, I took some things for granted. I thought the mapping to agile practices was more obvious than it turned out to be. After taking more customers through the approach, I realized some things are worth more elaboration. Here's some of the key things that stood out among the conversations:
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:
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
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
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
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
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.
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:
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
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:
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.
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 posted about 3 ways to spot logical fallacies and 7 deadly logical sins on Source of Insight. These posts are a distillation of some of my lessons learned from Jay Heinrichs, author of Thank You for Arguing: What Aristotle, Lincoln, and Homer Simpson Can Teach Us About the Art of Persuasion .
If you know how to spot logical flaws, you can avoid bad information, protect yourself from bad advice, and improve your own logical arguments. In the rules of rhetoric, your logic doesn't have to be right. You simply have to be influential. Of course, if your audience realizes you are wrong, you lose your ethos (character) influence. In logical debates however, the rules are strict. If you get your logic wrong, the shows over.
I'm honored to have a guest post at Sources of Insight from author Al Ries on Left Brainers and Right Brainers. I first read Al's The 21 Immutable Laws of Branding some time ago. What I liked about the book was it gave me a new lens for looking at business, brands, and product design. It even gave me insight into personal brands as well as team, product, and organization brands. His principles are timeless and better yet, time tested. My favorite lesson was that to win, you narrow the focus. It's about specialization and standing for something. It's about really knowing which category you're in and what distinctions matter. For example, in patterns & practices, we create prescriptive guidance. Prescriptive guidance took the category of "documentation" and specialized. We effectively became a scenario-based, engineering team that produces code and content-based guidance. This differentiation became our strength.
Read Al Ries on Left Brainers and Right Brainers.
We created an initial set of Application Patterns as part of our patterns & practices Application Architecture Guide 2.0 project. The purpose of the application patterns is to show a skeletal solution for common end-to-end applications. Each application pattern includes a scenario, a pattern solution, and a technical solution. This provides you with a relatively stable backdrop and starting point to reuse lessons learned from successful applications.
Application Patterns Here's our initial set of application patterns:
Example Application Pattern The heart of each application pattern revolves around the scenario, the pattern overlay, and the technology overlay:
Scenario Here's the backdrop we use for the baseline architecture:
Pattern Solution Here's our pattern overlay:
Tech Solution Here's our technology overlay:
Application Pattern Template Here's the core structure of each application pattern:
We created a Rich Client Application Pattern as part of our patterns & practices Application Architecture Guide 2.0 project. The purpose is to show a baseline architecture based on patterns.
Tech Solution Here's our technology overlay:
Application Pattern You can review the full application pattern on CodePlex at:
We created a Web Service with REST Application Pattern as part of our patterns & practices Application Architecture Guide 2.0 project. The purpose is to show a baseline architecture based on patterns.
We created a RIA Application Pattern as part of our patterns & practices Application Architecture Guide 2.0 project. The purpose is to show a baseline architecture based on patterns.
We created a Web Application with Domain Entity Application Pattern as part of our patterns & practices Application Architecture Guide 2.0 project. The purpose is to show a baseline architecture based on patterns.