Software Engineering, Project Management, and Effectiveness
Our patterns & practices WCF Security Guidance Project is in progress on CodePlex. This is our first release of prescriptive guidance modules for WCF Security.
How Tos Our How Tos give you step by step instructions for performing key tasks:
Videos Our videos step you visually through key guidance:
About WCF Windows Communication Foundation (WCF) is a service-oriented platform for building and consuming secure, reliable, and transacted services. It unifies the programming models for ASMX, Enterprise services and .NET Remoting. It supports multiple protocols including named pipes, TCP, HTTP, and MSMQ. WCF promotes loose coupling, supports interoperability, and encapsulates the latest web service standards. With WCF, you get flexibility in choosing protocol, message encoding formats, and hosting. For more information, see the MSDN WCF Developer Center.
About the Project WCF provides a lot of options and flexibility. The goal of our patterns & practices WCF Security Guidance Project is to find the key combinations of security practices for WCF that work for customers and share them more broadly. At a high-level, you can think of the project in terms of these main buckets:
The plan is to incrementally share our guidance modules on CodePlex as we go, then build a guide, then port the guidance to MSDN once it's baked.
How do you identify the bull's-eye among your stakeholders? Nothing's worse than finishing a project and missing the mark you didn't know was there. At patterns & practices, one of our effective project practices is to use "tests for success" to help avoid this scenario.
What are Tests for Success "Tests for success" are the prioritized success criteria that the stakeholder's agree to. It's basically a set of test cases, that if the project passes, the project is perceived as a success. They help clarify outcomes and priorities.
Example Tests for Success Here's an example of "tests for success" from one of my projects:
Stakeholders for the project created and prioritized this list, with prompts from the project team. This exercise helped clarify a lot of ambiguity as well as do a level set for the team.
How Can You Use This Whether it's a personal project or a project at work, you can create your own tests for success. I think a small list of the vital few works better than a laundry list. Phrasing the tests as one-liner questions makes them easy to create and use. Here's some prompts to trigger your own tests for success:
When you're in the thick of things, you'll appreciate having a small set of criteria to go back to and help keep you and everyone involved on track.
Have you ever been on a project where key stakeholders don't have skin in the game, but they have a controlling vote? This is a bad situation. It's like multiple backseat drivers, except they won't be there if the car crashes. What's the solution? You turn chickens into pigs!
The Chicken and the Pig You may have heard the story about the chicken and the pig. The chicken says to the pig, "We should should start a restaurant." The pig asks, "What would we serve?" The chicken responds, "Bacon and eggs!" The pig says, "No thanks!"
The point in the story is the pig's "committed" while the chicken's "involved."
The Solution Recognizing the situation is more than half the battle. When you've identified that chickens have controlling votes over pigs, your options include:
How can you differentiate what you do? This can be particularly difficult in problem spaces that seem over-crowded. It helps if you have a frame. One of my mentors gave me a useful lens for differentiating that helps solve this problem.
Problem, Approach, or Implementation You can differentiate based on problem, approach or implementation:
If you differentiate at the problem you solve, it's good to be able to call that out. If you solve the same problem, but use a different approach, unless it produces a big difference in results, it's probably not worth it. If you differ only by implementation and the experience or results aren't valued by the customer, again, it's probably not worth it.
Using the Frame for Differentiation First identify whether you differentiate at the problem, approach, or implementation. Next, determine whether the level at which you're differentiating is worth it. For example, consider safety among automobile makers. Volvo's approach to safety stands out. They work the same problem but differentiate by approach.
By having clarity around where you differentiate, it's easier to communicate your deltas in a meaningful way to others.
Example At Microsoft, when I tackle a problem that's been "solved" before, I use the frame as a lens to quickly find the useful differentiation. For example, doing security reviews wasn't a new problem. However, changing the approach by using inspections and building a set of reusable criteria from a team of experts changed the game. By using criteria based on principles and patterns, and then organizing the criteria within a frame of actionable categories produced exponential results for all of our customers that adopted the approach. Old problem, new approach, great results.
What is your life frame? What are the key buckets in your life that you need to balance across? If you have a frame, you can balance your life through thick and through thin. If you have a life frame, you can more thoughtfully allocate your time and energy for maximum results. More importantly, when things aren't going well, you have a tool to help you spot where you are not investing enough.
Life Frame This is a baseline of your personal portfolio of your most important assets:
Note - if those buckets don't work for you, change them. It's a starter set.
I've been sharing this life frame with those I coach, and some colleagues and they've found it helpful, so now I'm sharing it more broadly. It's a great starting point when you're not getting what you want out of life.
Spread Your Energy and Time Across Your Buckets Spread your energy and time across them. If your current investment's not working, turn up the dial on some. If your stuck in one area, then try turning up another. For example, if you're not getting the results you want at work, then crank up your relationships dial. Remember that with this portfolio, the sum is more than the parts. It's the net effect.
What Can Happen When You Don't Use the Frame When I first got to Microsoft years ago, I didn't have this frame. Sure I knew about these areas of my life, but I didn't have the mental model of a portfolio. Instead, all I knew was that I would throw all my energy and hours at my career bucket. To put that in perspective, 80, 90, 100+ hours a week. The problem is I consistently got rated highly and produced results. But at what cost? Well, if you spend 100+ hours in one bucket, guess how much energy you're spending in others? Granted some buckets overlap, but I'm talking about when you really shine the spotlight on them.
Improve Your Approach Over Spend More Time Time is a limited resources. So is your energy. Interestingly, while working on performance modeling, the light bulb went off. If I carve out a minimum for some buckets and a maximum for others, it would be a forcing function. What's the maximum I would throw at my career bucket? 60? 50? 40? Timeboxing my career bucket forced me to identify the real value of all my work and to heavily prioritize. It also forced me to find the most effective principles, patterns and practices for project management, personal productivity, running high-performance teams, ... etc. Which is better ... more time at the problem? ... or better techniques, more value, and a sustainable pace?
Set Boundaries (Minimums and Maximums) The real lesson is that if you don't first set your boundaries, then you never really have a way to prioritize. For example, if you allocate fifty hours to your career bucket weekly, now you know how much to bite off at a time. Otherwise, you'll just work until everything's done, but there's always something more to do. Priorities, focus, and value are your friends.
As another example, I now continuously invest in my relationships bucket. For example, each week I have lunch with an old friend, and lunch with someone new. At Microsoft, and in life, it's what you know and who you know.
How To Use This To get started, just put these categories on your whiteboard or a pad of paper. Take a look across your portfolio and figure out your current investments in time and energy. Look at your results. How well are you balancing? If you're on track, great. If not, try increasing your investment is some areas and lowering another. The goal is to improve the quality of your life. If you want to really put some focus in an area, try a 30 Day Improvement Sprint.
My Related Posts
I know success means a lot of things to a lot of people. My favorite definition is "success is when the response meets the challenge."
How do you make the most of any situation? Figure out whether you need to adapt, adjust or avoid.
Adapting to the SituationAdapting to the situation, means changing yourself for the situation. While flexibility is good, you need to be careful. You can trade your less effective behaviors, but don't adapt to the situation in a way that takes away your strengths. You'd be better off finding a situation where you can play to your strengths.
Adjusting the SituationAdjusting the situation, means changing the situation to suit you. Sometimes this is the best option, particularly if you can set it up to play to your strength. For example, when you take on a project, can you get the right people on board that compliment your ability?
Avoiding the SituationSometimes this is the best path. Learn to spot the situations where you don't do well. This is my caution. Because I turn any situation into a learning opportunity or challenge, I need to know when it's low ROI. Life's too short to spend energy in low ROI situations.
Self-Awareness is the KeyIf you know your personal strengths and passions, this is your key to success. You avoid adapting to situations that take away your strengths. You learn to setup situations in a way that you succeed. You learn the situations that you should avoid.
How do you get the people on your side or inspire a vision or change the world? First win the heart. I'm blogging on this because it's a lesson I've learned that shows up in so many ways, time and again. I see it in thought leaders. I see it in people leaders. I see it in everyday, conversational exchange. This is one of those ah-ha's that when it sinks in, you find opportunities to apply it every day to improve your effectiveness.
Connecting at the Heart vs. Connecting at the Intellect If you connect at the heart, the mind follows. Interestingly,if you connect at the intellect, you may not necessarily get the heart to follow.
Go For the Heart If you have great ideas, but people aren't on board, chances are you've been ignoring the heart. Change your approach. One way to invoke the heart is to address core values: loyalty, commitment and contribution, individual worth and dignity, and integrity.
Example One of my former leaders is known for inspiring people. For example, whenever I would tell him about a project, he would first ask me how I was going to change the world and who the dream team would be to make it happen?
While he couldn't always get me the dream team, he first focused on a compelling vision and that was inspirational. Where the heart goes, the mind follows. In fact, in many cases I was able to get the dream team, because of the emotional commitment to make it happen. Inspired visions trump purely intellectual ones.
Posts with Pictures While studying effective blogging practices, I noticed a success pattern. The pattern is to start your post with a picture. Ironically, I fought this pattern because the engineer in me wants efficient, effective value in text. So do a lot of engineers. However, many don't.
Choosing the right picture can cause your readers to have an emotional reaction to your information, and draw them into your post. If you don't believe me, take a look at Alik's post Glue Audience To Your Presentation With ZoomIt. Tell me that picture doesn't get you curious? While your picture should be relevant, it should also cause your readers to feel something, and have a reaction. An extreme anti-pattern is to use pictures to trick readers into your posts.
It Works On You If you know this, you can inspire yourself. Rather than smart talk yourself into something, try winning over your heart first. How can you get leverage on yourself? What inspires you? Win your heart and your mind will follow.
How do you pick the right theme for your blog? The challenge is that it's not a linear decision and it requires satisficing to balance content, function, and design ("look and feel"). As part of my research on effective blogging, I've been analyzing themes. I’ve literally evaluated more than 2,000 themes and heavily modified more than 20. I see a lot of patterns now. I've decided to share my lessons learned, since they might save you considerable time.
Summary of Lessons Learned Here's a summary of my key lessons learned:
Vital Factors in Your Blog Theme It's the sum of the parts that creates your overall blog theme impact. Part of the problem that cost me so much time is I didn't know what to look for at first. I had to go through hundreds of themes before I started to see patterns that made some themes more effective than others. The other thing that cost me so much time is that it's a combination of factors over any one thing. The overall look and feel is the sum of the parts. Here's what I found to be key factors in overall look and feel:
Key Blog Features Here's a quick list of the features that my focus group seemed to care about the most:
How I Did My Research My research was pretty basic, but time consuming and challenging, particularly because there's a lot of variables and not much prescriptive guidance that I found actionable. Here's what I did:
Key Galleries I Explored I explored several galleries, but here's a few of the key ones:
Key Themes I Tested While I tested a lot of themes, her's a few key ones that stood out:
How I'll Use This This has definitely shaped my perspective on blog themes. It's night and day from when I first evaluated themes. Knowing what to look for helps me test and experiment faster. I now have a more systematic way of figuring out why some blog themes work and why some don't. I'll be helping some colleagues with their blog themes and I'll be using what I learned as I launch new blogs.
What's the difference between tags vs. categories in your blog? A lot. Knowing the difference between tags and categories can help you better structure your blog for browsing and SEO. Personally, I hadn't noticed the issue before because I only have tags on my MSDN blog. As part of my research on effective blogging practices, I hit the issue. Now that I've experimented with a few blogging platforms, the difference between tags and categories is more obvious. For example, WordPress 2.3 supports tags in addition to categories.
Categories, Internal Tags and External Tags
Tag CloudsI think the big benefit of tags is creating browsable tag clouds where you can discover related content. Whereas categories are just one topic, you can use tags to find related content. For example, you might browse a "security" tag and then browse a "performance" tag to find the intersection of content tagged both "security" and "performance".
Notes from LorellIn Categories versus Tags - What’s the Difference and Which One?, Lorelle makes the following points:
Notes from ProbloggerIn Using Categories and Tags Effectively on Your Blog, Michael Martin makes the following points:
The End in MindIn the ideal scenario, to use tags and categories more effectively (assuming your blogging platform supports it), you would have the following in place:
Turning It Into Action
My Related Posts
What's the full patterns & practices catalog? I created a quick index of the patterns & practices catalog since I've needed to hunt down a few things. I figured this might be useful to share.