Software Engineering, Project Management, and Effectiveness
I thought it might be helpful to walk through a deliverable so you can see my current approach for building prescriptive guidance in patterns & practices.
Stage 1: Knowledge BaseWe start by building the knowledge base:
In this stage, we do a lot of solution engineering. This includes framing out the problem space using Scenario Frames. After all, you can't fix a problem if you don't know what it is, and you don't know when you're done, if you don't know what good looks like. It also includes creating repros for problems and solutions. I think of this as Test-Driven Guidance.
At this stage, we create what I call "guidance modules." These are focused nuggets. At a high-level, we factor reference from action. Our key types include guidelines, checklist, how-tos, and practices. I think Weinberg's term, the Fieldstone Method, applies to what we do.
We also publish our modules to Guidance Explorer at this point so you can build your own guide on the fly.
Stage 2: The GuideAt this stage, we build the guide.
The guide helps put the story together. The guide is divided into roughly two parts. The first part is a series of fast-paced chapters that paint the broad strokes and highlight key concepts. The second part is the hard-core reference section. This gives us a combination of top-down and bottom up.
We share the guide in HTML and PDF. This ways it's easy to share URLs and play in the community, or download and read the guide offline.
Stage 3: MSDNAt this stage, we port the guidance to MSDN:
Stage 4: AmazonAt this stage, we partner with Microsoft Press and we bake the printed book:
Team GuidanceOne of the things you'll notice about the guides is the breadth of participation. I'm a fan of integrating customer perspective, product perspective, field perspective, and expert perspective. I think the best way is to involve key folks that represent those perspective. Here's an example of the contributors and reviewers for the TFS guide. For a more extreme example, see the team behind our Threats and Countermeasures Security Guide.
Measuring SuccessAt the end of the day, I measure success of the guides based on how well they improve your effectiveness. I think our best guides improve your confidence and competence. As much as I'd like you to enjoy reading the guides, I assume you're reading the guides to get your job done. That's why they are dense with insight and action.
Why Guides?Not everybody is a fan of the guides. Personally, I see them as a way to share expertise. You don't get the benefit of working alongside all the product team members, the field, our various customers, subject matter experts, ... etc. That's what the guide is for. It's a way to consolidate and share the expertise. While they won't solve your every problem, you don't have to start from scratch. I think the best guides help you bootstrap your success and avoid reinventing wheels. Why go it alone, when you can stand on the shoulders of giants and learn from what works?
Key tips -- if you want to become a security and performance expert, learn the principles, patterns and practices for security and performance from Improving .NET Application Performance and Scalability and Improving Web Application Security.
My Related Posts
What practices can we learn from the leaders in innovation? How can you improve the success of your R&D efforts? In "Smart Spenders, the Global Innovation 1000," an article in strategy+business magazine, Barry Jaruzelski, Kevin Dehoff, and Rakesh Bordia write about the key practices that the most successful innovators use.
About the Study In the study, Booz Allen Hamilton set out to find which companies have been getting R&D spending right, and then to identify common attributes. They analyzed the data for the Global Innovation 1000 using seven performance screens: sales growth, gross margin percentage, gross profit growth, operating margin percentage, operating income growth, total shareholder returns, and market capitalization growth. They analyzed the following industries: Aerospace & Defense, Auto, Chemicals & Energy, Computing & Electronics, Consumer, Health, Industrials, Other, Software & Internet, Technology, and Telecom.
Lessons Learned Jaruzelski, Dehoff, and Bordia identify some of the key practices for successful innovation:
There's No Silver Bullet Jaruzelski, Dehoff, and Bordia dispell the idea that there's a silver bullet: "How did they do it? There's no silver bullet; we found examples of many different models and approaches. If these high achievers have one thing in common, it seems to be a focus on building multifunctional, company-wide capabilities that can provide them with sustainable competitive advantage. They design their innovation investment for the long run, and create superior growth and profitability over time."
Innovation in the Nonprofit Sector Jaruzelski, Dehoff, and Bordia shine a spotlight on St. Jude Children's Research Hospital as both a success story and to compare and contrast with corporations. Here's a rundown of the key points:
What are the key stages in the innovation life cycle? What is the end-to-end value chain for bringing innovation to market? In "Smart Spenders, the Global Innovation 1000," an article in strategy+business magazine, Barry Jaruzelski, Kevin Dehoff, and Rakesh Bordia write about the four key stages of innovation that the 94 high-leverage innovators have in common.
Four Stages of Innovation According to Jaruzelski, Dehoff, and Bordia, the four key stages of innovation are:
High-Leverage Innovators Jaruzelski, Dehoff, and Borida write:
"Based on press coverage and interviews with executives, we conclude that each of the 94 high-leverage innovators has built sufficiently strong capabilities in all four links of the value chain, and has seamlessly integrated them, to provide a high level of performance over time."
"Based on press coverage and interviews with executives, we conclude that each of the 94 high-leverage innovators has built sufficiently strong capabilities in all four links of the value chain, and has seamlessly integrated them, to provide a high level of performance over time."
Key Take Aways Here's my key take aways:
My Related Posts
What are the high-leverage strategies that the leaders in innovation use? In "Smart Spenders, the Global Innovation 1000," an article in strategy+business magazine, Barry Jaruzelski, Kevin Dehoff, and Rakesh Bordia write about the successful strategies that the 94 high-leverage innovators use.
Example High-Leverage Strategies Here's a sampling of the high leverage strategies:
I created a snapshot of the top 100 blogs according to Technorati. I'll be starting with these blogs to identify patterns and practices for effective blogging. I'll be analyzing blog design, user experience patterns, key features, content, style, frequency, information management, community interaction, impact ... etc. I think there's a lot of lessons to be learned.
Top 100 BlogsThis is the list I see in Technorati as of 02/23/2008.
How can you read faster while improving your comprehension? A few of my colleagues who follow my Book Share blog asked me how I read books. Simply put, I don't focus on reading faster. I focus on learning faster.
5 Tips for Reading FasterHere's the five things that help me read and comprehend faster:
That's how I read insightful, informational or technical text these days.
Stop and Smell the RosesIf it's pleasure, then I slow down and focus on experiencing the author's story and world. Savor the moment.
Additional ResourcesHere's a couple of relevant posts:
What's the best way to build momentum and get results? Start with something simple. Seriously. I get to see folks who get results and those who don't. The difference nine times out of ten isn't smarts. It's simply action. The smart folks who don't get results, either get stuck in analysis paralysis or add too many dependencies up front. The folks who get results start taking action and adjust along the way.
Why This WorksStarting with something simple works. It's not that thinking up front doesn't help. It certainly does. The problem is, three things can happen along the way:
The best way to fuel your fire is to incrementally get results. Start with something simple. Results feed on themselves. If you start with something small, you'll learn faster and you'll start to adapt. You'll inform your thinking.
How To StartStart with the smallest thing you can personally do. If you don't know where to start, here's key questions to help:
Personally, I find asking what I can do today to be the most effective. Time is a great forcing function. It's very easy to cut scope using time. If you don't respect time, then it's very easy to add way too many things that will never happen.
Fail FastWhile starting with something simple helps build momentum, you'll also want to quickly spike on your risks. You can do this separately, after you have some success under your belt.
To fail fast, cut your idea into thin end-to-end slices and test your results. For example, take one story or usage scenario and try to instantiate it. Even before you build the solution, simply doing a dry run will reveal a lot of questions you can use to shape your approach.
The purpose of failing fast isn't to fail. It's to uncover your risks and pick better paths.
Self-Start Techniques for the Action-challengedIf you know your pattern is to think a thought to death before daring make a move, then here's a quick way out. Here's two proven practices:
Once you get in the habit of just getting started, you'll wonder how you ever got stuck in the first place.
Success SnowballsAt the end of the day, nothing succeeds like success. Success is a snowball, so build on your successes. Good luck, and get started, on whatever it is that you've been thinking about starting.
I'm in the process of analyzing my blogging strategies and practices. As part of the process, I'm doing a post roundup for this blog. I did a 2007 post roundup for my Book Share blog and it helped me get a bird's-eye view of my post content. Seeing my posts at a glance, helps me both rekindle the year and spot patterns for improvement. With the benefit of 20/20 hind-sight, I then carry the lessons forward. Here's my 2007 posts at a glance:
October 2007 - Posts
How do you improve your results? How do you consistently increase your success? Have you ever wondered why somebody's *advice* was useless for you at the time? Maybe, they were giving you ideas to change your thinking when what you really needed was better techniques. Have you ever spun your wheels and churned all your energy, only to realize later that you needed to think differently about the problem and change your approach? The first thing to figure out is where you need to change. Here's a simple frame I've been using to help colleagues understand where to change, so they play their best game.
The Change Frame You
How To Use the Frame As simple as this frame looks, it's very powerful. If somebody gives you advice and you feel a tug in your gut that it's not helpful, there's a good chance that it's not the advice itself, but it's at the wrong level. Telling you how to think about a problem won't help when you really need a technique and action for the problem. You can use this frame as a vantage point and to analyze your approach to be more effective.
Changing You The fastest and most effective thing you can change is yourself. You should also know that changing your thinking, changes your feelings, changes your actions. If you know this, it's a powerful concept. If you don't have the energy you need to get results, then you might have to start with changing how you're thinking about it. If you're stuck in analysis paralysis, then you might just need to start taking action and tuning your results.
Changing the Situation Some people spend too much time trying to change for the situation that's not right for them. They ultimately change, but at the expense of their strengths or passion. Another approach is to get better at figuring out up front where you can play to your strengths.
While you want to be flexible and adaptable, you also need to be self-aware. If you know your strengths and weaknesses, you can either avoid situations where you won't be successful or you can set situations up for your success. If you know your strengths and weaknesses, you can also be more deliberate about how you change for the situation and whether you are giving up your strengths.
Adapting, Adjusting or Avoiding For example, if you are used to position authority for getting results, then you'll want to either find those situations where it works or you'll want to avoid them. If you want to be more effective across a wider range of projects, situations and roles, then you'll want to learn how to influence without authority. The key to remember is that it's not a question of can you change for the situation -- of course you can. It's really a question of should you, or is there a way to set the situation up for your success, or is another situation a better fit for you.
Hitting a wall? Sometimes pushing an idea from the inside-out, doesn't work. Sometimes you need an outside-in approach. One of my mentors has a simple way to phrase this -- "Use the system to educate."
It's along the lines of "you can't be a prophet in your hometown" ... sometimes the change agent needs to be external.
Are you ahead of the game, or falling behind? Are you getting the results you want? As a follow on to The Zen of Zero Mail, this post is about task management and personal productivity. It's simple by design, but proven effective over time.
SlidesBased on the feedback, I decided to use slides again. Here's a short deck that steps you through and highlights the Zen of results:
Note: In the slides I use Outlook 2007, but I've also used the same approach with simple text files and directories.
Keys to ResultsYou already know this stuff, but here's the main ideas:
Back at WorkDoes this approach work? Microsoft tests me daily. Since I use this approach at the start of my week and every day, I have a good sense of priorities. This also helps me deal with potentially randomizing scenarios. I can also batch my work. There's always more to do than time in the day. By using time-boxing and setting priorities, this helps me figure out what to eat first, what to push to the side, and what to let slide off my plate.
Lightweight By DesignSince I use this every day, it's very light-weight. It's also a system where if I fall off the horse, it's simple to get back on. There's no heavy start-up cost and there's no expensive overhead. I didn't want a system that has a big learning curve or penalizes me if I fall off track. It's really about just doing the fundamentals well.
Share Your StoriesI'm always interested to hear how people improve their effectiveness. After all, I'm a patterns and practices kind of a guy.
If you coach others or you need to encourage change or if you need to change yourself, the key is to use questions. Lead others to their own insight or your advice may fall on deaf ears. Here's a few of my posts I've been referencing lately that explain the point:
Bottom line -- people don't like to be told what to do and we're wired to resist change.
It’s mid-year at Microsoft. In the past it would take me a bit of work to figure out what I had accomplished and where I want to go. Not this time. For the past several months, I’ve been using a practice I’ll call Monthly Results. Each month, I create a short-list of results in a Wiki and send a link out to our management team as an FYI.
Benefits of Monthly ResultsCreating a Monthly Results list has a few benefits for me:
Most importantly, it's my portfolio of results. If I don't like the portfolio, I can see at a glance where my time went and how I need to shift focus. Thinking in terms of a portfolio of results helps me quickly rationalize things like "Do I have my sure bets?" ... "Do I have a set of riskier projects to learn, grow and innovate with?" ... "Am I working on meaningful problems?" .... "Am I delivering value?" ... etc.
Example of Monthly ResultsHere’s an example of my monthly results list. It doesn’t have to be fancy. In my case, I just create a Wiki page that lists results by month along with any relevant links:
As part of my improvement sprint focused on leadership, I'm making my way through The First 90 Days, by Michael Watkins. In a nutshell, it's a guide for how new leaders can be successful. I think it's actually relevant for any new role or situation. It's a very practical guide, full of real-world lessons learned. In this book, Watkins basically studies the failures and success of people on the job and turns them into patterns and anti-patterns for success.
I'm finding that the book is full of gems of insight. In order to share with my friends, family, co-workers and mentees, I've been posting bite-sized nuggets on The Bookshare. The Bookshare is simply where I chunk information from my favorite books, down into bite-sized nuggets that are fast to read and easy to turn into action.
My latest post is a distillation of the recipe for success from The First 90 days, along with my key take aways. If you're a new leader or dealing with change, or simply want to be aware of key strategies for success at work, read my post on Ten Key Success Strategies.
When you improve the performance of a system, I find it's helpful to think in terms of the techniques you use, the "building codes" you follow, and the overall life cycle approach you use. While there's a lot to know about performance engineering, here's the keys that I've found useful working with customers and experts over the years:
Key TechniquesTechniques are specific methods for producing a result:
Building CodesThink of "building codes" as the principles, patterns, and checklists for the structure:
ApproachThe approach is the methodology you use to orchestrate your efforts:
Key MSDN References
While there's certainly more to know, if you use the techniques, building codes, and approach above, you can start improving the performance of your applications immediately.
When you're improving the security of a system, I find it's helpful to think in terms of the techniques you use, the "building codes" you follow, and the overall life cycle approach you use. While there's a lot to know about security engineering, here's the keys that I've found useful working with customers and experts over the years:
Is there more to know? Of course. But if you need to dramatically improve your results, these are the key techniques we've used with customers to make immediate impact.
You too can have a zero mail inbox, if you choose to. I chose to go zero mail in my inbox when I first joined Microsoft years ago, and I'm glad I did. With a single glance, I know whether I have new mail to deal with. I never have to scroll to see what my next actions are. At a more basic level, an empty inbox feels good. I thought it was just me, but others say the same. Proven Over Time It was tough when I first joined Microsoft. My inbox drove me. Eventually, I learned how to drive my inbox. I studied the masters around me. I also studied those that failed (there's no failure, only lessons.) I refined my approach over the years. Since then, I've successfully taught my mentees and others how to spend less time on administration and more time on results. Now I'm sharing with you.
Slides Here's a short deck that steps you through and highlights the keys:
Note Normally, I work with my mentees one-on-one and tailor the approach for their particular scenario. It's a learning by doing approach. While I've blogged about clearing your inbox before, this is an experiment in how effectively I can share techniques in slides. If it works out, I'll do additional slides on focused topics. The more I can reduce friction around sharing, the more I can share. If you have tips or tricks for improving my slide sharing approach, send my way.
A colleague drew a chart on my board today. I'll summarize like this:
I like new lenses. They make an old song new. In this case, it's a reminder of the power of focus.
It looks like Alik Levin has some helpful posts on using Guidance Explorer from Outlook:
Alik is a long time patterns & practices user. He's intimately familiar with our security and performance bodies of guidance (BOG). He always surprises me with his ability to find every nugget among our vast collection (after all - we have a few thousand pages of patterns & practices security and performance guidance on MSDN.)
As an experienced security and performance consultant, Alik was already very efficient and effective with his customer delivery. I think he was the first person I saw start using Guidance Explorer to build customized guidance for customers. Now that he's taken GE to the next level with his Outlook integration, he's a security and performance machine!
Just how much does your mind determine your body? In the NPR article, Hotel Maids Challenge the Placebo Effect, Maids start losing weight, once they change their mindset. They don't change their daily routine. They simply change perspective.
I like this article because of the new distinction in the placebo effect. In the past, the placebo effect is usually considered effective for subjective experience, such as feeling less pain, or feeling less depressed. In this case, it's about changing physiology, by changing your mind.
This article also reminds me of a friend who suddenly dropped a lot of weight. He said he couldn't lose the weight, no matter how much he worked out, until he one day saw himself thinner. Once he made up his mind, his body followed.
As Napoleon Hill would put it, "What the mind of man can conceive and believe, it can achieve."
I like to sweep my practices at the start of the year. My feed reading practices needed a revamp to reduce some friction. I have some friends ramping up on blogging and feed reading, so I figured I'd share my approach.
Steps for Improving Your Feed ReadingHere's the steps I used to improve my feed reading efficiency and effectiveness:
Step 1. Archive your feeds.Create a clean slate by archiving your feeds. Personally, I find it easier to let things go if I archive a snapshot that I can always go back to.
I had a bunch of feeds I built up over the year, particularly for research projects. Although I periodically trimmed, I still had bloat. I find it's faster to archive everything and carry the good forward, than to try trim the fat. While doing this, I realized I had a large set of feeds that were really more of a reference set that just didn't belong in my day to day working set. For my working set, I realized that, rather than focus on which blogs to follow, I should figure out which circles of people to follow. In other words, rather than find the best spoutlets of information, find the best interactive forums of insight. I'm thinking I'll get more from connecting to the circles of people, conversations, energy and momentum, rather than just harvesting blogs on topics. A great blog is often a reflection of a great network.
Ultimately, the beauty of picking your feeds is you get to pick who you spend your time with.
Step 2. Define your critical set.Carve out your critical set. This is your immediate circle versus your outer circle. These are the blogs you really want to stay on top of and actively participate in. These are your vital few. Use limits if it helps. For example, first identify your critical twenty.
Keep this list flat, even if it varies by topic. When you open your reader, this is the main list of feeds you first see, before going into any folders. The key here is to not exceed your capacity. You'll want a set of feeds you can make it through each day within whatever time-box you allocate. (For me, I budget 30 minutes a day for feeds, including commenting.) I find it's easier to add than to take away, so start small.
This is probably the single most important step. It's the difference between feeling bogged down in your feeds or being on top of your game.
Step 3. Carry your good feeds forward.You've probably accumulated tons of great needles among your many haystacks. That's why it's important that you first carved out your critical set. Now you can simply carry forward all of your good feeds. Lump them under a general bucket. For me, I named a folder "Feeds," and dumped them all their.
What this means is, I open my reader and I immediately see my MUST list. With one click I see my SHOULD/COULD list. This is similar to opening up your inbox and only seeing the most important mails before checking any other folders you route things too.
Once you have your large bucket, you can consider carving out a couple of your priority niches, if it helps you focus. For example, I carved out a bucket for my fellow patterns & practices team. I also created buckets for Microsoft, personal development, blogging and productivity.
The key here is to be able to open your feeds, cycle through your priority list, and then be able to hit your niches or explore your larger "catch all" bucket. What you don't want is a large set of categories to bounce around in.
Step 4. Chop high-traffic feeds down to size.If you have some high volume feeds, that seem to bog your down your randomize you, now is the time to slice and dice them proactively. It's hard to see the forest from the trees when you're chopping your way through the jungle. You can use two approaches:
Step 5. Add tools to your Web browser.Obviously, this depends on the tools you're using, but think in terms of finding, storing, and sharing. For me, I'm focused on three key things for now:
My overall model is to depend more on people and sites that I trust over time, as well as social networks. Otherwise, I can search as needed.
Step 6. Test it and modify your approach.Cycle through your routine for at least a week, so you can test it and tune it. What I did was set a quota of commenting in five blogs per day. This helped me both find communities I might want to interact with, as well as get used to my feeds lists while using delicious and StumbleUpon.
The biggest change for me from the past, is that commenting is forcing me to focus more on the people participation than the raw knowledge of the site or blog. This is making me rethink feedback platforms in blogs and the various patterns of blog interaction.
Key Take AwaysI know there's plenty more I could do. For now, I thought it would be good to get back to the basics. Here's the key points:
What types of posts get traction? In a nutshell, posts that either hit the heart, lead you to "ah-has," consolidate insight, consolidate resources, or help you nail a task. Skellie outlines 7 Types of Blog Posts Which Always Seem to Get Links and Traffic.
Types of PostsSkellie's list of types of posts:
Specialized Versions of AboveI think the following types of posts are variations of above, but worth calling out because of their prevalence on the Web:
Additional Types of PostsIn addition to the types of posts above, I think there's an additional set of patterns:
One leadership style doesn't fit all. According to the Situational Leadership II model, the leadership style depends on the development levels within the team. Here's a summary:
Competence is knowledge and skill for the task. Confidence is motivation and self-confidence. I think competence breeds confidence which can help breed and sustain motivation.
The main point is that if somebody has a bunch of competence, get out of their way. If somebody needs more encouragement, support them. Ideally, you help somebody get to a high competence, high commitment development level.
Key Take AwaysWhile this might sound obvious, I think the important point is to be flexible in your style. Be able to vary your leadership style by situation (the context) and tailor it to the individual development levels within the team.
Another consideration is whether it's more effective to change your approach or change the situation to suit you (set yourself up for success.) There's mixed opinions on this and some interesting results, so I may post on this downstream.
One of the most important things I did while I was on vacation was sweeping Guidance Share. Guidance Share is where I consolidate my body of software engineering guidance and test user experiences. I redesigned the home page for simpler browsing and findability. It was more pain than pleasure for me, but if it helps the broader community, that's my payback.
Here's a highlight of Guidance Share:
Guidance Share gives me a unique vantage point that I haven't been able to get any other way. The act of building it and evolving it helps me make gain new insights. It also forces me to find ways to be extremely efficient. I then try to carry these lessons over to MSDN and to help shape patterns & practices information models. I don't own the MSDN experience, but I can give input. Guidance Share helps me solidify my recommendations with living proof. It's also let's me quickly experiment with new user experiences.
My biggest lesson learned is how difficult it is to integrate information and make it useful, even when you own it. It's one thing to have a snapshot of information that's useful for a given point in time; it's another to create a stable backdrop with a firm foundation that can evolve over time. The key is factoring volatile from stable information, and enabling them to play well together.
Note that Guidance Share is under construction and there are some obviously empty areas, but it's a work in progress. It's a living knowledge base for software engineering that I periodically sweep to share the best that I've learned.
How can you use questions to improve individual performance? You can ask solution-focused questions. David Rock and Jeffrey Schwartz write how to improve non-performance by asking solution-focused questions in their article, "The Neuroscience of Leadership", in "strategy+business" magazine.
Don't Ask Problem-Focused QuestionsRock and Schwartz write:
"Let's go back to Mike, our pharmaceutical CEO. One of Mike's direct reports, Rob, has hired only three of his targeted six new team members this year. If Mike asks Rob why he didn't reach the goal, he will focus Rob's attention on the nonperformance. As a result of this attention, Rob might make new cognitive connections (also known as reasons) as to why he didn't find the new people. For example, 'All the really good people are taken by other companies,' or 'I don't have time to do the kind of recruiting we need.' Although these reasons that people were not hired might be true, they do little to support or foster any change."
Ask Solution-Focused Questions Rock and Schwartz write:
"A more useful place to focus Rob's attention is on the new circuits he needs to create to achieve his objectives in the future. Mike could ask Rob, 'What do you need to do to resolve challenges like this?' Mike's questioning might provoke Rob to have an insight that he needs to remind himself of his annual objectives more regularly, to keep his eyes on the prize. If Mike regularly asked Rob about his progress, it would remind Rob to give this new thought more attention."
Key Take AwaysHere's my key take aways: