J.D. Meier's Blog

Software Engineering, Project Management, and Effectiveness

  • J.D. Meier's Blog

    patterns & practices App Arch Guide 2.0 Project

    • 55 Comments

    It's long overdo, but we're kicking off a project for v2 of the patterns & practices Application Architecture Guide.  You might be familiar with Tom Hollander's post "Application Architecture for .NET" 2 - The Revenge.  Well, now it's time for results.

    Solution Architects / Dev Leads / Developers
    Our primary audience is solution architects, developer leads, and developers.

    Principles, Patterns, and Practices
    I'm a principles, patterns, and practices kind of a guy, so expect the guide to be principle-based, durable, and evolvable.

    CodePlex Community Site
    It's a work in progress and it's early, but you can follow along here:

    Topics
    Here's some of the areas we're looking at for the guide:

    Macro

    • App Types
    • Arch Styles
    • Patterns
    • Layers, Tiers, and Components
    • Architectural Hot Spots
    • Presentation Layer
    • Business Layer
    • Data Access Layer
    • Services Layer
    • Services Design
    • Quality Attributes
    • Trends
    • Security Engineering
    • Performance Engineering
    • Baseline Architectures
    • Deployment Patterns

    Micro

    • Choosing Presentation Technologies
    • Choosing Data Access Technologies
    • Choosing Workflow Technologies
    • Inline SQL vs. sprocs
    • MVC vs. MVP
    • Domain model driven vs. structure driven

    Your Feedback
    What would you like to see in the guide?

  • J.D. Meier's Blog

    App Arch Meta-Frame

    • 20 Comments

    As part of the App Arch Guidance project, we've created an organizing frame to help think about application architecture:

    AppArchMetaFrame

    Anatomy of the App Arch Meta Frame
    You can see from the figure, we have a few parts that work together:

    • Scenarios - You can't evaluate an architecture in a vacuum.  Scenarios are the backdrop and the context. 
    • Quality Attributes / Qualities - This is your classic set of reliability, security, performance, flexibility, maintainability ... etc.
    • Requirements / Constraints - These are the user, business, and technical rules that shape your architecture.
    • App Types - This is your overall shape.  This includes Web app, Rich Client, Mobile, ... etc.  While the line may blur, there's important distinctions among application types.
    • Architecture Styles - This includes architectural patterns such as N-tier, client-server, SOA, ... etc.  You can see shifts in styles over the years such as from object-orientation to message-orientation.
    • Architecture Frame - These are the architectural "hot spots."  This is where your key engineering decisions happen.

    How We Use the Frame
    We use the frame to explore and gain insight into different aspects of application architecture.  App arch is a big space.  We'll be using the frame to catalog and organize our various principles, patterns, practices, and assets.

    Keep in mind that this is a meta-frame (so it's a frame of frames.)  We'll have a collection of frames that shine the spotlight on more focused areas.

    Feedback
    What do you think? ...

    Additional Resources

  • J.D. Meier's Blog

    New Prescriptive Guidance for Visual Studio Team System

    • 20 Comments

    Our patterns and practices team has just released new prescriptive guidance for Visual Studio Team System!

    Since my previous post we've made significant updates with the addition of the following content:

    This puts us on course to deliver on these main outcomes we have in mind for our Visual Studio Team System Guidance Project

    • The single best repository of Visual Studio Team System guidance
    • Practical and insightful scenario-based guidance for roles (PMs, developers, architects, testers ... etc.)
    • Thoroughly engineered and tested set of recommendations
    • Great entry point through videos, roadmaps, and task-based How Tos
    • Breadth and depth coverage

    Project Overview
    While Visual Studio Team System provides powerful new tools, customers are asking "where's the guidance?" ... "where do I start?" ... "how do I make the most of the tools?"  In response, our team is building a definitive Body of Guidance (BOG) for Team System. This includes How Tos, Guidelines, Practices, Q&A, video-based guidance, and more.

    We’re helping customers walk before they run, so we’re starting with the foundation.  On the code side (for developers) – this includes source control, building your dev and test environments and setting up a build process.  On the project side (for PMs) – this includes work items and reporting.  Once we have the foundation in place, we can move up the stack to making the most out of Team System for the various roles (tester, architect, developer … etc.)
     
    We're framing out the tough problems using Scenario Frames (for an example see Source Control Scenario Frame).  We then identify where we need guidance and perform solution engineering.  This involves building out reproducible customer scenarios, vetting potential solutions, and sharing the ones we can generalize enough to be broadly useful, yet still specific enough to be actionable.
     
    We're partnering with customers, product teams, support, field, MVPs, and subject matter experts.  We’re working closely with Jeff Beehler to synchronize efforts with the VSTS Rangers, such as the Branching Guidance.

    Related Posts

  • J.D. Meier's Blog

    TFS Guide Beta 1 is Available

    • 20 Comments

    Today we released our Beta 1 of Team Development with Visual Studio Team Foundation Server Guide.  It's our Microsoft playbook for TFS.  This is our guide to help show you how to make the most of Team Foundation Server.  It's a distillation of many lessons learned.  It's a collaborative effort among product team members, field, industry experts, MVPs, and customers.

    Contents at a Glance

    • Part I, Fundamentals
    • Part II, Source Control
    • Part III, Builds
    • Part IV, Large Project Considerations
    • Part V, Project Management
    • Part VI, Process Guidance
    • Part VII, Reporting
    • Part VIII, Setting Up and Maintaining the Team Environment


    Chapters

    • Introduction
    • Ch 01 - Introducing the Team Environment
    • Ch 02 - Team Foundation Server Architecture
    • Ch 03 - Structuring Projects and Solutions
    • Ch 04 - Structuring Projects and Solutions in Team Foundation Server
    • Ch 05 - Defining Your Branching and Merging Strategy
    • Ch 06 - Managing Source Control Dependencies in Visual Studio Team System
    • Ch 07 - Team Build Explained
    • Ch 08 - Setting Up Continuous Integration with Team Build
    • Ch 09 - Setting Up Scheduled Builds with Team Build
    • Ch 10 - Large Project Considerations
    • Ch 11 - Project Management Explained
    • Ch 12 - Work Items Explained
    • Ch 13 – MSF Agile Projects
    • Ch 14 - Process Templates Explained
    • Ch 15 - Reporting Explained
    • Ch 16 - Team Foundation Server Deployment
    • Ch 17 - Providing Internet Access to Team Foundation Server

    About Our Team

    • Prashant Bansode - Prashant's an experienced guidance builder and a master of execution.  He's a solid pillar on the team.
    • Jason Taylor - Jason's a master of results.  I've worked with Jason across a few projects.  He always hits the ground running and accelerates from there.
    • Alex Mackman - I worked with Alex on Building Secure ASP.NET Applications, Improving Perf and Scale, and Improving .NET Performance and Scalability, so it's great to have him back.
    • Kevin Jones - Kevin is new to our team, but getting up to speed fast.  He brings a wealth of Visual Studio Team System experience to the table.


    Contributors and Reviewers
    Here's our contributors and reviewers so far:

    • Microsoft: Ajay Sudan; Ajoy Krishnamoorthy; Alan Ridlehoover; Alik Levin; Bijan Javidi; Buck Hodges; Burt Harris; Doug Neumann; Edward Jezierski; Eric Charran; Graham Barry; Jeff Beehler; Julie MacAller; Ken Perilman; Mario Rodriguez; Marc Kuperstein; Matthew Mitrik; Michael Puleio; Nobuyuki Akama; Paul Goring; Pete Coupland; Peter Provost; Rob Caron; Robert Horvick; Rohit Sharma; Sajee Mathew; Siddharth Bhatia; Tom Hollander; Venky Veeraraghavan
    • External: David P. Romig, Sr; Eric Blanchet; Leon Langleyben; Martin Woodward; Quang Tran; Sarit Tamir; Tushar More; Vaughn Hughes; Michael Rummier

     

  • J.D. Meier's Blog

    patterns and practices WCF Security Guidance Now Available

    • 20 Comments

    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:

    • Application Scenarios - These are whiteboard solutions for common end-to-end application scenarios.
    • How Tos - These are step-by-step instructions for performing key end-to-end tasks.
    • Building Codes - These are our sets of rules and practices.  This includes Guidelines, Checklists, and Practices at a Glance.
    • Reference - This includes Explained, Cheat Sheets, and Q&A guidance.

    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.

  • J.D. Meier's Blog

    Trends for 2010

    • 18 Comments

    “The best way to predict the future is to create it.” – Peter Drucker

    This is my summary of key trends to watch for 2010.  Putting it together is a time-consuming exercise, but it’s one of the most important things I do for the year.  It helps me see the bigger map.  With the bigger map, I have a simpler way to understand what’s going on, anticipate what to expect, respond more effectively, and most importantly – make better bets on where to spend my time.

    Don’t read this as a definitive list.  Draw from it to help you create your own lens to make sense of the landscape and find your path forward.  It’s long, I tried to keep it as scannable as possible.  I didn’t want to cut it short for the sake of simplicity.  Instead, I wanted to provide a solid map with sources you can draw from as you plan your road ahead.

    Key Sources
    I primarily draw from my own experience working with customers, and paying attention to what they’re paying attention to,  as well as paying attention to my mentors and smarties across the company, and whoever they tell me to pay attention to.  I also draw from the following:

    • Jim Carroll – Jim helps me see the trends across industries and look to patterns.  He’s also great at identifying where the growth and opportunities are, and more importantly how to frame the landscape in a way that makes it actionable instead of analysis paralysis.
    • Trend Hunter – It’s effectively “crowd-sources insight” and it’s a great source for consumer trends.  I’m a big believer that consumer trends pave the path for Enterprise trends.  By watching consumer trends, I learn what to expect.  I then watch how it shows up as I work with my customers.  This pattern serves me well.
    • 10 Web Trends to Watch in 2010” by Pete Cashmore – I liked the simplicity of it and the fact that it resonated with other sources.
    • Economy + Internet Trends by Morgan Stanley – This is a very nice report.  While it reinforces the “jobless economic recover,” it does show IT sector growth, and calls out key tech trends.
    • 8 Big Trends - It’s a free e-book by Jim Carroll and I think the insights are trends that continue and are highly relevant for today’s landscape.
    • Key Software Trends – It’s my summary post of trends across application, infrastructure, performance, and software development that I saw while working on the patterns & practices Application Architecture Guide 2.0 book.
    • The Enterprise of the Future – This amazing compilation by IBM is based on insights and wisdom from interviews of more than 1,000 CEO’s.  I think the key trends from here still hold true, and I like that they boiled it down into 5 key attributes: Hungry for Change, Innovative Beyond Customer Imagination, Globally Integrated, Disruptive by Nature, and Genuine, Not Just Generous.

    Aside from these, I also scoured the Web and scanned bloggers, industry luminaries, and any relevant and significant insight I could find.

    The Short List – 5 Keys to the Future
    Before the longer list, I want to shin the light on 5 key things:

    1. Agility.  Agility means the ability to respond to change.  This is crucial for both personal survival as well as surviving and thriving in a business landscape.
    2. Business intelligence.  Data-driven decisions win over guesswork.  It’s tough, especially when statistics lie and we want to trust our instincts over our indicators.  Start by asking, how do the great businesses drive their great decisions?  Between information markets and crowd sourced intelligence and social networking, the real issue is how you leverage the data and turn it into intelligent decisions and smart feedback loops, and how you learn and respond.
    3. Cloud and virtualization.   This is a key growth spot.  How else do you keep up in a rapidly changing world and deliver services and disruptors and bring new game changers to market faster than ever before?  It’s the cloud.  It marks the commodization of IT and computing.
    4. User Experiences.    Great user experiences drive adoption and make things stick.  This is a great area for innovation, patterns, and practices.  When you think about the possibilities of rich media, touch, speech, location-aware services, and “you-as-the-remote control” (think Wii), the possibilities for amazing and immersive experiences are endless.  More importantly, we can finally start showing how software improves productivity, effectiveness, efficiency, and fun.  It’s gamer + education + business + life.
    5. Mobile.  This is another growth spot – mobile Internet growth.  It’s emerging as a powerful platform and ecosystems that bring the power of software to everyday scenarios, anywhere and everywhere.

    Key Trends for 2010
    Here is my summary of key trends for 2010:

    • 3 screens and a cloud.  Rather than get lost in device explosion, think in terms of a little screen, like a phone, a mid-sized screen, like a laptop or net book or PC, and a bigger screen, like a TV or multimedia projection, and a cloud that serves them all.  See Three Screens and a Cloud by Steve Clayton.
    • Agile Process.    Cycles of change are faster.  How do you keep up?  By adopting agile processes, such as Scrum, XP, and Lean.
    • Apps move up the stack.   As the market matures, things move up the stack.  An example would be the growth of SharePoint as a rapid application platform.  This pattern should accelerate along with cloud adoption.
    • Business intelligence.  How do you make your best decisions?  You test them and you use real data in real time.  That’s how Amazon drives an effective online business.  They don’t depend on a smart user experience person to make things pretty.  They do A/B testing to experiment and test which online experience produces the best results.
    • Cloud Computing and Virtualization.   If you want to stay relevant, you have to be thinking about your cloud and virtualization story.  The opportunities here are amazing from the one-man band code slinger who spins up a Web farm for their app that changes the world to businesses that expose new capabilities to the World and help build the programmable Web.  It’s also a way to simplify computing and move up the stack.
    • Competitive advantage.   Darwinism is brutal in a global marketplace.  Sink or swim.  How do you find your competitive advantage in today’s world.  According to Jim Carroll, the four key drivers of completive advantage in today’s landscape are: Velocity, Agility, Complexity, and Flexibility.
    • "Consumerization" of IT.  A while back, Gartner said Consumerization Will Be Most Significant Trend Affecting IT During Next 10 Years ... I think we see that accelerating.
    • Global distributed development.  Competing in a global market means finding and using the best resources at the best price, anywhere in the world.
    • Jobless Economic Recovery.   This sucks.  It really does.  The upside is that businesses are getting leaner and more effective.  The downside is it’s a sign that we’re not innovating or creating enough growth, and our model for the world isn’t working.  The opportunity here is, software engineers can change the world (remember that Bill Gates guy?)  The world needs a new model.
    • Skills-for-Hire Economy.   Specialization, market maturity and rapid cycles of change drive a demand for key skills.  The key is to balance “generalist” skills in business and technology, along with specialized skills that the market values.
    • Location based services.   Talk about relevancy in action.  It’s all about specialization + location.  Location, location, location takes on new meaning and relevancy.  For example, in Where’s the Growth?, Jim Carroll identifies “Consider the concept of a “location-intelligence professional.” Today, this involves someone working within the insurance industry, learning how to link the extensive data-sets of geographic oriented information – think Google Maps – with existing insurance underwriting information, and with other statistical databases.”
    • Micropayments and virtual currencies.  Second Life really set the trend here a while back, but it’s becoming more important in today’s world.  This paves the way for real money for micro-transactions.  It also creates a model for reputation based systems, which is important in a reputation-based economy.
    • Mobile internet.    If you want to stay relevant, you have to be thinking about your mobile story.
    • Parallel computing.  On the systems side, there’s a whole new game in town.  On the user experience side, expect to have richer, more immersive and more responsive applications.
    • Reputation based.   It’s reputations that cut through the clutter and rise to the top, helped by word-of-mouth marketing and raving fans.
    • Standards / open systems.  One of the way so win in today’s world is to build great experiences on top of open standards.  Optimize for open over closed.
    • The fall of walled gardens.  It's not just B2B or B2C anymore – it’s whatever makes the most sense.
    • The rise of Social media / social networking.   Between world-of-mouth marketing, raving fans, and real time information markets for customer feedback that can make you or break you, embrace and leverage the power of the people.
    • The system of systems in the Enterprise is your OS.  Your Enterprise is your emerging mash up of systems and services.  Find a way to create an effective portfolio for analyzing what you’ve got and be thinking in terms of business capabilities, infrastructure capabilities and application capabilities.
    • The Web is the OS.  It’s the programmable Web.   Imagine how your service or capability can be exposed to the World and thrive.  Remember, it’s survival of the fittest.  Be the best or go home.
    • User empowerment.  It’s the rise of the spider and the fall of the starfish in a federated world.
    • User experiences.   This is where reputations are built and raving fans are won.  Think speed, simplicity, immersive experience, visualization, how you feel … etc.  Design working backward from the end experience in mind.  If the resulting experience suck will suck, don’t even start to build it.

    My synthesis -- stay customer connected, create value for society (it’s not a vacuum), create raving fans, build to change over build to last, learn and respond through effective business intelligence, think in terms of platforms/ecosystems/execution, be the best in the world at what you do (on the Web, you don't need a bunch of #2s),  stay flexible and adaptable, and build the network and relationships that support you and your ecosystem.

    With that in mind, here are some more keys to watch for …

    Trends to Watch in 2010 by John John deVadoss
    John runs our Microsoft patterns & practices team.  He’s great at boiling things down, spotting trends, and his super skill is providing insight for technical strategy.  Here are some of his insights for 2010:

    1. Trends to Watch in 2010 #1 - 'Bring Your Own PC'
    2. TRENDS TO WATCH IN 2010 #2 'WHITHER PRIVATE CLOUDS (THE MY CLOUD PATTERN)?'
    3. TRENDS TO WATCH IN 2010 #3 'RICH CLIENT REDUX'
    4. TRENDS TO WATCH IN 2010 #4 'CLOUDING OF THE FRONT-OFFICE' OR WHY THE FRONT-OFFICE CONTINUES TO BE THE EARLY SWEET SPOT FOR THE CLOUD
    5. TRENDS TO WATCH IN 2010 #5 'THE CLOUD AS PLUMBING VERSUS THE CLOUD AS APPLICATION PLATFORM'

    Economy + Internet Trends by Morgan Stanley
    Economy + Internet Trends  is a very nice report by Morgan Stanley.  While it reinforces the “jobless” economic recovery, it does show growth in the IT sector, and it calls out some key tech trends:

    1. Key Theme # 1 Mobile Internet Usage Is and Will Be Bigger than Most Think
    2. Key Theme # 2 Apple Mobile Share Should Surprise on Upside Near Term
    3. Key Theme # 3 Next Generation Platforms (Social Networking + Mobile) are Driving Unprecedented Change in Communications + Commerce
    4. Key Theme # 4 Mobile in Japan + Desktop Internet Provide Roadmaps for Mobile Growth + Monetization
    5. Key Theme # 5 3G Adoption / Trends Vary by Geography
    6. Key Theme # 6 Carriers in USA / W. Europe Face Surging Network Demand But Uncertain Economics.
    7. Key Theme # 7 Regulators Can Help Advance / Slow Mobile Internet Evolution
    8. Key Theme # 8 Mobile-Related Share Shifts Will Create / Destroy Material Shareholder Wealth

    I also like some of their distillations, such as “Facebook = unified communication + multimedia repository in your pocket.”

    Web 2.0 Trends from Scoble
    Kevin Skobac  put together a short presentation interpreting Scoble’s “principles of the 2010 web” from a user perspective:

    1. it's in real time
    2. it's mobile'
    3. it's decentralized
    4. it's in pre-made blocks
    5. it's social
    6. it's smart
    7. it's powerful infrastructure

    Key Questions I Ask to Find and Rationalize Trends
    These are some of the basic questions I ask to find and rationalize key trends:

    • Where are the investments?
    • Where's the growth?
    • Who are the pillars in the relevant niches and what are they saying?  … more importantly, what are they doing?
    • What are the results?
    • What’s the data say?
    • What are consumers doing?
    • Is it a real trend or just a fad? … and does it matter?

    The Meta-Pattern for Trends
    These are some of the patterns I’m noticing about the patterns of the trends:

    • Absorb what is useful.  Do it Bruce Lee style -- take what you need, adapt it, and throw out the rest.
    • Agility.  Stay adaptable.  Flexibility is your friend.  See The better adapted you are, the less adaptable you tend to be.
    • Be the Best on the Web.  there’s no room for #2.  Be the best at what you’re the best at.  This is Good to Great in action.
    • “Built to Change” Over “Built to Last.”  Again, this goes back to shifting from a static world, to a dynamic world and embracing change over fighting it.  Run with it.
    • Compete where it makes the most sense.  Compete on price, or quality or customer and don’t mix them up.  This depends on which stage of the maturity cycle you are in, what the state of the market is, and what you can be the best at.  For example, in a commodity market, don’t be the most expensive.  Turn competition into collaboration and find the win wins to really change your game and rock the world.
    • Consumer patterns drive Enterprise patterns.  At the end of the day, people are consumers and the patterns show up in the Enterprise.
    • Decentralize and federate.   Think starfish and spider.
    • Differentiate.  Differentiate by giving your best where you have your best to give.  Compete by dividing the niche and small is the new big (so you win with a portfolio that’s flexible and responsive to market demand.)
    • Execution is king.  Operational efficiency and innovating in your product cycle is how you survive and thrive.
    • Prosumer.  Think Consumer + Producer.  Get your customers into your production cycle earlier so they help you create and innovate in your product line.
    • Pull vs. Push.  Know the mental model from push to pull.  In Push Me, Pull You--Dueling Business Models, Steve Bosserman says, “Through the three hundred-year reign of the Industrial Age, businesses “pushed” their products and services onto consumers. Limited choice accompanied by considerable marketing hype was enough to make the consumer buy. It was a sellers’ market. Now, thanks largely to the Information Age, consumers are evolving into customers who can select what they want from a variety of providers. It is becoming a buyers’ market.”
    • Relevancy is king.  Google taught us this.
    • Reputation and brand are king.   In a social networked world, it’s the network that says who the authority is and what works and what doesn’t. 
    • Simplicity.  Simplicity always win in the long run when it comes to adoption.  Find ways to reduce friction and make things simple out of the box.  Design for simplicity and keep things simple where you can.
    • Social Value / Community Good.  In a green world, if you’re business doesn’t play well with green values, it’s not a sustainable path.
    • Results are king.  Talk is cheap.  Results speak for themselves.

    There are a lot of kings here.  In checkers, it’s easier to win when you have a lot of kings.

    The Way Foreword
    What’s past is past and the future

    • Build a firm foundation.  Know Maslow’s hierarchy and prioritize taking care of your basic needs.  Know your “monthly burn” and be mindful of your decisions to support your firm foundation.  The stronger your foundation is, the more you can help yourself and others when they need it most.
    • If it doesn't help you be your best, cut it out.   This means living your values, and playing to your strengths.  It also means giving your best where you have your best to give, as a person, and as a company.  It’s how your survive, and it’s how you go from surviving to thriving.   Any other way drains you in the long run and you get priced or pushed or competed out of the market.  It’s the sustainable path. 
    • Follow the growth.  Follow your own growth, and follow the growth in the market.  For example, in the tech industry some growth areas are mobile and cloud.  Along these lines, create the growth.
    • Get back to the basics.  Practice the fundamentals.  They work.  Among the chaos, there are always core principles, patterns, and practices that you can bank on.
    • Hone your personal brand.  Make the most of what you’ve got and make sure your differentiation is obvious.  For example, one of my differentiators is “getting results.”
    • Invest in yourself.  Inner-engineering always pays off.
    • It's your network and what you know.  People sort and sift through people they know.  In a skills-for-hire economy, your network is how you find the opportunities. 
    • Know the cycles of things.  For example, know the Four Stages of Market Maturity, the Technology Adoption Life Cycle, and the Diffusion of Innovations.
    • Lead yourself from the inside out.   Follow your values, play to your strengths, and follow your purpose.  It’s the sustainable path.
    • Learn and respond.  Your ability to learn and respond will drive your best results.  Innovate in your process and your product.
    • Look ahead.  Build your anticipation skills.  Know the system.  Things don’t just happen.  The more you know the system and the ecosystem, the more you can anticipate what’s coming down the line.  Pay attention to market leaders, trend setters, patterns, and cycles.  Everything happens in cycles whether it’s growth or decline.

    What else is important that I should know about or have on my radar and heat map?

  • J.D. Meier's Blog

    Stephen Covey Speaks at Microsoft

    • 17 Comments

    Dr. Stephen Covey presented at Microsoft today.  It’s one thing to know the information; it’s another to experience the delivery live. 

    StephenCovey 

    This post is a bit longer than usual, but hey, it’s not every day that Covey is in the house.  Here are some of my highlights from today’s session.

    The Lighthouse Story
    Covey opened with a story of Captain Horatio Hornblower.  As the story goes, one night at sea, Horatio awakens to find that a ship is in his sea-lane about 20 miles away and refuses to move.  Horatio commands the other ship to move starboard, 20 degrees at once.  The other ship refuses and tells Horatio that he should move his ship starboard, 20 degrees at once.  Next, Horatio tries to pull rank and size on the other ship, stating that he’s a captain and that he’s on a large battle ship.  The other ship replies, and it turns out it’s not actually a ship, but a lighthouse.

    The take away from the story is, there are lighthouse principles.  You don’t break them.  You only break yourself against them.  Don’t break yourself against lighthouse principles.

    Values and Principles
    Covey distinguished values from principles:

    • Values drive behavior.
    • Principles drive the consequences of behavior.

    The key take aways are:

    • If you take the short cuts in life, you pay the price of confidence and trust.
    • Build your personal value system on principles.

    Personal Mission Statement
    Covey asked us whether we had personal mission statements?  Some folks raised their hands.  He then asked us how many have them written down.  A lot less kept their hands raised.  I kept my hand raised because I happen to have my personal mission statement written down.  My personal mission statement is, “To find the best way for any person to succeed in any situation.”    I tie this back at work, where I try to help customers be as effective as possible, building on the Microsoft platform.

    Family Mission Statement
    Covey then challenged the audience whether we had mission statements for our families?  That one made me think.  He then challenged, if you asked your loved ones, would they know it?  Now there’s a good test! 

    He challenged us to go home and ask, “What’s the purpose of our family?”  He warned us though, that our families will know that we’ve been seminar’ed!

    Write and Visualize to Imprint on Your Subconscious
    Covey reminded us that writing down your mission imprints it in the subconscious mind.  He added that visualizing also imprints on the sub-concsious mind. 

    The take away is that you should write and visualize your mission statements.

    Keys to a Mission Statement
    Covey put it succinctly that a good mission statement is:

    • Memorizable.
    • Short.
    • Follows the natural laws of principles.

    Why a Mission Statement
    Covey told us that the power of a mission statement is that it governs every other decision.

    Sean Covey
    Covey introduced his son, Sean Covey.  Sean wrote The 7 Habits of Highly Effective Teenagers and The 6 Most Important Decisions You Will Ever Make.   When Covey introduced Sean, he also mentioned a 49th grand-child on the way.  49 … WOW!  That’s quite the impressive team.

    Point to True North
    Covey had us close our eyes and point to true North.  When we opened our eyes, it was obvious there was little consistency.  He said he gets similar results when he asks any department, group, or team – “what’s your purpose?”

    Urgent But Not Important
    Covey asked us how many struggle with work/life balance.  Many hands went up.  He then asked us what we think is the percentage of time we spend on things that are urgent, but not important. 

    He said people often report they feel they spend 50% of their time on urgent, but not important tasks.  Why is that?  Covey stated it’s because everybody defines purpose differently.

    Office Politics and Dysfunctional Activities
    Covey asked us how much time people spend in office politics.    By office politics, he meant, reading the tea leaves, dealing with hidden agendas, fighting cross-group conflict, … etc.  The data says that 75% of people claim they spend 25% of their time on these things.  25% say that 50% of their time is spent in dysfunctional activities.  Urgency replaces important activities.

    The key take away is that people feel they spend a lot of time on dysfunctional activities.

    Six Metastasizing Cancers (Victimism)
    Covey showed us a slide that listed what he called the Six Metastasizing Cancers:

    • Criticizing
    • Complaining
    • Comparing
    • Competing
    • Contending
    • Cynicism

    The take away here is that these are ineffective behaviors and you end up acting like a victim.

    Are You Utilized to Your Full Potential
    Covey asked us whether we can use our full talent and capacity in our organization.   He then asked us whether we feel the pressure to produce more for less.   The point here was to emphasize how there’s a demand for greater results, but that we’re not necessarily utilized to our full potential.

    It’s Not Behavior, It’s Not Attitude … It’s a Bad Map
    Covey gave us a scenario where somebody gets a map of Seattle.  The problem is, the map maker made a mistake.  It’s not really a map of Seattle.  It’s a map of Oregon.  With this map, you can’t even make it out of the airport.  There isn’t one corresponding point.

    Trying harder isn’t the answer.  If you double your speed, now you’re lost twice as fast.  Thinking negatively isn’t the problem.  Covey said some people might try to use a PMA (Positive Mental Attitude.)  Well, that doesn’t help either.  Now you’re all psyched up, but really you are just happy and contented in a lost state.

    The take away here is that it’s not behavior and it’s not attitude.  It’s a bad map.

    Self-Educating
    Covey told us that we need to be self-educating.  School taught us how to learn, but we need to continue to learn.  He said we need to be willing to pay the price to be self-educating, which includes being systematic and disciplined.

    Industrial Age vs. Knowledge Worker Age
    Covey points out that 20 years ago, it was about goods and services.  Today, it’s about knowledge workers.

    - Industrial Age Knowledge Worker Age
    Overall Philosophy Kind Control Unleash Talent
    Leadership Position (Formal Authority) Choice (Moral Authority)
    Culture Boss Centered Complementary Team, Servant Leadership
    People Expense Asset
    Motivation External Internal (Inspiration)
    Management The Boss owns responsibility for results, therefore manages and motivates. The culture owns responsibility for results, therefore self manages.

     

    Expenses and Assets
    Covey asked us what we are called in spreadsheets.   He said that in spreadsheet and financial accounting, people are called expenses and cost centers, while things like microphones, tools, and machines are called assets.  He said this is left-over from the industrial age.

    Finding Your Voice
    Covey asked how do you help people find their voice?  You ask them what are they good at?  What do they love doing?  What is your greatest unique contribution?

    The key is finding a voice that meets a human need.

    Inspiration Over Jackass Theory
    The Jackass Theory refers to the carrot and the stick.  Covey asked us what kind of supervisor do you need when you have a job that you are passionate about and is using your talents and you feel you are appreciated.

    People are volunteers.  You want them to contribute their greatest, unique contribution.

    Keys to Effective Large Team
    Covey outlined the keys for effective large teams::

    • Psychologically committed.
    • Accountable to the team / everybody.
    • Culture of results.

    One person may represent the group, but accountability is to the team versus the boss.  Accountability to the team versus an individual is a knowledge worker concept.

    How To Find the Win / Win Performance Agreement
    Covey suggested an approach for finding the Win/Win for teams and organizations in terms of performance:

    1. Help them find their voice.
    2. Find out what individuals are good at and like doing and serves the needs of the business.

    When you have that, you have a win-win.  The key is to have a win/win performance agreement where it is mutually beneficial between the individual and the organization.  The individual should be able to use their full talent and passion (there voice.)

    Information is the Knowledge Worker's Disinfectant
    Covey mentioned that light is the greatest disinfectant in nature.  For the knowledge worker, it’s information.  For a knowledge worker to be effective in a team, they need information, they need the criteria for success and they need to be accountable to the group.

    The Whole Person
    According to Covey, the whole person includes four parts:

    • Body
    • Mind
    • Heart
    • Spirit

    Control-Paradigm to a Whole Person Paradigm
    Covey reminded us that today’s workforce is about directed autonomy.  You manage (things) that can’t choose.  You lead people.  People have the ability to choose.

    The key take aways are:

    • Today’s world is about breaking away from a control paradigm and shifting to one of directed autonomy.  
    • Help people find their voice.
    • You can’t buy the mind, body, heart, and spirit – they are volunteered. 
    • Use all four parts of your nature.  If you take one away, then you’re treating a person as a “thing” that you control and manage.

    Keeping Top Talent
    Covey told us about how Admirals in the Pacific were losing people to better paying jobs.  There was an exception.  Covey got to meet the group that kept their top talent.  The keys to a committed group included:

    • The culture was committed in hearts and minds.
    • The job was fulfilling and meaningful.

    Indian Talking Stick Communication
    Covey shared a technique for improving empathic listening.  It’s the Indian Talking Stick:

    • You give the stick to the other person first. 
    • You don’t get the stick back until the other person feels they are understood.
    • The purpose is not to agree, or disagree, but only to understand the speaker.

    You don’t need to use an Indian talking stick.  You can use any object.  The value of the object is that you don’t get it back until the other person feels understood.

    Industrial Age Concepts
    Throughout the session, Covey made reference to some "industrial age concepts":

    • People are an expense, tools and machines are assets.
    • Supervision is an industrial age concept.
    • One-on-one accountability to a boss.
    • Comparison systems for the basis of collaboration.

    Lighthouse Principles
    Throughout the presentation, Covey referred to some lighthouse principles that govern behavior:

    • Cultivate an abundance mentality.
    • There are four parts to our nature: body, mind, heart, and spirit
    • The whole is greater than the parts
    • Develop integrity; avoid duplicity (Don’t say one thing, but do another and if you make a promise, keep it.)

    Continuum of Communication
    Covey showed us a continuum of communication that moves from hostility and transaction-based communication to transformation:

    1. Hostility
    2. Defensive Communication (Transaction)
    3. Respectful Communication (Transaction)
    4. Synergy, Third Alternative (Transformation)

    Empathic Listening is the No. 1 Communication Skill
    Covey stated that communication is the number one skill in life.  He went on to say that empathic listening is the number one communication skill.   Covey explained that empathic listening is listening within the other person’s frame of skills.   Listening empathically is listening with the other person’s frame of reference.  The key is to listen until the other person feels heard and understood. 

    Empathic Listening Over Telling and Selling
    A satisfied need, no longer motivates.  Covey used the example of air – it’s a satisfied need.  When the other person feels heard and understood, it’s more likely they will listen to you and that you can seek a better solution, that’s mutually beneficial.  You are no longer telling and selling.

    Our Experience is the Lens We Use to Interpret Life
    Covey showed the audience three pictures.   One half of the audience looked at the first picture.  Next, the other half of the audience looked at the second picture.  Then the full audience looked at a third slide which was a composite of the first two slides.  Depending on which of the pictures you saw first, influenced what you saw in this third picture.

    The key take away here was that what you saw was influenced by your experience and that rather that impose your view, first understand the other person’s perspective – there’s a good chance, you’re both right! (This is a good case where the Indian Talking Stick could come in handy.)

    Resolving Conflict By Finding the Third Alternative
    Covey shared a technique for resolving conflict that works for him in 95% of the cases he runs into around the world.  Here’s the key steps:

    1. Put up the two points.
    2. Ask the question, “would you be willing to search for a solution that would be better than what either of us has proposed?”

    The key here is to listen to the other person first and listen empathically.  The proactive part here is that you can choose to listen to the other person first (seek first to understand, then to be understood.)

    Listening to Loved Ones
    One of the audience members asked for advice on counseling a loved one.  Covey responded with the following solution:

    1. Start by saying, “Honey, I have not spent the time to listen to you, all I’ve done is tell you and evaluate.”
    2. Listen in depth; restate to their satisfaction. (Empathic listening)
    3. After they feel understood, you ask, “Have I listened to you?  Are you willing to listen to me, as I have listened to you?”
    4. Find a 3rd alternative.

    The key here that Covey mentioned is that most people will not pay the price of listening empathically.

    7 Habits of Highly Effective People
    Covey shared a slide that framed out the seven habits of highly effective people in terms of private victory, public victory, dependence, independence, and interdependence.

    1. Be proactive.
    2. Begin with the end in mind.
    3. Put first things first.
    4. Think win-win.
    5. Seek first to understand, then to be understood.
    6. Synergize.
    7. Sharpen the saw.

    Habits 1,2,and 3 are the foundation for private victories and integrity.  Habits 4, 5, and 6 are the keys to public victories.

    Peace of Conscience Over Peace of Mind
    Covey made a distinction between peace of mind and peace of conscience.  He explained that integrity is more than honesty.  Integrity means that if you make a promise, you keep it.  If you’re honest, you might have peace of mind, but if you don’t have integrity, then you won’t have peace of conscience.  You have peace of conscience by avoiding duplicity.

    Loyalty to the Absent
    Covey made his point very simply – only talk about people as if they are there.  You can be critical, but speak as if they were there in front of you.  Don’t bad mouth them behind their back and then sweet talk them to their face.  This is a lack of integrity and creates deep duplicity inside you.  This inhibits your ability to have peace of conscience.

    Use I Messages Over You Messages
    Meet with the people you have a problem with directly.  Practice the following:

    1. Let me listen to you first.
    2. Use “I” messages vs. “you” messages.  I messages are “It’s my perception,” “in my experience,” … etc.  You messages are “you are …”

    Genuine Happiness
    Covey said the key to genuine happiness is to develop integrity.  The key to developing integrity is the first three habits (your Private Victories):

    1. Be proactive
    2. Begin with the end in mind
    3. Put first things first.

    Greek Philosophy of Influence
    Covey shared the three parts of the Greek philosophy of influence:

    1. Ethos – credibility, model trust.
    2. Pathos – restate the point of view.  (Seek first to understand …)
    3. Logos – Make your presentation. (… Then to be understood.)

    You Are the Creative Force of Your Life
    Covey challenged us to be a creative force:
    1.     Get out of victimism – You’re not a victim of your circumstances.
    2.    You are the creative force of your life.

    Empathize first.  Grow your circle of influence.  Make tremendous impact.

    The Most Important Thing You’ll Ever Do
    Covey closed with a powerful message we could take away:

    The most important thing you’ll ever do is in the four walls of your own home.

    My Favorite Part of the Session
    While I enjoyed the entire session, my favorite part was getting to meet Dr. Covey.  I shook his hand, I thanked him for helping people find their voice and he signed my post it note (sadly, I didn’t think to bring my Covey books, and all I had was my post it notes.)

    Key Actions
    After the session, I met with Srinath.  We learned a lot so we tried to turn our insights into a small set of key actions.  Here’s what we came up with:
    1. Develop personal / family mission statements and help others to do the same.
    2. Develop empathic listening and help others to do the same.
    3. Find our voices and help others find theirs. 

    Personally, I want to make more use of the Indian Talking Stick Communication technique, particularly at some of my more vibrant meetings.

    More Information

  • J.D. Meier's Blog

    My Personal Approach for Daily Results

    • 16 Comments

    I'm dedicating this post to anybody who's faced with task saturation, or needs some new ideas on managing their days or weeks... 

    One of the most important techniques I share with those I mentor, is how to manage To Dos.  It's too easy to experience churn or task saturation.  It's also too easy to confuse activities with outcomes.  At Microsoft, I have to get a lot done and I have to know what's important vs. what's urgent, and I have to get results.

    My approach is effective and efficient for me.  I think it's effective because it's simple and it's a system, rather than a silver bullet.  Here's my approach in a nutshell:

    1. Monday Vision.
    2. Daily Outcomes.
    3. Friday Reflection.

    Monday Vision
    Monday Vision is simply a practice where each Monday, I identify the most important outcomes for the week.  This lets me work backwards from the end in mind.  I focus on outcome not activities.  I ask questions such as, "if this were Friday, what would I feel good about having accomplished?" ... "if this were Friday, what would suck most if it wasn't done?" ... etc.  I also use some questions from Flawless Execution.

    Daily Outcomes
    Daily Outcomes is where each day, I make a short To Do list.  I title it by date (i.e. 02-03-07).  I start by listing my MUST items. Next, I list my SHOULD or COULD.  I use this list throughout the day, as I fish my various streams for action.  My streams include meetings, email, conversations, or bursts of brilliance throughout the day.   Since I do this at the start of my day, I have a good sense of priorities.  This also helps me deal with potentially randomizing scenarios.  This also helps batch my work.  For example, if I know there's a bunch of folks I need to talk to in my building, I can walk the halls efficiently rather than have email dialogues with them.  On ther other hand, if there's a lot of folks I need to email, I can batch that as well.

    Friday Reflection
    Friday Reflection is a practice where I evaluate what I got done or didn't and why.  Because I have a flat list of chunked up To Do lists by day, it's very easy to review a week's worth and see patterns for improvement.  It's actually easy for me to do this for months as well.  Trends stand out.  Analyzing is easy, particularly with continuous weekly practice.  My learnings feed into Monday's Vision.

    It Works for Teams Too
    Well, that's my personal results framework, but it works for my teams too.  On Monday's I ask my teams what they'd like to get done, as well as what MUST get done. I try to make sure my team enjoys the rythm of their results.  Then each day, in our daily 10-minute calls, we reset MUSTs, SHOULDs, and COULDs.  On Fridays, I do a team-based Lessons Learned exercise (I send an email where we reply all with lessons we each personally learned).

    Why This Approach Works for Me ...

    • It's self-correcting and I can course correct throughout the week.
    • I don't keep noise in my head (the buzz of all the little MUSTs, SHOULDs, COULDs that could float around)
    • Unimportant items slough off (I just don't carry them forward -- if they're important, I'll rehydrate them when needed)
    • I manage small and simple lists -- never a big bloated list.
    • It's not technology bound.  When I'm not at my desk, pen and paper work fine.
    • Keeping my working set small, let's me prioritize faster or course correct as needed.
    • It's a system with simple habbits and practices.  It's a system of constantly checkpointing course, allowing for course correction, and integration lessons learned.
    • My next actions are immediate and obvious, in relation to SHOULDs and COULDs. 

    Why Some Approaches I've Tried Don't ....

    • They were too complex or too weird
    • They ended up in monolithic lists or complicated slicing and dicing to get simple views for next actions.
    • I got lost in activity instead of driving by outcome.
    • They didn't account for the human side.
    • Keeping the list or lists up to date and managing status was often more work than some of the actual items.
    • Stuff that should slough off would, woulddn't, and would have a snowball effect, ultimately making the approach unweildy.

    I've been using this approach now for many months.  I've simplified it as I've shown others over time.  While I learn everyday, I particularly enjoy my Friday Reflections.  I also found a new enjoyment in Mondays because I'm designing my days and driving my weeks.

    My Related Post

  • J.D. Meier's Blog

    New Release: patterns & practices App Arch Guide 2.0 Beta 1

    • 16 Comments
    AppArchGuidev2

    Today we released our patterns & practices App Arch Guide 2.0 Beta 1.  This is our guide to help solution architects and developers make the most of the Microsoft platform.  It's a distillation of many lessons learned.  It’s principle-based and pattern-oriented to provide a durable, evolvable backdrop for application architecture.  It's a collaborative effort among product team members, field, industry experts, MVPs, and customers.  Keep in mind it’s Beta so there’s still moving parts and we’re processing quite a bit of feedback across the guide.  Now’s the time to bang on it.

    5 Parts

    • Part I, “Fundamentals”
    • Part II, “Design”
    • Part III, “Layers”
    • Part IV, “Quality Attributes”
    • Part V, “Archetypes – Design and Patterns”

    Chapters

    • Chapter 1 - Fundamentals of Application Architecture
    • Chapter 2 - .NET Platform Overview
    • Chapter 3 - Application Archetypes
    • Chapter 4 - Deployment Patterns
    • Chapter 5 - Arch Styles
    • Chapter 6 - Quality Attributes
    • Chapter 7 - Layers and Tiers
    • Chapter 8 - Designing Your Architecture
    • Chapter 9 - Architecture and Design Guidelines
    • Chapter 10 - Designing Services
    • Chapter 11 - Communication Guidelines 
    • Chapter 12 - Presentation Layer Guidelines
    • Chapter 13 - Business Layer Guidelines
    • Chapter 14 - Data Access Layer Guidelines
    • Chapter 15 - Service Layer Guidelines
    • Chapter 16 - Performance Engineering
    • Chapter 17 - Security Engineering
    • Chapter 18 - Mobile Application
    • Chapter 19 - Office Business Application (OBA)
    • Chapter 20 - Rich Client Application
    • Chapter 21 - Rich Internet Application (RIA)
    • Chapter 22 - Service Archetype
    • Chapter 23 - SharePoint LOB Application
    • Chapter 24 - Web Application

    Key Scenarios
    The guide helps you address the following scenarios:

    • Choose the right architecture for your application.
    • Choose the right technologies
    • Make more effective choices for key engineering decisions.
    • Map appropriate strategies and patterns.
    • Map relevant patterns & practices solution assets.

    Key Features

    • Canonical app frame - describes at a meta-level, the tiers and layers that an architect should consider. Each tier/layer is described in terms of its focus, function, capabilities, common design patterns and technologies.
    • App Types.  Canonical application archetypes to illustrate common application types.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains. Each archetype will be mapped to the canonical app frame. They are illustrative of common app types and not comprehensive or definitive.
    • Arch Frame - a common set of categories for hot spots for key engineering decisions.
    • Quality Attributes - a set of qualities/abilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
    • Principles, patterns and practices - Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices.
    • Technologies and capabilities - a description/overview of the Microsoft custom app dev platform and the main technologies and capabilities within it.

    Conceptual Framework
    At a high level, the guide is based on the following conceptual framework for application architecture:

    ArchMetaFrame2

    Reference Application Architecture
    We used the following reference application architecture as a backdrop for explaining how to design effective layers and components:

    RefAppArch

    Key Links

    Core Dev Team

    • J.D. Meier , Alex Homer, David Hill, Jason Taylor, Prashant Bansode , Lonnie Wall, Rob Boucher, Akshay Bogawat
    Contributors / Reviewers
    • Test team: Rohit Sharma, Praveen Rangarajan
    • Edit team: Dennis Rea.
    • External Contributors/Reviewers. Adwait Ullal; Andy Eunson; Christian Weyer; David Guimbellot; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; Kent Corley; Mark Baker; Paul Ballard; Norman Headlam; Ryan Plant; Sam Gentile; Udi Dahan
    • Microsoft Contributors / Reviewers. Ade Miller; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Mehran Nikoo; Michael Puleio; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Serena Yeoh; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski

    My Related Posts

  • patterns & practices App Arch Guide 2.0 Project
  • App Arch Guide 2.0 Overview Slides
  • Abstract for Application Architecture Guide 2.0
  • App Arch Meta-Frame
  • App Types
  • Architecture Frame
  • App Arch Guidelines
  • Layers and Components
  • Key Software Trends
  • Cheat Sheet: patterns & practices Catalog at a Glance Posted to CodePlex
  • Cheat Sheet: patterns & practices Pattern Catalog Posted to CodePlex
  • J.D. Meier's Blog

    New Release: patterns & practices App Arch Guide 2.0 Beta 2

    • 15 Comments

    Today we released our patterns & practices Application Architecture Guide 2.0 Beta 2.  This is our Microsoft playbook for the application platform.  It's our guide to help solution architects and developers make the most of the Microsoft platform.  It's a distillation of many lessons learned.  It’s principle-based and pattern-oriented to provide a durable, evolvable backdrop for application architecture.  It's a collaborative effort among product team members, field, industry experts, MVPs, and customers.  This is the guide that helps you understand our platform, choose among the technologies, and build applications based on lessons learned and proven practices.

    Key Changes in Beta 2
    Beta 2 is a significant overhaul of the entire guide.  We carried the good forward.  We made some key additions:

    • Added a foreword by S. Somasegar.
    • Added technology considerations throughout the guide.
    • Added technology matrixes for choosing technologies, including Presentation, Data Access, Workflow, and Integration technologies.
    • Added a new Agile Architecture Method (see chapter 4.)
    • Tuned and pruned the recommendations across the entire guide.
    • Restructured the guide for simpler parts – fundamentals, design, layers and archetypes.

    4 Parts

    • Part I, “Fundamentals”
    • Part II, “Design”
    • Part III, “Layers”
    • Part IV, “Archetypes"

    Chapters

    Appendix

    Key Scenarios
    The guide helps you address the following scenarios:

    • Choose the right architecture for your application.
    • Choose the right technologies
    • Make more effective choices for key engineering decisions.
    • Map appropriate strategies and patterns.
    • Map relevant patterns & practices solution assets.

    Key Features

    • Canonical app frame - describes at a meta-level, the tiers and layers that an architect should consider. Each tier/layer is described in terms of its focus, function, capabilities, common design patterns and technologies.
    • App Types.  Canonical application archetypes to illustrate common application types.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains. Each archetype will be mapped to the canonical app frame. They are illustrative of common app types and not comprehensive or definitive.
    • Arch Frame - a common set of categories for hot spots for key engineering decisions.
    • Quality Attributes - a set of qualities/abilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
    • Principles, patterns and practices - Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices.
    • Technologies and capabilities - a description/overview of the Microsoft custom app dev platform and the main technologies and capabilities within it.

    Conceptual Framework
    At a high level, the guide is based on the following conceptual framework for application architecture:

    ArchMetaFrame2

    Reference Application Architecture
    We used the following reference application architecture as a backdrop for explaining how to design effective layers and components:

    RefAppArch

    Key Links

    Core Dev Team

    • J.D. Meier , Alex Homer, David Hill, Jason Taylor, Prashant Bansode , Lonnie Wall, Rob Boucher, Akshay Bogawat

    Contributors / Reviewers

    • Test team: Rohit Sharma, Praveen Rangarajan
    • Edit team: Dennis Rea.
    • External Contributors/Reviewers. Adwait Ullal; Andy Eunson; Christian Weyer; David Guimbellot; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; John Kordyback; Keith Pleas; Kent Corley; Mark Baker; Paul Ballard; Peter Oehlert; Norman Headlam; Ryan Plant; Sam Gentile; Sidney G Pinney; Ted Neward; Udi Dahan
    • Microsoft Contributors / Reviewers. Ade Miller; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ian Ellison-Taylor; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Manish Prabhu; Meghan Perez; Mehran Nikoo; Michael Puleio; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Serena Yeoh; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski

    My Related Posts

  • patterns & practices App Arch Guide 2.0 Project
  • App Arch Guide 2.0 Beta 1 Release
  • App Arch Guide 2.0 Overview Slides
  • Abstract for Application Architecture Guide 2.0
  • App Arch Meta-Frame
  • App Types
  • Architecture Frame
  • App Arch Guidelines
  • Layers and Components
  • Key Software Trends
  • Cheat Sheet: patterns & practices Catalog at a Glance Posted to CodePlex
  • Cheat Sheet: patterns & practices Pattern Catalog Posted to CodePlex
  • J.D. Meier's Blog

    Using Scannable Outcomes with My Results Approach

    • 15 Comments

    Some readers asked to hear more on how I use my Scannable Outcome Lists in conjunction with My Personal Approach for Daily Results.  Here's the work flow in a nutshell ...

    Mondays
    On Mondays, I figure out my key outcomes for the week.  To do this:

    • I remind myself what I learned from last Friday's reflections.
    • I scan my calendar
    • I scan my inbox for new information
    • I scan my Scannable Outcome List for each category

    I keep my inbox completely empty, so the only items are what comes in over the weekend.  The empty inbox is particularly important for me.  I get ~150 mails directly to me each day, and I send about that, so I can't be a paper shuffler.  For my Scannable Outcome Lists, I use a flat list of posts in Outlook.  I name each post according to category: Body, Career, Mind, Project X, Project Y .. etc.

    As I scan, I use four guiding questions:

    1. What must be done? ... what should be done? ... what could be done?
    2. What customer value am I delivering? (I measure in value delivered vs. activity performed)
    3. How am I improving myself in key areas: career, mind, body, financial, relationships?
    4. What are the things that if I don't get done ... I'm screwed?  (By using the principle of contrast, I paint a picture of where I don't want to be.)

    As I scan, I also do some quick shuffling:

    I get a few outcomes from this

    • Most importantly, I have a mental picture for the week's outcomes (notice outcomes vs. activity)
    • I know my big risks for the week
    • I know my MUSTs vs. SHOULDs vs. COULDs
    • I have my list of outcomes for the day -- my Daily Outcomes.

    I have weekly iteration meetings with my team on Mondays, so this information helps me shape the outcomes with my team.

    Daily
    Each day, I construct my Daily Outcomes list.  Since I did the bulk of the work on Monday for identifying key priorities, this is a fast exercise.  In fact, it's usually 5 minutes.  It's as fast as it takes me to open a new post in Outlook, name it the current day (e.g. 02-25-07) and write the key outcomes down.  Throughout the day, I add to this.  I fish my email stream throughout the day for relevant actions and I add these to the current day's daily outcome.  If it's a longer team outcome, I list it under the relevant Scannable Outcome List.

    Fridays
    This is the day where I do more reflection.  To do this:

    • I scan my Daily Outcomes for the past week.  (This is fast because, for each day, I have a single post named by date.  For example: 02-19-07, 02-20-07, 02-21-07, 02-22-07, 02-23-07)   
    • I scan accomplishments
    • I scan my backlog

    As I scan, I ask some guiding questions:

    • If something's not getting done, then why not? ... Is there a habbit or practice I need to change for efficiency or effectiveness?
    • Do I need to change my approach for myself or the team?
    • What key lessons learned need to carry forward?

    I'll note that underlying my approach is my belief that important things should float to the top, less important should slough off, and I should be able to deal with change.  Having my Scannable Outcomes keeps me grounded in what's important vs. urgent.  This to me is the key to driving versus reacting.  If an area is slipping that I want to improve, I narrow my focus and concentrate on that.  There's few problems that withstand sustained focus.

    Well, that's the heart of the approach.  What I like most about this approach is that it's low-overhead and it works.  I've done away with over-engineered approaches, where you die the death of a 1000 paper cuts in administration.  I also like this approach because it's systematic, yet holistic and flexible.  Basically, it's designed for getting real results, in real life.

  • J.D. Meier's Blog

    Structuring Projects for Team Foundation Server

    • 14 Comments

    I've seen a few customers asking how to structure projects for Team Foundation Server.  I don't blame them.  Finding a structure that works well for you can be tricky, particularly if you don't have the benefit of hind-sight or a bunch of reference examples to draw from.

    My team spent some time this past week evaluating various approaches and lessons learned from various projects  We boiled it down to something that seems to be working well, and distills what's worked for some teams.  With the caveat that we're still evaluating, here's what we learned ...

    Solution
    Local File System

    C:\MyApp
    	\MyApp.sln
    	\Source
    		\MyAppWeb
    		\ClassLibrary1
    


    Source Control (Team Foundation Server)

    /Main
    	/Build
    	/Docs
    	/Source
    		/MyApp
    			MyApp.sln
    			/Source
    				/MyAppWeb
    				/ClassLibrary1
    			/UnitTests
    				/MyAppWebTests
    				/ClassLibrary1Tests
    	/Tests
    


    Key points
    Here's a few highlights about this approach:

    • On the client side, we explicitly creat our solution file up front instead of rely on defaults
    • The project folder containts one master solution. 
    • The project has source and unit tests.  Loading the solution for the project, loads the source and unit tests
    • The Main folder in TFS holds the project assets (Build, Docs, Source, Tests).  Using Main lets us create other folders for potential branches (Development, Production, Maintenance ... etc.)

    Repro Steps
    Here's a brief walkthrough to test using a file-based Web:

    1. Create a blank solution in VSTS
    2. Create a source folder on the file system (C:\MyApp\Source)
    3. Add new Web project (C:\MyApp\Source\MyAppWeb)
    4. Add new Class Library (C:\MyApp\Source\ClassLibrary1)


    Verify your folder structure on your File System:

    C:\MyApp
    	\MyApp.sln
    	\Source
    		\MyAppWeb
    		\ClassLibrary1
    


    Adding to TFS

    1. Add your solution to source control
    2. Create a Main folder
    3. Create a Source folder beneath Main

    Verify your folder structure in Source Control Explorer

    /Main
    	/Source
    		/MyApp
    			/MyApp.sln
    			/Source
    				/MyAppWeb
    				/ClassLibrary1
    

    More Information
    You should know that while I talked through the single solution scenario, there are additional patterns.  Here's the key patterns we see:

    1. Single solution
    2. Partitioned single solution
    3. Multi-solution

    You can find more on these patterns at Team Development with Visual Studio .NET and Visual SourceSafe.  You should also know that we have a few How Tos on structuring your projects coming your way.  We'll post them to our VSTS Guidance Project.

    Share Your Story
    If you've got lessons learned the hard way or practices to share, I'd like to hear them.   Now's a great time to share since we're actively building guidance.  Either comment here or write a post and leave a link. 

  • J.D. Meier's Blog

    The Secret of Time Management

    • 14 Comments

    The secret to time management isn't more time management hacks at all.  Here's the keys I've found:

    • Manage energy not time.
    • Make room for your big rocks.
    • Use anticipation to drive versus react.

    I often here the argument, "if I had more time for this or that, I could ..."  Well, unfortunately, having more time doesn't always mean getting more done.  It doesn't guarantee getting the right things done either.  Sometimes I get more done in an hour than I can sometimes get done in a week.  Why is that?  For me, it's actually about energy.  There's only so many hours in a day.  While I can't make more hours in a day, I can use my energy better.  Sure there's lots of interesting little time savers, but there's plenty of time wasters too.  I find the force that makes the most measurable difference is the energy and engagement I bring to the table.

    Assuming I have all my energy ready to tackle my day, I need to distinguish between urgent and important.  If I'm only reacting to urgent, then I'm missing out on opportunity to deal with important, whether that's job impact or personal growth.  The moral of the story is, if I don't make time for the big rocks, the fillers in my day won't leave room.  I like Steven Covey's perspective on urgent vs. important in his First Thing's First book.  Here's a nice summary of the popular Make Room for the Big Rocks story.

    Anticipation is a actually a skill that I haven't worked on as much as I should.  I actually plan to do a 30 Day Improvement Sprint, when the time is right.  It's funny how many recurring things happen each year, that take me by surprise.  Birthdays.  Holidays.  Reviews.  Events.  Geeze!  You'd think I'd see the patterns ;)

    Well, I do.  I've seen the pattern of me reacting to events I don't anticipate.  While the corporate ninja expects the unexpected, I also find that with a little anticipation, a stitch in time saves nine.  If I make project plans, and there's a major event I didn't account for, I shouldn't be surprised when suddenly nobody's around.  At the same time, I'm sure I can find a way to leverage the sudden spurt of energy some folks have right after mid-year discussion.

  • J.D. Meier's Blog

    The Zen of Zero Mail

    • 14 Comments

    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.

  • J.D. Meier's Blog

    New Release: patterns & practices Performance Testing Guidance for Web Applications

    • 14 Comments

    We released the final version of our patterns & practices Performance Testing Guidance for Web Applications.  This guide provides an end-to-end approach for implementing performance testing. Whether you're new to performance testing or looking for ways to improve your current performance-testing approach, you will gain insights that you can tailor to your specific scenarios.  The main purpose of the guide is to be a relatively stable backdrop to capture, consolidate and share a methodology for performance testing.  Even though the topics addressed apply to other types of applications, we focused on explaining from a Web application perspective to maintain consistency and to be relevant to the majority of our anticipated readers.

    Key Changes Since Beta 1

    • Added forewords by Alberto Savoia and Rico Mariani.
    • Integrated more feedback and insights from customer reviews (particularly chapters 1-4, 9, 14, 18)
    • Integrated learnings from our Engineering Excellence team.
    • Refactored and revamped the performance testing types.
    • Revamped and improved the test execution chapter.
    • Revamped and improved the reporting chapter.
    • Revamped the stress testing chapter.
    • Released the guide in HTML pages on our CodePlex Wiki.

    Highlights

    • Learn the core activities of performance testing.
    • Learn the values and benefits associated with each type of performance testing.
    • Learn how to map performance testing to agile
    • Learn how to map performance testing to CMMI
    • Learn how to identify and capture performance requirements and testing objectives based on the perspectives of system users, business owners of the system, and the project team, in addition to compliance expectations and technological considerations.
    • Learn how to apply principles of effective reporting to performance test data.
    • Learn how to construct realistic workload models for Web applications based on expectations, documentation, observation, log files, and other data available prior to the release of the application to production.

    Why We Wrote the Guide

    • To consolidate real-world lessons learned around performance testing.
    • To present a roadmap for end-to-end performance testing.
    • To narrow the gap between state of the art and state of the practice.

    Scope

    • Managing and conducting performance testing in both dynamic (e.g., Agile) and structured (e.g., CMMI) environments.
    • Performance testing, including load testing, stress testing, and other types of performance related testing.
    • Core activities of performance testing: identifying objectives, designing tests, executing tests, analyzing results, and reporting.

    Features of the Guide

    • Approach for performance testing.  The guide provides an approach that organizes performance testing into logical units to help you incrementally adopt performance testing throughout your application life cycle.
    • Principles and practices.  These serve as the foundation for the guide and provide a stable basis for recommendations. They also reflect successful approaches used in the field.
    • Processes and methodologies.  These provide steps for managing and conducting performance testing. For simplification and tangible results, they are broken down into activities with inputs, outputs, and steps. You can use the steps as a baseline or to help you evolve your own process.
    • Life cycle approach.  The guide provides end-to-end guidance on managing performance testing throughout your application life cycle, to reduce risk and lower total cost of ownership (TCO).
    • Modular.  Each chapter within the guide is designed to be read independently. You do not need to read the guide from beginning to end to benefit from it. Use the parts you need.
    • Holistic.  The guide is designed with the end in mind. If you do read the guide from beginning to end, it is organized to fit together in a comprehensive way. The guide, in its entirety, is better than the sum of its parts.
    • Subject matter expertise.  The guide exposes insight from various experts throughout Microsoft and from customers in the field.

    Parts

    • Part 1, Introduction to Performance Testing
    • Part II, Exemplar Performance Testing Approaches
    • Part III, Identify the Test Environment
    • Part IV, Identify Performance Acceptance Criteria
    • Part V, Plan and Design Tests
    • Part VI, Execute Tests
    • Part VII, Analyze Results and Report
    • Part VIII, Performance-Testing Techniques

    Chapters

    • Chapter 1 – Fundamentals of Web Application Performance Testing
    • Chapter 2 – Types of Performance Testing
    • Chapter 3 – Risks Addressed Through Performance Testing
    • Chapter 4 – Web Application Performance Testing Core Activities
    • Chapter 5 – Coordinating Performance Testing with an Iteration-Based Process
    • Chapter 6 – Managing an Agile Performance Test Cycle
    • Chapter 7 – Managing the Performance Test Cycle in a Regulated (CMMI) Environment
    • Chapter 8 – Evaluating Systems to Increase Performance-Testing Effectiveness
    • Chapter 9 – Determining Performance Testing Objectives
    • Chapter 10 – Quantifying End-User Response Time Goals
    • Chapter 11 – Consolidating Various Types of Performance Acceptance Criteria
    • Chapter 12 – Modeling Application Usage
    • Chapter 13 – Determining Individual User Data and Variances
    • Chapter 14 – Test Execution
    • Chapter 15 – Key Mathematic Principles for Performance Testers
    • Chapter 16 – Performance Test Reporting Fundamentals
    • Chapter 17 – Load-Testing Web Applications
    • Chapter 18 – Stress-Testing Web Applications

    Our Team

    Contributors and Reviewers

    • External Contributors and Reviewers: Alberto Savoia; Ben Simo; Cem Kaner; Chris Loosley; Corey Goldberg; Dawn Haynes; Derek Mead; Karen N. Johnson; Mike Bonar; Pradeep Soundararajan; Richard Leeke; Roland Stens; Ross Collard; Steven Woody
    • Microsoft Contributors / Reviewers: Alan Ridlehoover; Clint Huffman; Edmund Wong; Ken Perilman; Larry Brader; Mark Tomlinson; Paul Williams; Pete Coupland; Rico Mariani

    My Related Posts

  • J.D. Meier's Blog

    Application Architecture Guide 2.0 Final Release

    • 14 Comments

    We released our final release of the patterns & practices Application Architecture Guide 2.0 on Codeplex.  It's the "Microsoft playbook for application architecture."  This is our guide to help solution architects and developers make the most of the Microsoft platform.  It's a distillation of many lessons learned.  It’s principle-based and pattern-oriented to provide a durable, evolvable backdrop for application architecture.  It's a collaborative effort among product team members, field, industry experts, MVPs, and customers.

    Key Links

    Key Changes Since Beta 2

    • Added a foreword by Scott Guthrie.
    • Incorporated feedback from internal and external reviewers.
    • Tuned and pruned the recommendations across the entire guide.

    Architecture Meta Frame (AMF)
    The Architecture Meta Frame integrates context, application types, architecture styles, and an architecture frame to help map out the application architecture space. 

    ArchitectureMetaFrame

    The Architecture Meta Frame serves as a durable, evolvable backdrop for the guidance in the patterns & practices Application Architecture Guide 2.0.

    Key Scenarios for the Guide

    • Choose the right architecture for your application.
    • Choose the right technologies.
    • Make more effective choices for key engineering decisions.
    • Map appropriate strategies and patterns.
    • Map relevant patterns & practices solution assets.

    Key Features of the Guide

    • Canonical Application Frame.  Describes at a meta-level, the tiers and layers that an architect should consider. Each tier/layer is described in terms of its focus, function, capabilities, common design patterns and technologies.
    • Application Types.  Canonical application archetypes to illustrate common application types.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains. Each archetype will be mapped to the canonical app frame. They are illustrative of common app types and not comprehensive or definitive.
    • Architecture Frame.  A common set of categories for hot spots for key engineering decisions.
    • Quality Attributes.  A set of qualities/abilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
    • Principles, patterns and practices.  Using the frames as backdrops, the guide overlays relevant principles, patterns, and practices.
    • Technologies and capabilities.  A description and overview of the Microsoft application development platform and the main technologies and capabilities within it.

    Team
    Here's the team that brought you this guide:

    • Core Dev Team: J.D. Meier , Alex Homer, David Hill, Jason Taylor , Prashant Bansode , Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
    • Test Team - Rohit Sharma, Praveen Rangarajan
    • Edit Team - Dennis Rea.

    Contributors / Reviewers
    One of our themes throughout the guide was "Stand on the shoulders of giants."  We leveraged a lot of experts inside and outside of Microsoft:

    • External Contributors/Reviewers - Adwait Ullal; Andy Eunson; Brian Sletten; Christian Weyer; David Guimbellot; David Ing; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; John Kordyback; Keith Pleas; Kent Corley; Mark Baker; Paul Ballard; Peter Oehlert; Norman Headlam; Ryan Plant; Sam Gentile; Sidney G Pinney; Ted Neward; Udi Dahan
    • Microsoft Contributors / Reviewers - Ade Miller; Amit Chopra; Anna Liu; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; Dan Reagan; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ian Ellison-Taylor; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Luke Nyswonger; Manish Prabhu; Meghan Perez; Mehran Nikoo; Michael Puleio; Mike Francis; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Seema Ramchandani; Serena Yeoh; Simon Calvert; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski
  • J.D. Meier's Blog

    ASP.NET Code Samples Collection

    • 14 Comments

    image

    The ASP.NET Code Samples Collection is a roundup and map of ASP.NET code samples from  various sources including the MSDN library, www.ASP.net, Code Gallery, CodePlex, and Microsoft Support.

    You can add to the ASP.NET code examples collection by sharing in the comments or emailing me atFeedbackAndThoughts at live.com.

    Common Categories for ASP.NET Code Samples
    The ASP.NET Code Samples Collection is organized using the following categories:

    image

     

    ASP.NET Code Samples Collection

    Category

    Items

    Sample Applications

    ASP.NET MVC

    AJAX / jQuery

    All-in-One Code Framework

    Code Gallery

    Microsoft Support

    Authentication

    Code Gallery

    Customer Support

    Authorization

    Code Gallery

    CSS 2

    Data Access

    All-in-One Code Framework

    Code Gallery

    Exception Management

    Code Gallery

    Microsoft Support

    JavaScript / JSON

    Code Gallery

    Logging and Instrumentation

    patterns & practices

    MVC

    Code Gallery

    Navigation

    Codeplex

    Request Processing

    ASP.NET Developer Center (www.ASP.NET)

    State / Session Management

    Code Gallery

    Validation

    Code Gallery

    Visual Studio and ASP.NET Development

    Code Gallery

    Microsoft Support

     

    My Related Posts

  • J.D. Meier's Blog

    How NOT To Make Money Online

    • 14 Comments

    I mentor several folks on how to make money online, either because they are trying to supplement their income, or take their game to the next level, or simply trying to reduce the worry around losing their job.  

    An interesting pattern is that many of the folks that I know that make a second (3rd, 4th, 5th) income online, show up strong in many ways.     Their second source of income is always a “passion business.”   They find a way to monetize what they love in a way that’s sustainable and creates a ton of value for their tribe of raving fans.  

    They end up spending more time in their art, so they recharge and renew, and show up fresh at work because they found a way to spend more time doing what they love (it’s an interesting question when you ask the question, “What do you want to spend more time doing?”, and then actually do it Winking smile

    One of the most important success patterns I see is that people do what they would do for free, but pay attention to what people would pay them for.   This does two things:

    1. It forces them to figure out what they really do love and can do day in and day out (where can they be strong, all day long)
    2. It forces them to be smarter at business (otherwise, it’s not sustainable and it slowly dies)

    I see people succeed at making money online by doing lots of experimentation and continuous learning.  The ones that do the best, learn from success AND failures.   The ones that create truly outstanding success, learn the patterns of failure to avoid, and the patterns of success to do more of.

    Lucky for me, I got to see several people right around me making $10,000, $20,000, etc. a month online, and they happily shared with me what they were doing, including what was working and what was not.   The variety was pretty amazing, until I started to see the patterns.  As I started to see the patterns, what surprised me the most is how so many people fail to make money online because “they try to make money online” – it’s like chasing happiness, and having it always evade your grasp.

    How ironic.

    There are so many ways NOT to make money online.  In fact, they are worth enumerating because people still try them and get incredibly frustrated and give up.

    Here are 50 Ways How NOT To Make Money Online.

    It’s serious stuff.

    I took a pattern-based approach, so that it’s easy to see the principle behind each recipe for failure. 

    You can actually apply many of the insights whether it’s an online or offline business, and whether you are a one-man band, or a business partnership, or working in a corporation.  

    It puts a distillation of many business basics, great business lessons, and business skills at your fingertips.

    I’m hoping that more people can be entrepreneurs and create their financial freedom by doing more of what they love, in a business-smart way.

    Also, I’m hoping this helps more people get their head around the idea that we’re in a new digital economy and the ways to make a living are changing under our feet.

    The future is here and it belongs to those that create it and shape it.

    Own your destiny.

  • J.D. Meier's Blog

    Scannable Outcome Lists

    • 13 Comments

    I realized another key for helping manage To Dos.  It's having scannable lists of outcomes.  I keep flat lists of outcomes chunked by area or project.  These aren't the next actions.  They're the results I want to accomplish.  They act as prompts to help me quickly identify next actions.

    I keep lists for all my various areas for outcomes:

    • Continuous Improvement: mind, body, career, relationships, financial
    • Projects
    • Ideas
    • Goals and committments
    • Recurring items (such as backup, status reports)
    • Habbits or practices I'm developing
    • Training
    • Information sources (places or people that I routinely browse or pull information from)

    In a single view, I can first scan all of my areas.  I can then quickly scan any particular area for outcomes.  What I like about this approach is that I get a bird's-eye view of all the areas that I'm working on.  Because I like to focus on a given area for results, I could easily neglect areas.  This approach keeps important things on my radar and helps keep me balanced.

    I use my scannable outcome lists in conjunction with my personal approach for daily results.

    Related Posts

  • J.D. Meier's Blog

    30 Day Improvement Sprints

    • 12 Comments

    I'm using 30 day improvement sprints as a way to sharpen my skills.  I pick a focus to work on and I committ to improving it for a 30 day timebox.  Committing to 30 days of improvement in a focused area, is easier to swallow than changing for life.  However, improving an area for 30 days, is actually life changing.

    With 30 days, persistence and time are on my side.  It's a big enough time box that I can try different techniques, while building proficiency.  Using 30 days makes working through hurdles easier too.  A lot of the hurldles I hit in my first week, are gone by week 2.  Little improvements each day, add up quickly.  I look back on how many things I tried for a week and stopped thinking I hadn't made progress.  The trick was, I didn't get to week 2 to see my results.  Lesson learned!

    Related Posts

  • J.D. Meier's Blog

    Now Available: patterns & practices Application Architecture Book

    • 12 Comments

    AAG2FrontCover-Small The Microsoft Application Architecture Guide, 2nd edition, is now available on Amazon and should be available on the shelf at your local bookstores soon.  The PDF was downloaded ~180,000 times.  This is the Microsoft platform playbook for application architecture.  You can think of it as a set of blueprints, and as your personal mentor for building common types of applications on the Microsoft platform:  mobile, RIA, services, and Web applications.

    The backbone of the guide is an information model for the application architecture space.  It’s a durable and evolvable map to give you a firm foundation of principles, patterns, and practices that you can overlay the latest technologies.  It’s your “tome of know-how.”  While it’s not a step-by-step for building specific applications, it is a pragmatic guide for designing your architecture, with quality attributes, key software principles, common patterns, and architectural styles in mind.  It’s holistic and focused on the key engineering decisions where you face your highest risks and most important choices.

    Key Features of the Book
    The book has several compelling features for slicing and dicing the application architecture body of knowledge:    

    • Canonical Frame.  This describes at a meta-level, the tiers and layers that an architect should consider. Each tier/layer will be described in terms of its focus, function, capabilities, common design patterns and technologies.
    • Application Types.  These are canonical application archetypes to illustrate common application types: Mobile, Rich Client, RIA, Services, and Web applications.  Each archetype is described in terms of the target scenarios, technologies, patterns and infrastructure it contains. Each archetype is mapped to the canonical app frame. They are illustrative of common application types and not comprehensive or definitive.
    • Quality attributes.  This is a set of qualities and capabilities that shape your application architecture: performance, security, scalability, manageability, deployment, communication, etc.
    • Cross-cutting concerns.  This is a common set of categories for hot spots for key engineering decisions: Authentication, Authorization, Caching, Communication, Configuration Management, Exception Management, Logging and Instrumentation, State Management, and Validation.
    • Step-by-Step Design Approach.
    • Principles, patterns, and practices.   Using the application types, canonical frame, and cross-cutting concerns as backdrops, the guide provides an overlay of relevant principles, patterns, and practices.
    • Technologies and capabilities.  The guide provides an overview and description of the Microsoft custom application development platform and the main technologies and capabilities within it.

    Contents at a Glance
    The full Microsoft Application Architecture Guide is available for free on MSDN in HTML.  This is the contents of the guide at a glance:

    Chapters

    Appendices

    The Team
    Here is the team that brought you the guide:

    • Core Dev Team: J.D. Meier, Alex Homer, David Hill, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr, Akshay Bogawat
    • Test Team - Rohit Sharma, Praveen Rangarajan, Kashinath TR, Vijaya Jankiraman
    • Edit Team - Dennis Rea
    • External Contributors/Reviewers - Adwait Ullal; Andy Eunson; Brian Sletten; Christian Weyer; David Guimbellot; David Ing; David Weller; Derek Greer; Eduardo Jezierski; Evan Hoff; Gajapathi Kannan; Jeremy D. Miller; John Kordyback; Keith Pleas; Kent Corley; Mark Baker; Paul Ballard; Peter Oehlert; Norman Headlam; Ryan Plant; Sam Gentile; Sidney G Pinney; Ted Neward; Udi Dahan
    • Microsoft Contributors / Reviewers - Ade Miller; Amit Chopra; Anna Liu; Anoop Gupta; Bob Brumfield; Brad Abrams; Brian Cawelti; Bhushan Nene; Burley Kawasaki; Carl Perry; Chris Keyser; Chris Tavares; Clint Edmonson; Dan Reagan; David Hill; Denny Dayton; Diego Dagum; Dmitri Martynov; Dmitri Ossipov; Don Smith; Dragos Manolescu; Elisa Flasko; Eric Fleck; Erwin van der Valk; Faisal Mohamood; Francis Cheung; Gary Lewis; Glenn Block; Gregory Leake; Ian Ellison-Taylor; Ilia Fortunov; J.R. Arredondo; John deVadoss; Joseph Hofstader; Koby Avital; Loke Uei Tan; Luke Nyswonger; Manish Prabhu; Meghan Perez; Mehran Nikoo; Michael Puleio; Mike Francis; Mike Walker; Mubarak Elamin; Nick Malik; Nobuyuki Akama; Ofer Ashkenazi; Pablo Castro; Pat Helland; Phil Haack; Rabi Satter; Reed Robison; Rob Tiffany; Ryno Rijnsburger; Scott Hanselman; Seema Ramchandani; Serena Yeoh; Simon Calvert; Srinath Vasireddy; Tom Hollander; Wojtek Kozaczynski

    Application Architecture Knowledge Base
    The guide was developed in conjunction with our Application Architecture Guide v2.0 Knowledge Base Project. The knowledge base project was used to inform and steer the guide during its development. The Application Architecture Knowledge Base includes a large amount of material that expands on specific topics in the main guide. It also includes draft material from the main guide that is targeted and packaged for more specific audiences, such as the Pocket Guide series.

    Key Links at a Glance
    Here are the key links at a glance:

  • J.D. Meier's Blog

    Time Management Quotes

    • 12 Comments

    Time management is a key skill for work and life.  I’ve posted my collection of Time Management Quotes on Sources of Insight.   While organizing my collection of quotes, I got clarity on a handful of lessons for time management:

    • Time is what you make of it. 
    • You don’t have time, you make it. 
    • It’s your most valuable resource. 
    • Invest time.  Investing in your time is investing in your life. 
    • Don’t dwell on the train you missed.  Catch the next train.  
    • Time changes what’s important. You can’t buy time. 
    • Time is all we have.  
    • Time is a teacher.
    • Time is a judge. 
    • Time is a healer. 
    • Time is a friend.
  • J.D. Meier's Blog

    Mapping Out the Microsoft Application Platform at a Glance

    • 12 Comments

    “People only see what they are prepared to see.” - Ralph Waldo Emerson

    At the beginning of the year, I like to take a quick survey of the Microsoft application platform.  It helps me figure out where to put my bets and where to explore.  It’s a “see the forest, from the trees” exercise.

    And oh, what a forest it is.  The beauty is it covers a wide spectrum and supports so many scenarios.  The challenge is finding your way around.  To find my way around, I map out the platform and I think in terms of application types:

    • Web applications
    • Mobile applications
    • Rich Internet Applications (RIA)
    • Rich Clients
    • Web Services

    By thinking about deployment targets such as cloud or desktop or browser or phone, etc. it makes it very easy to get in the ballpark in terms of context and technologies very quickly.  From there, I can worry about things like presentation or data access stacks or language platforms (native, .NET, or scripting.)   It’s also a quick way to explore relevant quality attributes (security, performance, reliability) or evaluate architectural styles.  In other words, it’s a way to hack through information overload and cut to the chase.

    Microsoft Application Platform at a Glance
    This is my draft map of the platform.   It’s a strawman that I use to walk the platform, find clusters of technologies, figure out what’s changed, and evaluate the latest story.  It’s easier for me to have conversations about the platform with customers or product teams when I start with a shared frame.  The hard part is putting the initial map together.  The easy part is improving it through feedback.  If something is missing, it’s easy to add.  If something is wrong, it’s easy to fix.

    As simple as the map looks, it compacts a lot of information.  I stuck the code names in where I could find them.   Enjoy …

    Category Items
    Application Infrastructure
    ALM (Application Life-Cycle Management)
    App Frameworks / Extensions
    Cloud
    Collaboration / Integration / Workflow
    Data Access
    Database Server
    Development Tools
    Games
    Identity
    Languages

     

    Mobile
    Modeling
    OBA (Office Business Applications)
    Parallel
    Rich Client
    Rich Internet Applications (RIA)
    Services
    Web
    Web Server
    Windows Server

    Where To Find Out More
    I’m a fan of teaching people to fish, as well as giving some starter fish.  Aside from people, events, and social media, the three best ways I know to figure out what’s happening on the platform are Wikipedia, Channel9, and the MSDN Dev Centers.  I started you out with some pages below …

    Wikipedia

    Channel9 Training Centers

    MSDN Dev Centers

  • J.D. Meier's Blog

    The Power of Blue Books for Platform Impact

    • 12 Comments

    WhyBlueBooksForPlatformImpact

    Why invest in prescriptive guidance or “Blue Books” for Microsoft platform impact?  While the answer is obvious to many, it’s not as obvious to others, so I’ll attempt to paint the picture here.

    Building Secure ASP.NET Applications was the first “blue book” at Microsoft, but it was Improving Web Application Security that really made people take notice (it was downloaded more than 800,000 times in its first six months and it changed how many people in the industry thought about security and it changed their approach.  It’s also the guide that helped many customers switch from Java to .NET.)  An interesting note about Building Secure is that the Forms Authentication approach was baked into the Whidbey platform (ASP.NET 2.0.)

    Blue Books Shape Platform Success
    Blue Books have played a strategic role in both shaping the platform and driving exponential customer success on the platform.   They’ve helped us find and share platform best practices, create mental models and conceptual frameworks, and create systems and approaches that scale success and create powerful ecosystems.  They’ve also helped us spring up offerings for our field, reduce support costs, and win competitive assessments.

    Ultimately, Blue Books give us a strategic look at platform pain points as well as competitive analysis, and a consolidated set of success patterns to run with.

    From patents to methodologies to better ways for better days, “Blue Books” have been the definitive way for improving platform success in a sustainable way – a durable backdrop that provides continuity of the platform over time.

    Benefits at a Glance
    Here is a quick rundown of some of the key ways that Blue Books have helped Microsoft and customers win time and again:

    • Platform Playbooks - Serve as platform playbooks for Microsoft, field, support, customers, and partners
    • Shaping the Platform and Tools – Shape the platform and tools by testing out patterns and practices as well as methodologies and methods with the broad community before baking into the platform and tools.
    • Scaling Success Patterns - Broadly scale proven practices and success patterns for predictable results
    • Roadmaps for Platform Adoption - Lay out roadmaps for technology adoption as well as success patterns
    • Competitive Wins - Win competitive assessments (the Blue Books have played a critical role in influencing industry analysts and in winning competitive assessments time and again)
    • Innovation for Exponential Success - Innovate in methodologies and methods for exponentially improving customer success on the platform
    • Frame and Name the Problem Domains – Frame out and name the problem spaces and domains (when you frame out and name a space, whether through patterns or pattern languages, you create a shared vocabulary and model that empowers people to make forward progress at a faster pace and more deliberate way.)

    The list goes on, but the essence is that these playbooks help customers make the most of the platform by sharing the know-how through prescriptive architectural guidance.

     

    Example Blue Books
    I won’t speak for all the Blue Books at Microsoft, but since I created the bulk of the Blue Books, it’s easy for me to speak from the ones I created.   Here is a summary of the impact that can help you better understand the value of Blue Books from a broader perspective.

     

    Blue BookResults
    Application Architecture Guide, Second Edition
    • The platform playbook for Microsoft’s application platform
    • Canonical application types for Web app, RIA, Rich Client, Mobile, and Web Services
    • Baseline best practices for application architecture and design
    • Templates baked into Visual Studio
    • Praise from Ray Ozzie
    • Praise from Grady Booch
    • Conceptual Framework for Application Architecture
    Building Secure ASP.NET Applications
    (aka The first official Microsoft “Blue Book”)
    • End-to-End Application Scenarios for Web Apps
    • Created a highly reusable set of Application Patterns
    • Baseline architectures and success patterns shared broadly inside and outside Microsoft
    Improving .NET Application Performance and Scalability
    (aka “Perf and Scale”)
    • Repeatable performance model
    • Created a highly-effective method for performance modeling
    • Performance Engineering approach baked into Visual Studio
    • 4 patents filed for performance engineering
    • Performance Engineering approach widely adopted inside and outside Microsoft
    • Used for offerings in Microsoft Consulting Services
    • Rules baked into Microsoft Best Practices Analyzer Wizard (MBPA)
    Improving Web Application Security
    (aka “Threats and Countermeasures”)
    • Repeatable security model for Web applications
    • Created a highly-effective method for threat modeling
    • Created a knowledge base of threats, attacks, vulnerabilities, and countermeasures
    • Security model for network, host, and application security
    • Security Engineering approach baked into Visual Studio
    • 4 patents filed for application security
    • Used for offering in Microsoft Consulting Services
    • Rules baked into Microsoft Best Practices Analyzer Wizard (MBPA)
    Improving Web Services Security
    • Security model for Web Services
    • End-to-End Application Scenarios for Web Services
    • Created a highly reusable set of Application Patterns
    • Baseline architectures and common success patterns shared broadly inside and outside Microsoft
    Performance Testing Guidance for Web Applications
    • Created a highly-effective method for performance testing Web applications
    • Performance Testing approach widely adopted inside and outside Microsoft
    • Used for offerings in Microsoft Consulting Services
    Security Engineering Explained
    • Created a model for baking security into the life cycle
    • Helped shift thinking from security "reviews" to "inspections"
    • Overlays security-specific activities on product development life cycles
    Team Development and Visual Studio Team Foundation Server
    • Created a glide-path for TFS adoption (source control, build, task tracking / reporting, process)

     

    End-to-End Application Scenarios and Solutions
    Here’s an example of an application scenario.  We use application scenarios to show how to solve end-to-end problems.  It’s effectively a baseline architecture based on successful solutions.   Here is an example from our WCF Security Guide:

    Scenario

    ExampleScenario

    Solution

    ExampleSolution

     

     

     

    We share them as sketches like on a whiteboard so they are easy to follow.

    Methodologies and Methods
    Methodologies, frameworks and approaches are nice ways to wrap up and package a set of related activities that you can use a baseline for your process or to overlay on what you already do.  Methods are step-by-step techniques for producing effective results and they are a powerful way to share expertise.   Methodologies and methods are how we create exponential results and amplify our impact.

    Example Methodology – Agile Security Engineering

    ExampleMethodologyAgileSecurityEngineering

    Example Method – Threat Modeling Technique

    ExampleMethodThreatModeling

     

    Conceptual Frameworks and Mental Models
    We use mental models, conceptual frameworks, and information models to learn and share the problem space.

    Example Conceptual Framework for Web Security

    ExampleConceptualFramework

    Example Mental Model for Application Architecture

    ExampleMentalModelAppArch

     

    Hot Spots
    Hot Spots are basically heat maps of pain points and opportunities.  We use them as a lens to help us see customer pain points and opportunities, and to prioritize our investments.  They also help us identify, organize, and share scenarios.  Hot Spots also help us organize and share principles, patterns, practices, and anti-patterns for key engineering decisions.   Hot Spots are a powerful tool for product planning and for building prescriptive guidance, platform, and tools.

    Example of Security Hot Spots

    ExampleSecurityHotSpots

    Example of Architecture Hot Spots

    ExampleArchitectureFrame

    Scenarios Organized by Architecture Hot Spots

    ExampleArchitectureFrameTable

    Competitive Wins
    Our Blue Books have consistently been used for winning competitive assessments or at least making significant impact in key areas.  Whether there’s a gap in the tools or a gap in the platform, prescriptive guidance can smooth it out by creating a success path for customers.

    Example of beating IBM in Every Category Around Guidance

    ExampleCompetitiveResults  

    You can find a deeper rundown on the competitive assessments in my previous posts. 

    The Bottom Line on Blue Books
    The bottom line for me is that Blue Books have helped shape platforms and tools and to create glide-paths for customers through mental models, methodologies, and methods.  They’ve been a powerful way to share success patterns, help paint the bigger picture, and connect the dots across platform, tools, and guidance. 

    The adoption and usage has accelerated over the years to the point where just about any customer in the application development space that works with the Microsoft platform is familiar with either patterns & practices for the Microsoft Blue Books.

    Blue Books have been the freemium offering from Microsoft that have paved the way for premium experiences.

  • J.D. Meier's Blog

    The Zen of Results Free E-Book

    • 12 Comments
    TheZenOfResultsEBook

    Personal productivity is one of my passions.  As one of my little experiments while I'm out of the office, I put together The Zen of Results E-Book.  I turned a slide deck into a PDF to see if it makes it easier to share.  It's brief (17 pages) and quick to flip through.  More importantly though, it captures the heart of how you can improve your productivity, in a principle and pattern based way.  It's a lightweight approach and it's easy to tailor for your situation. 

    The Approach in a Nutshell
    Here's the keys to the approach:

    • Scannable outcomes to guide your activities and tasks.
    • Life frame to organize and balance the important hot spots in your life.
    • Monday Vision, Daily Outcomes, Friday Reflection to guide your week.
    • Daily Outcomes to  guide your day.

    Thoughts on Productivity
    I'm not a fan of productivity for productivity's sake.  Instead, I care that I'm working on the right things,  I care that the time I spend working, is as efficient and effective as possible.  I also care that I can carve out time in a way to achieve work/life balance.  I care more about outcomes than activities and I work backwards from the end in mind.  To put it another way, I put more emphasis on learning, improving, and enjoying, than simply going through the motions or putting in my time.   I'll also add -- I like my downtime and my free time ;)

    What The Zen of Results is Based On
    I'd like to say it's based on Getting Things Done, but somehow we just never crossed-paths.  Instead, it's born from a combination of the school of hard knocks, masters at Microsoft, software development practices, and my mentoring experience.   when I first joined Microsoft, I was overwhelmed.  I was on a sink or swim team with lots of trials by fire.  I wanted to swim.  Long story short, I learned from anyone and everyone around me.  In fact, I started seeking out people in the company and comparing email practices, storing information, and how to become more effective.  I learned a lot.

    Software Engineering Meets Project Management Meets Productivity
    When I joined patterns & practices some years ago, a few things happened.  I had to figure out project management in the context of a competitive environment where the ultimate judge is results.  Not just the results of what you produce, but how you produce results.  How many dead bodies and what sort of wake do you leave behind? 

    Meanwhile, Agile was becoming increasingly pervasive and I had the benefit of working with folks like Ward Cunningham and Peter Provost.  They taught me lot about the principles and concepts behind Agile.  Somewhere along the way, I had figured out how to catalog, manage, and prioritize an endless stream of potential activity from various sources: my teams, my manager, my inbox, my head. 

    I learned that improving an hour, improved a day, improved a week, improved a month.  I learned the value of sharing lessons learned.  I learned the value of biting off what you could chew.  I learned that it's better to finish what's on your plate and go up for seconds versus overflow your plate up front.  I weaved in my timeboxing lessons from performance and my compartmentalizing lessons from security. 

    I used my lessons from my manager to focus on strengths over weaknesses to keep a high level of energy.  Bottom line, the sum is more than the parts, but it's an integration of software development, project management and personal productivity with an emphasis on meaningful work for a meaningful life ... by design (that's my inner engineer talking).

    Enjoy!

  • Page 1 of 44 (1,076 items) 12345»