J.D. Meier's Blog

Software Engineering, Project Management, and Effectiveness

  • J.D. Meier's Blog

    Prompt Yourself to New Levels of Amazing Personal Productivity

    • 6 Comments

    The most powerful pattern in Agile Results is:
    Monday Vision, Daily Wins, Friday Reflection

    I introduce Agile Results in my best-selling book on time management Getting Results the Agile Way.  (For a quick overview, benefits, testimonials, and videos, check out the landing page for Getting Results the Agile Way.)

    The Monday Vision, Daily Wins, Friday Reflection pattern a big deal.

    Why?

    Because it creates a simple approach for personal results in work and life.

    You learn how to quickly flow value each day and each week.  Through Friday Reflection, you add a learning loop.   By setting simple targets, chunking things down, and delivering little chunks of value, you get better and better at driving results.

    You’ll astound yourself, and you’ll awaken new levels of resourcefulness and productivity you didn’t even know you had.

    How do you get started?

    It’s real simple.

    Add 3 Reminders to Your Calendar

    One of the simplest ways to build your Agile Results habit is to add 3 reminders to your calendar:

    1. Add a reminder on Monday Morning.  Call it Monday Vision: "What are your 3 Wins for this week?"
    2. Add a reminder to each day.  Call it Daily Wins: "What are your 3 Wins for today?
    3. Add a reminder to Friday:  Call it Friday Reflection:  "What are 3 things going well? What are 3 things to improve?"

    You can literally prompt yourself to better performance.

    It’s so simple in fact that you have to wonder how could something so simple create such profound results.

    In fact, if you’re not sure how significant this can be to your life, watch Alik on Getting Results the Agile Way (Video), and how it changed his life.

    Keep in mind, there is a lot to Agile Results.

    But you don’t need it all at once.

    Start small and go from there.

  • J.D. Meier's Blog

    Waterfall to Agile

    • 6 Comments

    As I help more people go Agile, I try to simplify the most important concepts.

    For me, one of the most important changes in Agile is what it means to the product development cycle. 

    I think a picture is worth a 1,000 words.  I’ve put together a couple of simple visuals to show what it means to go from a Waterfall development approach to an Agile development approach.

    image

    Contrast the Waterfall Model with the Agile Model:

    image

    With these visuals, I attempted to show a couple of key ideas:

    1. Waterfall uses serialized phases, where one activity doesn’t start until the previous activity completes.  Agile shifts to a focus on iterations, where each iteration performs activities in parallel (such as requirements, design, development, and test).
    2. Each iteration produces a build.  Rather than wait until the end, throw something over the wall, and hope it meets expectations, the output of each iteration can be used to validate with users, as well as deliver incremental value.
    3. By moving away from Big Design Up Front (BDUF) and way from Big Bang at the end, Agile helps to de-risk the project, respond to changing requirements, and flow value along the way.

    If you need to keep up with the pace of change, deal with changing requirements, keep up with user demands, while shipping value faster, Agile might be what you’re looking for.

  • J.D. Meier's Blog

    How Employees Lost Empathy for their Work, for the Customer, and for the Final Product

    • 6 Comments

    “In most cases being a good boss means hiring talented people and then getting out of their way.” -- Tina Fey

    The Digital Revolution marked the beginning of the Information Age.

    The Information Age, or Digital Age, or New Media Age, is a shift away from the industrial revolution to an economy based on information computerization.  Some would say, along with this shift, we are now in a Knowledge Economy or a Digital Economy. 

    This opens the door to new ways of working and a new world of work to generate new business value and customer impact.

    But what did the Industrial Age do to employees and what paradigms could limit us in this new world?

    In the book The Future of Management, Gary Hamel walks through how industrialization and large Enterprises have created a disconnect between employees and their customers, their final product, and the big financial picture.  And in the process, he argues, this had led to disengaged employees, crippled innovation, and inflexible organizations.

    If you don’t know Gary Hamel, he’s been ranked the #1 influential business thinker by the Wall Street Journal.

    According to Hamel, what we traded for scale and efficiencies created gaps between workers and employees and gaps between employees and their customers, the product, the financial impact, and … a diminished sense of responsibility for quality and efficiency.

    Maybe We Have Managers Because We Have Employees

    Do managers exist because employees do?

    Via The Future of Management:

    “Here's a thought.  Maybe we need 'managers' because we have 'employees.'  (Be patient, this is not as tautological as it sounds.)  Think about the way computers are dependent on software.  PCs aren't smart enough to write their own operating instructions, and they sit idle until a user sets them to work.  Perhaps the same is true for employees.”

    Did We Manufacture a Need for Managers?

    When we manufactured employees, did we manufacture a need for managers?

    Via The Future of Management:

    “Earlier, I talked about the invention of 'the employee.' What happened in this process, at the dawn of the 20th century?  How did work life change as individuals left their farms and workshops to be absorbed into large-scale organizations?  In manufacturing employees, did we manufacture a need for managers as well?  I think so.  If we understood how this came about, we will gain clues into how we might learn to manage without managers -- or, at least, with a lot fewer of them.”

    Disconnected from the Customer

    As the size and scale of industrial organizations grew, so did the disconnect between employees and their final customers.

    Via The Future of Management:

    “In pre-industrial times, farmers and artisans enjoyed an intimate relationship with their customers.  The feedback they received each day from their patrons was timely and unfiltered.  Yet as industrial organizations grew in size and scale, millions of employees found themselves disconnected from the final customer.  Robbed of direct feedback, they were compelled to rely on others who were closer to the customer to calibrate the effectiveness of their efforts and to tell them how they could better please their clients.”

    A Diminished Sense of Responsibility for Producer Quality and Efficiency

    Without a connection to the customer, employees lose empathy for their work, for the customer, and for the final product.

    Via The Future of Management:

    “As companies divided themselves into departments and functions, employees also became disconnected from the final product.  As tasks became narrower and more specialized, employees lost their emotional bond with the end product.  The result? A diminished sense of responsibility for producer quality and efficiency.  No longer were workers product craftsmen, now they were cogs in an industrial machine over which they had little control.”

    Employees No Longer Have a System Wide View of the Production Process

    It’s hard to make changes to the system when you no longer have a system wide view.

    Via The Future of Management:

    “Size and scale also separate employees from their coworkers.  Working in semi-isolated departments, they no longer had a system wide view of the production process.  If that system was suboptimal, they had no way of knowing it and now way of correcting it.”

    The Gap Widens Between Workers and Owners

    People at the top don’t hear from the people at the bottom.

    Via The Future of Management:

    “Industrialization also enlarged the gulf between workers and owners.  While a 19th-century apprentice would have had the ear of the proprietor, most 20th-century employees reported to low-level supervisors.  In a large enterprise a junior employee could work for decades and never have the chance to speak one-on-one with someone empowered to make important policy decisions.”

    The Scoreboard is Contrived

    Scoreboards tell employees how they are doing their jobs, but not how the company is doing overall.

    Via The Future of Management:

    “In addition, growing operational complexity fractured the information that was available to employees.  In a small proprietorship, the financial scoreboard was simple and real time; there was little mystery about how the firm was doing.  In a big industrial company, employees had a scoreboard but it was contrived.  It told workers how they were doing their jobs, but little about how the company was doing overall.  With no more than a knothole view of the company's financial model, and only a sliver of responsibility for results, it was difficult for an employee to feel a genuine burden for the company's performance.”

    Industrialization Disconnects Employees from Their Own Creativity

    Standardizing jobs and processes limits innovation in the jobs and processes.  They are at odds.

    Via The Future of Management:

    “Finally, and worst of all, industrialization disconnected employees from their own creativity.  In the industrial world, work methods and procedures were defined by experts and, once defined, were not easily altered.  No matter how creative an employee might be, the scope for exercising that gift was severely truncated.”

    The Pursuit of Scale and Efficiency Advantages Disconnected Workers from Their Essential Inputs

    With the disconnect between employees and their inputs, there was a natural need for the management class.

    Via The Future of Management:

    “To put it simply, the pursuit of scale and efficiency advantages disconnected workers from the essential inputs that had, in earlier times, allowed them to be (largely) self-managing -- and in so doing, it made the growth on an expansive managerial class inevitable.”

    Employees Don’t Lack Wisdom and Experience

    Employees don’t lack wisdom and experience.  They just lack information and context.

    Via The Future of Management:

    “To a large extent, employees need managers for the same reason 13-year-olds need parents: they are incapable of self-regulation.  Adolescents, with their hormone-addled brains and limited lie experience, lack the discernment to make consistently wise choices.  Employees on the other hand, aren't short of wisdom and experience, but they do lack information and context -- since they are so often disconnected from customers, associates, end products, owners, and the big financial picture.  Deprived of the ability to exercise control from within, employees must accept control from above.  The result: disaffection.  It turns out that employees enjoy being treated like 13-year-olds even less than 13-year-olds.”

    Disengaged Employees, Hamstrung Innovation, and Inflexible Organizations

    What is the result of all this disconnect?   Stifled innovation, rigid organizations, and disinterested employees.

    Via The Future of Management:

    “Disengaged employees.  Hamstrung innovation.  Inflexible organizations.  Although we are living in a new century, we are still plagued by the side effects of a management model that invented roughly a hundred years ago.  Yet history doesn't have to be destiny -- not if you are willing to go back and reassess the time-forgotten choices that so many others still take for granted.  With the benefit of hindsight, you can ask: How have circumstances changed? Are new approaches possible? Must we be bound by the shackles of the past?  These are essential questions for every management innovator.”

    Does history have to be destiny?

    We’re writing new chapters of history each and every day.

    In all of my experience, where I’ve seen productivity thrive, people shine, and innovation unleashed, it’s when employees are connected with customers, they are empowered and encouraged to make changes to processes and products, and they are part of a learning organization with rapid feedback loops.

    You Might Also Like

    Ability to Execute

    Business Value Generation is the New Bottleneck

    Customer-Connected Development

    How We Adhered to the Agile Manifesto on the Microsoft patterns & practices Team

    Why So Many Ideas Die or Don’t Get Adopted

  • J.D. Meier's Blog

    Methodologies at a Glance

    • 6 Comments

    I'm a fan of simple maps to help drill in. After all, it's hard to explore the concepts if you don’t know they exist, or you don’t know what they are called.  Below is a work in progress.  I’m making a quick, simple map of the key activities for a some software project-relevant processes.

    I’m sure I’m missing key practices and some of the names have changed.  So I’m sharing it, so that folks can help share what they know, to get to a map that includes the right top level names of key practices.

    Process Practices
    Kanban
    • Limit WIP (Work in Progress)
    • Measure the Lead Time
    • Visualize the workflow
    Scrum
    • Burndown Chart
    • Daily Scrum
    • Definition of Done
    • Estimation
    • Impediment Backlog
    • Product Backlog
    • Product Owner
    • Retrospective
    • Scrum Master
    • Scrum Team
    • Sprint
    • Sprint Backlog
    • Sprint Demo
    • Sprint Planning Meeting
    • Velocity
    XP
    • Coding Standard
    • Collective Code Ownership
    • Continuous Integration
    • On-Site Customer
    • Pair Programming
    • Planning Game
    • Refactoring
    • Simple Design
    • Small Releases
    • Sustainable Pace
    • System Metaphor
    • Test-Driven Development
    MSF Agile Activities
    • Build a Product
    • Capture Project Vision
    • Close a Bug
    • Create a Quality of Service Requirement
    • Create a Scenario
    • Create a Solution Architecture
    • Fix a Bug
    • Guide Iteration
    • Guide Project
    • Implement a Development Task
    • Plan an Iteration
    • Test a Quality of Service Requirement
    • Test a Scenario
    Artifacts (Work Products)
    • Architectural Prototypes
    • Bug Reports
    • Change Sets
    • Check In Notes
    • Classes
    • Development Tasks
    • Interface Models
    • Personas
    • Scenarios
    • Storyboards
    • System Architecture (See DSI and Whitehorse)
    • Test Plan (see Context-Driven Testing)
    • Test Cases
    • Unit Tests
    • Vision Statement
    RUP

    Activities

    • Analyze Runtime Behavior (Implementer)
    • Architectural Analysis (Architect)
    • Assess viability of Architectural Proof-of-Concept (Architect)
    • Capsule Design (Capsule Designer)
    • Class Design (Designer)
    • Construct Architectural Proof-of-Concept (Architect)
    • Database Design (Database Designer)
    • Describe Distribution (Architect)
    • Describe the Run-time Architecture (Architect)
    • Design Testability (Designer)
    • Design the User-Interface (User-Interface Designer)
    • Develop Installation Artifacts (Implementer)
    • Elements (Designer)
    • Execute Developer Test (Implementer)
    • Identify Design Mechanisms (Architect)
    • Identify Design Elements (Architect)
    • Implement Design Elements (Implementer)
    • Implement Developer Test (Implementer)
    • Implement Testability Elements (Implementer)
    • Implementation Model (Software Architect)
    • Incorporate Existing Design Elements (Architect)
    • Integrate Subsystem (Integrator)
    • Integrate System (Integrator)
    • Plan Subsystem Integration (Integrator)
    • Plan System Integration (Integrator)
    • Prototype the User Interface (User-Interface Designer)
    • Review Code (Technical Reviewer)
    • Review the Architecture (Technical Reviewer)
    • Review the Design (Technical Reviewer)
    • Structure the (Software Architect)
    • Subsystem Design (Designer)
    • Use-Case Analysis (Designer)
    • Use-Case Design (Designer)

    Artifacts

    • Analysis Class
    • Analysis Model
    • Architectural Proof-of-Concept
    • Build
    • Capsule
    • Data Model
    • Deployment Model
    • Design Class
    • Design Model
    • Design Package
    • Design Subsystem
    • Event
    • Implementation Element
    • Implementation Model
    • Implementation Subsystem
    • Integration Build Plan
    • Interface
    • Navigation Map
    • Protocol
    • Reference Architecture
    • Signal
    • Software Architecture Document
    • Test Design
    • Test Stub
    • Testability Class
    • Testability Element
    • Use-Case Realization
    • User-Interface Prototype
  • J.D. Meier's Blog

    Sample Application for .NET 4.0 - Layered Architecture and DDD Patterns Sample Applications

    • 6 Comments

    A code sample is worth a thousand words.  Here are a few projects to take a look at that go beyond just code snippets to show you how to put key technologies together in the form of sample applications.  (Note, if you are looking for just code snippets and focused code samples, you can check out the Microsoft All-in-One Code Framework project site on CodePlex.)

    Layered Architecture Solution Guidance
    Project Site - http://layerguidance.codeplex.com

    ”Designing and creating layered applications can be a challenging task to developers. Layered Architecture Solution Guidance is a Microsoft Visual Studio 2010 extension that provides a set of tools and guidance aimed at simplifying the development of layered applications.
    Layered Architecture Solution Guidance is a
    Guidance Automation Extension that integrates with Microsoft Visual Studio 2010 to allow developers to easily create and organize their projects in a layered fashion following the structure that is illustrated in the Layered Architecture Sample for .NET. It provides a set of solution templates integrated with a suite of code generators to make developing layered applications much simpler and quicker.

    Microsoft Spain - Domain Oriented N-Layered .NET 4.0 Sample App
    Project Site - http://microsoftnlayerapp.codeplex.com/

    The main goal is to show how to use .NET 4.0 wave technologies implementing typical DDD patterns: N-Layered Architecture, Domain Entities, Aggregates, Repositories, Unit of Work, Domain Services, Application Services, DTOs, DTO-Adapters, etc.

    Improvements in the Domain Layer

    • Using EF 4.1 POCO Code-First approach for Domain Entities/Aggregates/ValueObjects
    • Added more Domain logic within entities (no anemic domain)
    • Better exposure of Aggregates’ elements
    • Better support to navigations between Aggregates and elimination of inverse relationships not needed
    • Entity Validation support
    • Specification pattern implementation, use of expressions as specifications and composition support

    Improvements in the Application Layer

    • DTO and DTO-Adapters support
    • Validation support
    • Improvements in exception management

    Improvements in the Data-Persistence-Infrastructure Layer

    • Using EF 4.1, CodeFirst, DbContext
    • Persistence layer simplification and improvements
    • IoC/Unity: Elimination of abstractions no needed
    • Better testing strategy for Integration Tests

    Improvements in the Presentation Layer

    • Reviewed and minor improvements in MVVM code.
    • In current V2.0 version we only support a Silverlight client. We'd like to add more clients in the future.

    Improvements in the Distributed-Services Layer

    • Segregation in 2 Web-Services (One per MODULE).
    • Improvements regarding WCF exceptions handling (less spread code in Catch)
    • We currently use SOAP Web-Services, but we will switch to REST in the coming future when the new WCF Web API (WebApi.all) (still in beta) will support Silverlight.
  • J.D. Meier's Blog

    A Map for the Microsoft Application Development Platform

    • 6 Comments

    When you can speak the language, it’s easier to find your way around.   One of the key things I’ve learned at Microsoft is that I can find my way around the platform fast, *if* I know the language.   The language usually consists of scenarios or topics, features, and APIs.

    The toughest part is usually mapping out the features.   The beauty is that if you know the features, they tend to be a token or a handle that connects you to various documentation sets, presentations, samples, and a plethora of other resources.  The other value of knowing the feature names is they tend to be unique names, so they are more precise and they help cut to the chase when searching through vast seas of information.

    Here is an initial map of the Microsoft Application Platform from a topics, features, and API perspective.   It’s effectively a language for the Microsoft application platform.  Note that while many of the feature or API lists may be out of data, you can use the idea to build your own maps.  Once the frame is in place, it’s a lot easier to update it with current information.   In fact, this would actually be useful as a Wiki map.   It would serve as a master map of the application platform, that would make it easy to connect to relevant resources, using a common frame and vocabulary.

    The map starts off by focusing on the most common application types, and then walking each core technology building block, then drilling into topics, features, and APIs.

    Enjoy the map … and please extend.

    Application Types

    Category

    Items
    App Types
    • Cloud
    • Data
    • Desktop
    • Games
    • Phone
    • Services
    • Web

    Application Technology Patterns

    Category

    Items

    Cloud

    • ASP.NET Web Forms
    • ASP.NET MVC
    • Windows Communication Foundation (WCF)
    Data
    • ADO.NET
    • ADO.NET Entity Framework
    • WCF Data Services
    • LINQ
    Desktop
    • WPF
    • Win32
    • MFC
    • Silverlight

    Games

    • Win32 with C++
    • XNA
    • Silverlight
    • WPF

    Phone

    • Silverlight
    • XNA Framework
    Services
    • WCF
    • WCF Data Services
    • WCF RIA Services
    • ASP.NET
    Web
    • ASP.NET Web Forms
    • ASP.NET MVC
    • Silverlight

    ADO.NET Topics and Features Map

    Category Items
    Topics
    • ASP.NET
    • Data Binding
    • Data Models
    • Deployment
    • Disconnected Data
    • Encryption
    • Entity Sets
    • General
    • Localization
    • N-Tier
    • Remote Data
    • Security
    • Silverlight
    • SQL Azure
    • SQL Server
    • Streaming
    • XML
    Features
    • ADO.NET DataSet
    • ADO.NET DataTable
    • ADO.NET DataReader
    • ADO.NET Entity Framework
    • Customizable Code Generator
    • Database First, Code First, and Model First Support
    • Inheritance Support
    • LINQ to DataSet
    • LINQ to SQL
    • LINQ to Enttities
    • O/RM Mapping
    • OData
    • POCO Support
    • State Management
    • WCF Data Services
    APIs
    • System.data
    • Data.Common
    • Data.Common.CommandTrees
    • Data.Design
    • Data.Enttity.Design
    • Data.etntity.Design.AspNet
    • Data.Enttity.Design.PluralizationServices
    • Data.EntityClient
    • Data.Linq
    • Data.Linq.Mapping
    • Data.Linq.SqlClient
    • Data.Linq.SqlClient.Implementation
    • Data.Mapping
    • Data.Metadata.Edm
    • Data.Objects
    • Data.Objects.DataClasses
    • Data.Objects.SqlClient
    • Data.Odbc
    • Data.OleDb
    • Data.OracleClient
    • Data.Services
    • Data.Services.BuildProvider
    • Data.Services.Client
    • Data.Services.Common
    • Data.Services.Common
    • Data.Services.Design
    • Data.Services.Internal
    • Data.Services.Providers
    • Data.Sql
    • Data.SqlClient
    • Data.SqlTypes

    ASP.NET Topics and Features Map

    Category Items
    Topics
    • Auditing and Logging
    • Authentication
    • Caching
    • CSS 2
    • Data Access
    • Deployment
    • Exception Management
    • Health and Instrumentation
    • HTML 5
    • JavaScript/JSON
    • Performance
    • Security
    • Session and State Management
    • Validation
    • Visual Studio and ASP Development
    Features
    • Ajax / Jquery
    • ASP.NET MVC
    • Caching
    • Controls
    • Data Controls
    • Navigation
    • Request Processing
    • Themes and Skins

    View more …

    • Accessibility conforming HTML output
    • ASP.NET AJAX
    • ASP.NET Dynamic Data
    • ASP.NET Model View Controller (MVC)
    • ASP.NET Web Parts (Real time user-modifiable content)
    • Caching / Extensible Output Caching
    • Code Access Security
    • Control Templates, Themes, and Skins
    • Browser Capability Providers
    • Browser Definitions Customization (ASP.NET Browser Registration Tool)
    • Customizable HTTP Handlers and HTTP Modules
    • Data Access Controls
    • Data Validation Controls
    • Data Visualization Charting
    • Deployment and Packaging Tools
    • Designer and Controls Extensibility
    • Extensible Configuration Scheme and Configuration API
    • Extensible Hosting / Web Application Life-Cycle Management
    • Forms Authentication Provider
    • Framework Targeting
    • Health / Performance Monitoring
    • Language-Integrated Query (LINQ) Support
    • Master Pages
    • Membership and Roles User Management Security
    • Merge and Manage Assemblies (ASP.NET Merge Tool)
    • Microsoft Management Console (MMC)
    • Mobile Device Support
    • Page and Controls Framework
    • Precompiled Web Applications (ASP.NET Compilation Tool)
    • Preloading for Web Applications
    • Process Identity and Impersonation
    • Protected Configuration (Configuration Encryption)
    • Regular Expression API
      Routing
    • Session State API
      Routing
    • Session State API
    • Session State Compression
    • Standard Toolbox Controls
    • State Management (Distributed State Facilities)
    • XML Web Services Support API
    APIs
    • Application Services
    • Runtime.Caching
    • ClientServices
    • Configuration
    • DynamicData
    • Handlers
    • Management
    • Profile
    • Query
    • RegularExpressions
    • Routing
    • Script
    • Security
    • Services
    • SessionState
    • UI
    • Util
    • Web

    Silverlight Topics and Features Map

    Category Items
    Topics
    • Controls
    • Data Access
    • Deployment
    • Graphics
    • Layout, Input and Printing Security
    • Networking and Communication
    • Performance
    • Types, Properties, Methods, and Events
    • XAML
    Features
    • Animations
    • Data Binding
    • Data Validation
    • Deep Zoom
    • Events and Delegates
    • Graphics and 3-D
    • HTML Bridge
    • Layout
    • Styles and Templates
    • Text and Rich Text
    • User Controls
    • Video and Audio
    • WCF RIA Services
    • XAML

    View More …

    • .NET Framework Security Enforcement
    • 2D Vector Animation / Graphics
    • Accessibility
    • Accessibility - System Colors
    • AJAX Support
    • Binary XML
    • Bitmap API
    • Bitmap Caching
    • Canvas Layout Support
    • Component Caching (Share resources across apps)
    • Cross-Domain Network Access
    • Cross-Browser Support for Firefox, IE, Safari
    • Cross-Domain Network Access for Trusted Applications
    • Cross-Platform Support for Windows and Mac (and Linux through the Moonlight Project)
    • Custom Window Chrome
    • Data Binding
    • Deep Zoom Technology
    • Direct Access to TCP Sockets
    • DockPanel, WrapPanel, Viewbox
    • Duplex Communications ("push" from Server to Silverlight client)
    • Easy Access to Server-Side Data Via Web Services
    • Element to Element Binding
    • Enhanced Control Skinning
    • Enhanced Keyboard Input Support
    • File Save Dialog
    • File Upload Support (via WebClient API)
    • Full Keyboard in Out-Of-Browser for Trusted Applications
    • Full Suite of Controls (TextBox, RadioButton, Silder, Calendar, DatePicker, DataGrid, ListBox, TabControl, and Others)
    • GPU Hardward Acceleration (for Video and Bitmaps)
    • Group Policy Object Support
    • High Quality Resizing
    • HTML DOM Integration
    • HTTP Networking
    • IDispatch COM Interop
    • Interoperability with SOAP and REST Services,
    • Including Support for XML, JSON, RSS, and ATOM Data Formats
    • Isolated Storage
    • JavaScript Support
    • Layout Controls Including StackPanel and Grid
    • LINQ (including LINQ to XML, LINQ to JSON, and LINQ to Entities)
    • Local Connection
    • Local Fonts
    • Localization
    • Managed Control Framework
    • Managed Exception Handling
    • Managed Extensibility Framework (MEF)
    • Managed HTML Bridge
    • Media - 720 High Definition (HD) Video0
    • Media - Audio / Video Support (VC-1, WMV, WMA, MP3)
    • Media - Basic SSPL Support
    • Media - DRM Powered by PlayReady
    • Media - H.264 Video and AAC Audio Support
    • Media - Image Support (JPG, PNG)
    • Media - MediaStreamSource for Managed Code Media File Parser and Protocol Extensibility
    • Media - Windows Media Audio 10 Professional Support
    • Media Markers
    • Microphone
    • Multicase Networking
    • Multi-Threading
    • Network Status (Offline)
    • Notification Toast
    • Official Support for Google Chrome
    • Offline DRM
    • Out of Browser
    • Out of Browser Windows Settings (Position, Size, etc.)
    • Output Protection for Audio / Video
    • Perspective 3D
    • Pixel Shader Effects
    • Printing
    • Raw A/V Support
    • Remote Debugging (PC and Mac)
    • Rich Core Framework (e.g. Generics, collections)
    • Right to-Left / BiDi Text
    • Scene Caches (to Bitmap)
    • Support for IronPython, IronRuby, ManagedJScript, and other Dynamic Language Runtime (DLR) Based Languages
    • Support for Visual Basic.NET, C#, F#; Common Language (CLR) Based Languages
    • Templating Model
    • Text Animation
    • Theming at Runtime
    • Trusting Applications (Extended Sandbox)
    • Type Safety Verification
    • Visual State Manager
    • WCF Data Services
    • WCF RIA Services
    • Web Browser Control and Web Browser Brush
    • Webcam
    • Windows Media Server Support
    • WPF Compatibility
    • XAML Parser
    • XML Reader/Writer
    APIs
    • ActualHeight
    • ActualWidth
    • AllowHtmlPopupWindow
    • AutoUpgrade
    • Background
    • EnableAutoZoom
    • EnableCacheVisualization
    • EnableFramerateCounter
    • EnableGPUAcceleration
    • EnableHtmlAccess
    • EnableNavigation
    • EnableRedrawRegions
    • FullScreen
    • GetSystemGlyphTypefaces
    • InitParams
    • IsLoaded
    • MaxFrameRate
    • MinRuntimeVersion
    • OnError
    • OnFullScreenChanged
    • OnLoad
    • OnResize
    • OnSourceDownloadComplete
    • OnSourceDownloadProgressChanged
    • OnZoom
    • Source
    • SplashScreenSource
    • Windowless

    WCF Topics and Scenarios Map

    Category Items
    Topics
    • Auditing and Logging
    • Authentication
    • Authorization
    • Cryptography
    • Data Binding
    • Deployment
    • Exception Management
    • Globalization / Localization
    • Impersonation and Delegation
    • Input Validation
    • Message Security
    • Performance and Scalability
    • Proxy
    • Sensitive Data
    • Session Management
    • Silverlight
    • Transactions
    • Transport Security
    • Unit Testing
    Features
    • AJAX Integration and JSON Support
      Clients
    • Data Transfer and Serialization
    • Endpoints – Addresses
    • Endpoints – Bindings
    • Endpoints – Contracts
    • Hosting
    • Interoperability and Integration
    • Metadata
    • Partial Trust
    • Peer-to-Peer Networking
    • Queues and Reliable Sessions
    • Security
    • Sessions, Instancing, and Concurrency
    • Transactions
    • Transports
    • WCF Data Services
    • WCF REST Programming Model
    • WCF RIA Services
    • WCF Syndication
    APIs
    • System.ServiceModel
    • System.ServiceModel.Channels
    • System.ServiceModel.Description

    Windows Azure Topics and Features Map

    Category Items
    Topics
    • Application Management
    • Architecture and Design
    • Authentication
    • Authorization
    • Caching
    • Data Access and Storage
    • Deployment
    • Logging and Instrumentation
    • Migration
    • Security
    • Session Management
    • Validation
    Features
    • Access Control
    • Caching
    • CDN
    • Certificate Management
    • Diagnostics Managed Library
    • Endpoints for Roles
    • Persistent Local Resource Storage
    • Service Bus
    • Service Hosting Runtime Managed Library
    • Service Model UI
    • SQL Azure
    • Storage Client Managed Library
    • Variable-Size Virtual Machines (VMs)
    • Virtual Network
    • Windows Azure Storage
    APIs
    • WindowsAzure
    • Access Control
    • Caching
    • Diagnostics
    • ServiceBus
    • ServiceRuntime
    • StorageClient

    Windows Client Topics and Features Map

    Category Items
    Topics
    • COM
    • Deployment
    • Diagnostics
    • Files
    • Graphics
    • Multimedia
    • Networking
    • Performance
    • Security
    • Shell
    • System Services
    • User Interface Scenarios
    Features
    • Animation
    • Graphics and 3D
    • Libraries
    • Location API
    • Ribbon
    • Sensor
    • Taskbar
    • Touch

    View More …

    • Active Directory Rights Management Services
    • Biometric Service API
    • COM
    • Core Windows
    • Distributed File System Replication
    • Enhanced Storage
    • Enhanced Taskbar
    • Event Tracing for Windows (ETW)
    • Extended Linquistic Services
    • File Server Resource Manager
    • Hardware Counter Profiling
    • Hyper-V
    • Internet Explorer
    • Location API
    • Mobile Broadband
    • Native Wifi
    • Network Share Management
    • Packaging
    • Parental Controls
    • Peer Distribution
    • Performance Counters
    • Power Management
    • Scenic Animation
    • Sensor API
    • Transaction Management
    • Virtual Disk Service
    • Virtual Hard Disk
    • Volume Shadow Copy Service
    • Windows Connect Now
    • Windows Error Reporting
    • Windows Event Log
    • Windows Gadget Platform
    • Windows Installer
    • Windows Scenic Ribbon
    • Windows Touch
    • Windows Troubleshooting Platform
    • Windows Web Services
    • XPS Documents

    Windows Phone Topics and Features Map

    Category Items
    Topics
    • Controls
    • Data Access
    • Deployment
    • Device Management
    • Location
    • Media and Media Player
    • Model View, ViewModel
    • Page, Frame, and Navigation
    • Security
    • Tombstoning
    Features
    • Application Bar
    • Camera Extensibility
    • Gamer Services
    • Graphics and Animation
    • Location APIs
    • Pause / Resume
    • Push Notifications
    • Sensors
    • Touch and Gestures
    • XNA

    View More …

    • App Bar
    • Background Image
    • Bing Map Control
    • Camera Extensibility
    • FM Tuner
    • Gamer Services
    • Geolocation
    • Interop Services
    • Isolated Storage
    • Launchers and Choosers
    • ListView
    • Lite Player
    • Live Tokens
    • LiveID
    • Multi-Touch
    • Media Hub
    • Network State
    • Page / Frame / Navigation
    • Pause / Resume
    • Push Notifications
    • Reactive LINQ
    • Ringtone Registry
    • Sensors
    • Vibrate Device
    • Web Browser Control
    • WM Legacy API Support
    • XNA Dynamic Audio and Microphone
    • XNA Media
    APIs
    • WindowsMobile
    • Configuration
    • Forms
    • PocketOutlook
    • Status
    • Telephony

    Development Languages

    Category Items
    Visual Studio Languages
    • Visual Basic
    • Visual C#
    • Visual C++
    • Visual F#
    • JScript

    Additional Resources

  • J.D. Meier's Blog

    The Way of Success

    • 5 Comments

    "I honestly think it is better to be a failure at something you love than to be a success at something you hate." -- George Burns

    I should have written this a long time ago.  This can potentially be one of the most important tools you add to your mental toolbox.  It's life changing.

    I'm giving you a recipe for success.  Along the lines of Bruce Lee, I call it, The Way of Success.  I named it "The Way of Success", because it's about working backwards from the end in mind, while enjoying the journey forward.  Enjoying the journey forward, doesn’t mean that it’s a bed roses, but instead it’s more fulfilling and you can have confidence in the path, as well as enjoy more ups, than downs.

    What is the Way of Success
    What exactly is "The Way of Success"?  It's a proven practice for producing outstanding results in your life.  Whether you want to change your lot in life, or improve your impact at work, or grow yourself to another level, this is a timeless technique for making it happen.  Life can also throw us plenty of curve balls, so this is a way to work on your swing, and knock more out of the park.

    The Way of Success at a Glance
    Here are the key steps in the process:

    • Step 1. Envision the Future
    • Step 2. Map Out the Goals
    • Step 3. Model the Best
    • Step 4. Map Out the Possible Paths
    • Step 5. Identify Your Tests for Success
    • Step 6. Test Your Results
    • Step 7. Change Your Approach Based on Feedback

    I explain each step in my article, The Way of Success.  Note that while I share it as steps, the process is iterative and incremental.

    It’s Not Easy, It’s Effective
    This is not an "easy" way to success.  Instead it's an effective "path" for success.  Unfortunately, sacrifice is often the price of success.  To make it worse, it's easy to sacrifice a lot of time and energy, only to hit a dead-end or a glass ceiling.  The solution is to use models and maps from working examples to avoid the pitfalls and streamline your success.   So while it’s not easy, it can be “easier.”

    The Balcony View is the Key to Success
    There really is a pattern for success and the beauty is that anybody can use it to do anything better.  You can model the success and excellence of others and apply it to your own life.  And there actually are short-cuts for speeding up your success, without cutting corners.  The trick is finding the critical paths that work.  The real trick though is to take the balcony view and look across the patterns of success from working models.  By looking across, you can find the most likely models that will work for you, and you can find the nuances and distinctions that make them work.  This is the ultimate formula and recipe for success that will help you get more leverage from the time and effort that you already put in.

    The next time you see somebody succeeding in amazing ways, now you know how the magic trick was done, but better yet, how you can do it too.

    Call to Action
    Read the The Way of Success.  Apply it to an important area or challenge in your life.  Test your results.  Share your stories and feedback with me.  Share the approach with others.   Share it with anybody you know that needs an advantage in life, and would want a proven practice for improving their success.

  • J.D. Meier's Blog

    Sources of Insight is Available on the Kindle

    • 5 Comments

    image

    I’ve made Sources of Insight available on the Kindle.  You can find the sign up on Amazon at:

    * Note that UK customers can purchase blog subscriptions only from the UK Kindle Store.

    If you haven’t taken Sources of Insight for a test-drive, it’s my blog for sharing insight and action for work and life.  It’s all about how to make you great, and growing your own personal garden of greatness. 

    Here are a few of the things you will find …

    Cross-Cutting Skills for Life
    As far as key topics, I cover the following hot spots:

    • Mind
    • Body
    • Emotions
    • Career
    • Financial
    • Relationships
    • Fun

    Deep Dives on Skills to Solve Real Problems and Improve Your Abilities
    I do dive deeps on key topics in a pragmatic way.  I basically used what I’ve learned from building prescriptive guidance on the Microsoft patterns & practices team to create a knowledge-based of cross-cutting skills for life.  For example, here’s an article on How To Think Like Bill Gates, where I share the non-obvious ways to improve your intellectual horsepower.

    Book Nuggets
    I use books as my short-cut to the latest and greatest thinking and ideas (aside from people and mentors.)  I also use books to learn fundamental skills and techniques I can apply on the job.  One of my favorite blog posts to write is what I call a “book nugget” where I write about a specific insight or technique from a book, and show how I apply it on the job, or how you might immediately test it in your life.  Here are a few of my favorite book nuggets I think you’ll find useful:

    Best-Selling Authors
    Periodically, I feature best-selling authors.  They write articles for Sources of Insight about their top lessons or their “ah-ha” surprises in life.  Here are a few of my favorite examples:

    Great Books
    I created an extensive book recommendations collection.    For many months (well, years now I guess), I’ve spent ~ $300 on books.  As you can imagine, I go through a lot of books.  Here are a few of my key book recommendation lists:

    Great People
    One of my favorite sources of insight is people.  I share and distill lessons learned from a variety of key people.  Here are some of my favorites I think you’ll enjoy:

    Great Quotes
    Quotes are one of the simplest ways to share wisdom of the ages and modern sages.  The right words really can light up insight or inspire action in new ways.  Here are some of my favorite quote lists:

    If you find it useful, please share the link with others and write a review on Amazon so others can benefit from your experience.

  • J.D. Meier's Blog

    Windows Azure Developer Guidance Map

    • 5 Comments

    image

    If you’re a Windows Azure developer or you want to learn Windows Azure, this map is for you.   Microsoft has an extensive collection of developer guidance available in the form of Code Samples, How Tos, Videos, and Training.  The challenge is -- how do you find all of the various content collections? … and part of that challenge is knowing *exactly* where to look.  This is where the map comes in.  It helps you find your way around the online jungle and gives you short-cuts to the treasure troves of available content.

    The Windows Azure Developer Guidance Map helps you kill a few birds with one stone:

    1. It show you the key sources of Windows Azure content and where to look (“teach you how to fish”)
    2. It gives you an index of the main content collections (Code Samples, How Tos, Videos, and Training)
    3. You can also use the map as a model for creating your own map of developer guidance.

    Download the Windows Azure Developer Guidance Map

    Contents at a Glance

    • Introduction
    • Sources of Windows Azure Developer Guidance
    • Topics and Features Map (a “Lens” for Finding Windows Azure Content)
    • Summary Table of Topics
    • How The Map is Organized (Organizing the “Content Collections”)
    • Getting Started
    • Architecture and Design
    • Code Samples
    • How Tos
    • Videos
    • Training

    Mental Model of the Map
    The map is a simple collection of content types from multiple sources, organized by common tasks, common topics, and Windows Azure features:

    image

    Special Thanks …
    Special thanks to David Aiken, James Conard, Mike Tillman, Paul Enfield, Rob Boucher, Ryan Dunn, Steve Marx, Terri Schmidt, and Tobin Titus for helping me find and round up our various content collections.

    Enjoy and share the map with a friend.

  • J.D. Meier's Blog

    ADO.NET Developer Guidance Map

    • 5 Comments

    image

    If you’re interested in Microsoft data access (ADO.NET, Entity Framework, etc.), this map is for you.   Microsoft has an extensive collection of developer guidance available in the form of Code Samples, How Tos, Videos, and Training.  The challenge is -- how do you find all of the various content collections? … and part of that challenge is knowing *exactly* where to look.  This is where the map comes in.  It helps you find your way around the online jungle and gives you short-cuts to the treasure troves of available content.

    The Windows ADO.NET Developer Guidance Map helps you kill a few birds with one stone:

    1. It show you the key sources of data access content and where to look (“teach you how to fish”)
    2. It gives you an index of the main content collections (Code Samples, How Tos, Videos, and Training)
    3. You can also use the map as a model for creating your own map of developer guidance.

    Download the ADO.NET Developer Guidance Map

    Contents at a Glance

    • Introduction
    • Sources of Data Access Developer Guidance
    • Topics and Features Map (a “Lens” for Finding ADO.NET Content)
    • Summary Table of Topics
    • How The Map is Organized (Organizing the “Content Collections”)
    • Getting Started
    • Architecture and Design
    • Code Samples
    • How Tos
    • Videos
    • Training

    Mental Model of the Map
    The map is a simple collection of content types from multiple sources, organized by common tasks, common topics, and ADO.NET features:

    image

    Special Thanks …
    Special thanks to Chris Sells, Diego Dagum, Mechele Gruhn, Paul Enfield, and Tobin Titus for helping me find and round up our various content collections.

    Enjoy and share the map with a friend.

    My Related Posts

  • J.D. Meier's Blog

    MSDN Library Home Mockup to Simplify Finding the Product Docs

    • 5 Comments

    The MSDN Library is the primary showcase of our Microsoft product documentation.  It’s a treasure trove of gems.  The problem is, if you don’t know where to look, sometimes finding the documentation you’re looking for can be a challenge.   Part of your success hinges on finding the right information, so let’s see what we can do about that.

    I put together a mockup of the MSDN Library Home for the MSDN Library team as an example of one way to showcase some key starting points for some popular technologies on the MSDN Library Home.   Here is the model:

    Category

    Items

    Cloud

    Desktop

    Games

    Phone

    Services

    Web

    Data

    Here are some key points about the model:

    1. App Hubs / Pillars.  The model is organized around higher-level buckets: Cloud, Desktop, Games, Phone, Services, Web, and Data.
    2. Key Technologies.  The App Hubs/Pillars group key technologies.  For example, Cloud includes Windows Azure, SQL Azure, and the Windows Azure Tools for Microsoft Visual Studio.
    3. Home Page, API Reference, How Tos, and Walkthroughs.  Rather than exhaustive, it’s a focus on a subset of the content.  In this case, it’s optimized around helping you find the starting point in the product documentation as well as some of the most popular content, including the API reference and code samples.

    Special Thanks …
    Special thanks to the following people for helping me find the main starting points and put the frame together:  Alik Levin, Eric Peterson, Jesse Liberty, Joe Stagner, Jon Galloway, Paul Enfield, Pete Brown, Rey Bango, Rob Boucher, Sam Landstrom, Scott Hanselman, Tim Teebken, Wade Pickett 

    If you have thoughts on the model, send my way.

  • J.D. Meier's Blog

    No Slack = No Innovation

    • 5 Comments

    "To accomplish great things we must dream as well as act." -- Anatole France

    Innovation is the way to leap frog and create new ways to do things better, faster, and cheaper.

    But it takes slack.

    The problem is when you squeeze the goose, to get the golden egg, you lose the slack that creates the eggs in the first place.

    In the book The Future of Management, Gary Hamel shares how when there is a lack of slack, there is no innovation.

    The Most Important Source of Productivity is Creativity

    Creativity unleashes productivity.  And it takes time to unleash creativity.  But the big bold bet is that the time you give to creativity and innovation, pays you back with new opportunities and new ways to do things better, faster, or cheaper.

    Via The Future of Management:

    “In the pursuit of efficiency, companies have wrung a lot of slack out of their operations.  That's a good thing.  No one can argue with the goal of cutting inventory levels, reducing working capital, and slashing over-head.  The problem, though, is that if you wring all the slack out of a company, you'll wring out all of the innovation as well.  Innovation takes time -- time to dream, time to reflect, time to learn, time to invent, and time to experiment.  And it takes uninterrupted time -- time when you can put your feet up and stare off into space.  As Pekka Himanen put it in his affectionate tribute to hackers, '... the information economy's most important source of productivity is creativity, and it is not possible to create interesting things in a constant hurry or in a regulated way from nine to five.'”

    There is No “Thinking Time”

    Without think time, creativity lives in a cave.

    Via The Future of Management:

    “While the folks in R&D and new product development are given time to innovate, most employees don't enjoy this luxury.  Every day brings a barrage of e-mails, voice mails, and back-to-back meetings.  In this world, where the need to be 'responsive' fragments human attention into a thousand tiny shards, there is no 'thinking time.'  And therein lies the problem.  However creative your colleagues may be, if they don't have the right to occasionally abandon their posts and work on something that's not mission critical, most of their creativity will remain dormant.”

    Are People Encouraged to Quietly Dream Up the Future?

    If you want more innovation, make space for it.

    Via The Future of Management:

    “OK, you already know that -- but how is that knowledge reflected in your company's management processes?  How hard is it for a frontline employee to get permission to spend 20 percent of her time working on a project that has nothing to do with her day job, nor your company's 'core businesses'?  And how often does this happen?  Does your company track the number of hours employees spend working on ideas that are incidental to their core responsibilities? Is 'slack' institutionalized in the same way that cost efficiency is?  Probably not.  There are plenty of incentives in your company for people to stay busy.  ('Maybe if I look like I'm working flat out, they won't send my job offshore.')  But where are the incentives that encourage people to spend time quietly dreaming up the future?”

    Are you slacking your way to a better future?

    You Might Also Like

    Innovation Quotes

    The Drag of Old Mental Models on Innovation and Change

    The New Competitive Landscape

    The New Realities that Call for New Organizational and Management Capabilities

    Who’s Managing Your Company

  • J.D. Meier's Blog

    Paul Lidbetter on Value Realization

    • 5 Comments

    This is a guest post by Paul Lidbetter.  Paul is a seasoned Enterprise Architect on the Microsoft Enterprise Architect and Strategy Practice in the UK.  His specialty is business value, strategic alignment, and Cloud transformation opportunities with customers.

    Paul is also an active member of the Innovation Value Institute Consortium, a Chartered Engineer, Fellow of the BCS, and member of The Institution of Engineering and Technology (The IET).

    Without further ado, here’s Paul on Value Realization …

    Value realization is talked about, but is less frequently achieved because it is hard to deliver! Value realization tends to be thought of by many organizations as the magic that will happen at the end of a project/program.

    Value Realization has evolved to become one of the most used phrases in project proposals, value propositions and investment discussions, but do we really know what the implications are or what we are promising by agreeing to Value Realization as part of a program of work?

    Cost of ownership and business benefit measures have been and are still used as the focus for a business case, which is, at worst, simply a gate to justify a business investment, after which any focus on managing and delivering the expected business benefits, from the agreed investment, is long forgotten.

    Why Value Realization is Hard

    In my experience Value Realization is hard because it assumes some level of maturity for process, reporting, measures and decision making, as part of a value based culture, which supports long term ownership of change and value management over extended time lines. For example in the worst cases I have experienced;

    • The business that has little intention of making real changes and hence business and IT projects tend to stop at deployment and focus on tracking costs as a success factor. Hence Value Realization as part of a program is not on the agenda.
    • There is some focus on enabling change, but there is no consistent intention by stakeholders to actually deliver measured benefits and the business also has little expectation, based on existing cultures. This also makes it hard to measure value consistently as well as the business value that 3rd party services have delivered to a customer.
    • IT is measured on meeting deployment milestones and therefore has little or no interest in aligning to the business let alone ensuring that value is realized.
    • The investment period covers several years and hence the original stakeholders are long gone and who can remember what the project objectives were let alone what the Value Realization measures were….indeed is the project and benefits still relevant is a question often thought, but not so often asked.
    • Value Realization as a process at best becomes focused on the benefits (which may become a sub set of the original benefits as time goes by) and also forgets about the investment component. Program delays increase investments and may result in lower benefits both of which impact the NPV thereby reducing value regardless of any previously agreed financial measures. This can create a false view of the impact of what was realized on capabilities and also future decisions.
    • The benefits promised were not realistic, were not tangible, easily measurable and hence never achievable.

    Value Needs to Be Measured Over the Life Time of Change

    As Value: = (Benefits - (Operational Costs & Investment-Capital Costs)) Realized Value is impacted by delivering more or less benefits and/or incurring more or less costs/investments needed to deliver such benefits over time. Indeed the investment is very much part of Value Realization. Value therefore needs to be measured over the life time of the change, for example some metrics may be evident early in the adoption cycle and others such as overall ROI may take years. Because of the time line, investment time/resources needed tend to increase and benefits fall/become less relevant with time, thereby leaking value from the business also impacting opportunity costs.

    Value Realization vs. Potential Value

    Realization means that the value defined by the business case (or agreed sub set) is actually delivered, is visible and has an agreed impact on business goals, KPIs, revenue and budgets. Until value is actually realized it is remains as potential value and no more. For example finding a cost saving and then not reducing budgets or reallocating the funds to drive new opportunities is not Value Realization, it is pretending that value has been delivered.

    clip_image002

    A more top down approach may increase accountability for delivering benefits, but the very same people may not want the benefits (e.g. they see dis-benefits based on cuts to their budgets, staff, maybe major personal and career change), or they may want the benefits, but are still dependent on another group, who may own the budgets/resources and have other priorities on time and resource, to enable solutions and deliver change.

    So stakeholder management and alignment are key issues that can be a source of delay and indeed failure to optimize Value Realization.

    Value Realization Needs to Be Planned from the Start

    Value Realization therefore demands a value culture or shift in an organization around value governance and increasing levels of maturity/capability to focus on qualifying decisions based on Realizable Value and managing value as part of delivery programs. Hence, successful Value Realization needs to be planned as part of any project/program from the start, not in panic at the end of the project based on smoke and mirrors. Of course if there are no defined measures to start with then smoke and mirrors can work every time.

    It’s No Longer Good Enough to Pretend that Value Just Appears

    Value Realization is/should become more critical to organizations as the ability to source new cloud services and capabilities accelerates and lowers the risk and costs for the design and deployment cycles, thereby throwing the internal focus on doing the right things and ensuring value is being created within shorter cycles. This is further driven by both business and accelerating technology trends which in some industries can be enabled to deliver value faster for competitive advantage. Being able to demonstrate that a program has delivered on time and on budget is no longer good enough, pretending that value just appears is no longer good enough to remain competitive.

    Accelerating Business Value and Driving Adoption and Change

    Some organizations focus on realization in the short term, in order to mitigate this issues above and also to ensure that opportunity costs are maximized. Indeed some organizations I have worked with, both commercial and public sector, have banked the benefits at the start of the project. For example a CFO reduced the travel budgets at the start of a Unified Communication program to accelerate the program, business change and adoption. The final value delivered is still dependent on the overall level of investment, but this did drive behavior and accelerate change.

    A Focus on Value Integrated into the Program Management Office (PMO)

    In a Telecommunications customer, although the initial discussion was with IT and around deployment, the focus for change was in fact the business (HR), which allowed both relevant measures and accountability to be established. Also the focus on delivering value was integrated into the PMO and associated change managers which enabled the Value Realization process to be part of the overall plan, as part of a Microsoft Enterprise Strategy Services engagement. In addition the number of measures where kept small and easy to verify. E.g. a cost saving metric, a productivity measure and a program acceleration measure (to demonstrate the value of the Microsoft Enterprise Strategy Services engagement)

    Providing Snap Shots in Time of Value Realized

    A further example from a financial organization had some of the challenges, but the approach taken ensured that a culture and process change was slowly introduced with support from Microsoft Enterprise Strategy Services. Projects/Programs were delivered with measures that were more about cost and time, but in order to demonstrate the value of both Microsoft Enterprise Strategy Services and customer projects, some projects were evaluated for post Value Realization in which the benefits were signed off ( or not, by stakeholders) and accumulated with investments to provide a snap shot in time of value realized. Importantly this also allowed potential value, to be identified along with a portfolio based value management process and relevant accountabilities to be successfully introduced moving forwards.

    How To Enable Value Realization

    Some of the key enablers are therefore;

    • Ensure the IT project/program is aligned to measurable business goals, or if not, then the focus is a default reduction of the IT Budget/improve Productivity.
    • An IT focus may be on transformation, for example moving operations to the cloud, which can drive hard strategic and metrics such % services on line, % reduction in data centers by a given date. Clearly the value focus is what does the transformation deliver? In terms of costs, Co2, business measures etc.
    • So in the last point the projects are measured on realizing the change to how services are delivered, the overall programs for transformation will be ideally measured on the business value enabled.
    • For effective change, adoption, and Value Realization, there needs to be good integration with the business change managers and the PMO so that adoption is planned alongside user scenarios and as part of deployment.
    • Use awareness, pilots to test scenarios for Value Realization and measurement options, this gains both business and user confidence based on outcomes and mitigates risk before a full business case, Value Realization plan and roll out.
    • Value management, processes and governance is based on clear roles and responsibilities. Focus on shorter delivery cycles where possible, to minimize risks, gain early wins and maximize ability to manage value.
    • If Value Realization requires significant change then top level sponsor needs to demonstrate adoption and drive incentives…..commitments, STOP other approaches, emphasize and communicate success….learn from mistakes and also success.

    Value Realization is a powerful tool when you use it as an approach to help connect business and IT, justify investments, accelerate business value, and drive adoption and change.

    You Might Also Like

    Martin Sykes on Value Realization

    Mark Bestauros on Value Realization

    Graham Doig on Value Realization

  • J.D. Meier's Blog

    Cheat Sheet: patterns & practices Catalog at a Glance Posted to CodePlex

    • 5 Comments

    As part of our patterns & practices Application Architecture Guide 2.0 project, we've been hunting and gathering our patterns & practices solution assets.  Here's our initial draft of our catalog at a glance:

    You can use it to get a quick sense of the types and range of solution assets from blocks to guides.

    Architecture Meta-Frame 
    We used our Architecture Meta-Frame (AMF) as a lens to help slice and dice the catalog:

    ArchMetaFrame

    Here's some examples to illustrate:

    • App Types - Factories such as Web Client Software Factory and Web Services Software Factory map to the application types.  You can think of them as product-line engineering.
    • Quality Attributes - Various guides address quality attributes such as security, performance and manageability. 
    • Architecture Frame - Enterprise Library assets such as the Validation block and the Logging block map to the Architecture Frame.  The Architecture Frame represents hot spots and common cross-cutting concerns when building line of business applications.

    The frame is easily extensible.  For example, if we include our Engineering Practices Frame, we can group our process, activity, and artifact related guidance.

    Catalog at a Glance
    Here's a quick list of key patterns & practices solution assets at a glance:

    Product Line Solution Assets
    Enterprise Library
  • Enterprise Library
  • Caching Application Block
  • Cryptography Application Block
  • Data Access Application Block
  • Exception Handling Application Block
  • Logging Application Block
  • Policy Injection Application Block
  • Security Application Block
  • Unity Application Block
  • Validation Application Block
  • Composite Application Guidance for WPF
  • Individual Blocks
  • Composite Application Guidance for WPF
  • Smart Client – Composite UI Application Block
  • Unity Application Block
  • Archived Blocks
  • Asynchronous Invocation Application Block
  • Aggregation Application Block for .NET
  • Smart Client Offline Application Block
  • Updater Application Block – Version 2.0
  • User Interface Application Block for .NET
  • User Interface Process (UIP) Application Block – Version 2.0
  • Web Service Façade for Legacy Applications
  • Factories
  • Mobile Client Software Factory
  • Smart Client Software Factory
  • Web Client Software Factory
  • Web Service Software Factory
  • Guides
  • Application Architecture for .NET: Designing Applications and Services
  • Application Interoperability: Microsoft .NET and J2EE
  • Authentication in ASP.NET: .NET Security Guidance
  • Building Secure ASP.NET Applications: Authentication, Authorization, and Secure Communication
  • Caching Architecture Guide for .NET Framework Applications
  • Deploying .NET Framework-based Applications
  • Describing the Enterprise Architectural Space
  • Design and Implementation Guidelines for Web Clients
  • Designing Application-Managed Authorization
  • Designing Data Tier Components and Passing Data Through Tiers
  • Guidelines for Application Integration
  • Improving .NET Application Performance and Scalability
  • Improving Web Application Security: Threats and Countermeasures
  • Microsoft .NET /COM Migration and Interoperability
  • Microsoft ESB Guidance for BizTalk Server 2006 R2
  • Monitoring in .NET Distributed Application Design
  • Performance Testing Guidance for Web Applications
  • Production Debugging for .NET Framework Applications
  • Security Engineering Explained
  • Smart Client Architecture and Design Guide
  • Team Development with Visual Studio .NET and Visual SourceSafe
  • Team Development with Visual Studio Team Foundation Server
  • Testing .NET Application Blocks - Version 1.0
  • Threat Modeling Web Applications
  • Upgrading Visual Basic 6.0 Applications to Visual Basic .NET and Visual Basic 2005
  • Archived Guides
  • .NET Data Access Architecture Guide
  • Exception Management Architecture Guide
  • Testing Software Patterns
  • Patterns
  • Data Patterns
  • Enterprise Solution Patterns Using Microsoft .NET
  • Integration Patterns
  • Web Service Security Guidance: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0
  • Reference Implementations
  • Global Bank Scenario
  • WS-I Basic Security Profile 1.0 Reference Implementation: Final Release for .NET Framework 2.0
  • Archived Reference Implementations
  • Applied Integration Baseline Reference Implementation

  • Application Types
    Guidance assets listed by application type.

    Category Solution Assets
    Mobile
  • Mobile Client Software Factory
  • Rich Client
  • Composite Application Guidance for WPF
  • Smart Client Architecture and Design Guide
  • Smart Client Software Factory
  • Service
  • Improving Web Services Security: Scenarios and Implementation Guidance for WCF
  • Web Service Security Guidance: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0
  • Web Service Software Factory
  • Web Client
  • Design and Implementation Guidelines for Web Clients
  • Improving .NET Application Performance and Scalability
  • Improving Web Application Security: Threats and Countermeasures
  • Web Client Software Factory


  • Quality Attributes
    Guidance assets listed by quality attributes.
    Category Solution Assets
    Integration
  • Enterprise Solution Patterns Using Microsoft .NET
  • Guidelines for Application Integration
  • Integration Patterns
  • Interoperability
  • Application Interoperability: Microsoft .NET and J2EE
  • Enterprise Solution Patterns Using Microsoft .NET
  • Microsoft .NET /COM Migration and Interoperability
  • Flexibility
  • Policy Injection Application Block
  • Unity Application Block
  • Manageability
  • Deploying .NET Framework-based Applications
  • Enterprise Solution Patterns Using Microsoft .NET
  • Monitoring in .NET Distributed Application Design
  • Production Debugging for .NET Framework Applications
  • Performance
  • Improving .NET Application Performance and Scalability
  • Performance Testing Guidance for Web Applications
  • Scalability
  • Improving .NET Application Performance and Scalability
  • Security
  • Designing Application-Managed Authorization
  • Improving Web Application Security: Threats and Countermeasures
  • Improving Web Services Security: Scenarios and Implementation Guidance for WCF
  • Security Engineering Explained
  • Security Guidance for .NET Framework 2.0
  • Threat Modeling Web Applications
  • Web Service Security Guidance: Scenarios, Patterns, and Implementation Guidance for Web Services Enhancements (WSE) 3.0

  • Engineering Practices
    Guidance assets organized by engineering practices.
    Category Solution Assets
    Deployment
  • Deploying .NET Framework-based Applications
  • Enterprise Solution Patterns Using Microsoft .NET
  • Monitoring in .NET Distributed Application Design
  • Production Debugging for .NET Framework Applications
  • Performance Engineering
  • Performance Testing Guidance for Web Applications
  • Security Engineering
  • Security Engineering Explained
  • Threat Modeling Web Applications
  • Team Development
  • Team Development with Visual Studio Team Foundation Server
  • Testing
  • Performance Testing Guidance for Web Applications
  •  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
  • J.D. Meier's Blog

    Rich Client Application Architecture Pocket Guide

    • 5 Comments
    Rich Client Architecture Pocket Guide
    We posted our Rich Client Application Architecture Pocket Guide to our Application Architecture Guidance KB.  This is in response to customers who expressed interest in more modular guides as a supplement to our Application Architecture Guide 2.0.

    Chapters At a Glance 
    Here’s the chapters at a glance:

    • Ch 01 - Rich Client Application Architecture
    • Ch 02 - Architecture and Design Guidelines
    • Ch 03 - Presentation Layer Guidelines
    • Ch 04 - Business Layer Guidelines
    • Ch 05 - Data Access Layer Guidelines
    • Ch 06 - Service Layer Guidelines
    • Ch 07 - Communication Guidelines
    • Ch 08 - Deployment Patterns

    Download

    My Related Posts

  • J.D. Meier's Blog

    Pocket Guide Series for Application Architecture

    • 5 Comments
    Agile Architecture Method Pocket Guide
    Our Application Architecture Pocket Guides are available from our Application Architecture KB.  Our pocket guides are based on our Application Architecture Guide 2.0.   We prioritized an initial set of pocket guides based on customer demand for focused content on specific topics.

    Pocket Guides
    Here’s the Pocket Guides available so far:

    You can browse the list of pocket guides on the Pocket Guide Index page.

  • J.D. Meier's Blog

    Lessons Learned in 2008

    • 5 Comments

    I posted my Lessons Learned in 2008 on Sources of Insight.  2008 was a pretty insightful year for me.  I met a lot of great people, read a lot of books, and learned a lot along the way.  I recapped my top 10 lessons here.

    Top Ten Lessons for 2008

    • Adapt, adjust, or avoid situations. Learn how to read situations. Some situations you should just avoid.  Some situations you should adapt yourself, as long as you play to your strengths.  Some situations you should adjust the situation to set yourself up for success.  See The Change Frame.
    • Ask questions over make statements.  If you want to get in an argument, make statements.  If you want to avoid arguments, ask questions.
    • Character trumps emotion trumps Logic.  Don’t just go for the logical win.  Win the heart and the mind follows.  Build rapport.  Remember the golden rule of “rapport before influence.  Have the right people on your side.   If you win the right pillars first, it’s a domino effect.  It’s part of social influence.  See Character Trumps Emotion Trumps Logic.
    • Develop a routine for exceptional thinking.  Create a preperformance routine that creates consistent and dependable thinking.  Work backwards from the end in mind.  Know what it’s like when you’re at your best.  Model from your best experiences.  Success leaves clues.  Turn them into a routine.  Set time boundaries.  Don’t let yourself take as long as it takes.  Work has a way of filling the available hours. Set a timebox and improve your routine until you can shift gears effectively within your time boundaries.  See Design a Routine for Exceptional Thinking.
    • Give your best where you have your best to give.   Design your time to spend most of your time on your strengths.  Limit the time you spend in your weaknesses.   Play to your strengths.  When you play to your strengths, if you get knocked down, it’s easier to get up again.  It’s also how you unleash your best.  See Give Your Best Where You Have Your Best to Give.
    • Label what is right with things.  There’s been too much focus on what’s wrong with things.  Find and label what’s right with you.  We all have a deep need to know what’s right with us.  Shift from labeling what’s wrong, to labeling what’s right. See Label What is Right with Things.
    • One pitch at a time.  Focus on one pitch at a time.  Hook on to one thing.  Be absorbed in the moment, no matter what’s at stake.  Let results be the by-product of what you’re doing.  Don’t judge yourself while you’re performing.  Don’t rearrange your work; rearrange your focus.  See One Pitch at a Time.
    • Spend 75 percent on your strengths.  Very few people spend the majority of their time on their strengths.  Create timeboxes for your non-negotiables.  You’re not your organization’s greatest asset until you spend your time on your strengths.  Activities that you don’t like, hurt less, if you compartmentalize them to a smaller chunk of your day.  See Spend 75 Percent on Your Strengths.
    • Ask Solution-focused questions.   Ask things like “how do we make the most of this?” … “what’s the solution?” … “if we knew the solution, what might it be?”  Believe it or not, a lot of folks get stuck unless you add the “if you did know the solution …” or “what might it be?”  See Solution-Focused Questions.
    • Use stress to be your best.  It’s not what happens to you, it’s what you make of it.  Distinguish stress from anxiety.  Stress is your body’s response.  Anxiety is your mind’s response.   See Use Stress to Be Your Best.
  • J.D. Meier's Blog

    Enterprise Library 5.0 Product Backlog Prioritization Survey

    • 5 Comments

    Now's your chance to influence patterns & practices Enterprise Library 5.0.  You can do so by taking the Enterprise Library 5.0 Product Backlog Prioritization Survey.   The current backlog includes more than 100 stories.  You can suggest priorities for these items as well as suggest up to 3 new stories.  Each story has a "T-Shirt size", which is a rough estimate of the cost.  You get 100 points to spend on your priorities.  For example, you might spend all 100 points on your most important priority or you might spread your points over several stories.

    T-Shirt Cost Sizes / Cost
    Here's a summary of the T-Shirt sizes and relative costs:

    • S = 1
    • M = 2
    • L =4
    • XL = 8
    • XXL(epic) = 20 points

    Story Categories
    The Enterprise Library 5.0 product backlog is organized by the following categories:

    • User Experience
    • Learnability
    • Architecture
    • Configuration
    • Configuration Tool
    • Extensibility
    • Exception Handling
    • Caching
    • Logging
    • Resource Management and Localization
    • Validation
    • Unity
    • Policy Injection

    Enterprise Library 5.0 Stories List
    Here's the list of stories in the tentative Enterprise Library 5.0 Product Backlog:

    User Experience

    • UX01: Better error reporting/messaging throughout (M)
    • UX02: Debugging Visualizer for Unity (L)
    • UX03: Config IntelliSense for Unity and EntLib in XmlEditor (M)
    • UX04: Config IntelliSense for Unity in XmlEditor (M)
    • UX05: Config tool facelift - towards a more intuitive and easier to use UI (XL)

    Learnability

    • LEARN01: Discoverability and context/dependencies EntLib poster (L)
    • LEARN02: Notebook-style 150 page book for Architects (XXL)
    • LEARN03: Notebook-style 150 page book for Enterprise Developers (XXL)
    • LEARN04: Notebook-style 100 page book for Operations/IT management (XXL)
    • LEARN05: Migration guide v.2.0 ->5.0 (XL)
    • LEARN06: Migration guide v.3.1 ->5.0 (XL)
    • LEARN07: Migration guide v.4.1 ->5.0 (L)
    • LEARN08: Updated Quickstarts (XL)
    • LEARN09: Updated Hands-on Labs (XXL)
    • LEARN10: EntLib Overview Video (L)
    • LEARN11: EntLib5.0 New Features Video (L)
    • LEARN12: Unity Overview Video (L)
    • LEARN13: Unity Extensibility Video (L)
    • LEARN14: Unity Extensibility Guide (XL)
    • LEARN15: Guidance on environmental overrides in Unity (S)
    • LEARN15: Unity& MEF decision tree/matrix (M)

    Architecture

    • ARC01 : Architectural update: use DI container instead of one-off Object Builder factories; DI container independence (XL)
    • ARC02 : Simplification of the codebase (identify redundancies, obsoletes etc.) (XL)
    • ARC03 : Reduction of the number of assemblies (XL)

    Config

    • CFG01 : Config decentralization (support for config stored in multiple sources) (S)
    • CFG02:  Improved Config API (XL)
    • CFG03:  Support for different sections of config in different media (not just files) (XL)
    • CFG04:  Support for multiple pieces of config for a single block in multiple places (XXL)
      CFG05:  Making Unity configuration less verbose (M)
    • CFG06:  Support other config schemas for Unity config (e.g. XAML-based config)
    • CFG07: Unity config auto-registration: expanded conventions and helper classes to reduce need for explicit configuration (M)

    Config Tool

    • TOOL01: Type picker improvements (sped up search, better generics UI) (M)
    • TOOL02: Support of Unity configuration (M)
    • TOOL03: Block invocation from the configuration designer (e.g. Configure a block, Right-click, Copy "Code to Invoke", and then paste it elsewhere) (S)
    • TOOL04: Web-based config tool (L)
    • TOOL05: Easier manipulation of validation trees (potentially, drag&drop) (M)

    Extensibility

    • EXT01: Simplifying writing extensions and plugging their custom configs into the config tool (XXL)
    • Data Access
    • DAAB01: DAAB & LINQ basic integration (i.e. execute a query on a database, get back an object that you can do LINQ on) (M)
    • DAAB02: Async ADO.NET support (M)
    • DAAB03: Fix: validation of sprocs parameters – do not validate (S)
    • DAAB04: No swallowing of SQL exceptions (S)

    Exception Handling

    • EHAB01: Default post-handling action to ThrowNewException instead of NotifyRethrow (S)
    • EHAB02: Parameterized templates for exceptions (M)

    Caching

    • CACHE01:  Adding a reason to the class that informs a user why their object was removed from the cache (S)
    • CACHE02: Cache backing store targeting ESENT (L)

    Logging

    • LAB01: ETW sink (?, potentially XXL)
    • LAB02: Async logging (text formatting done asynchronously) to cut down on load on primary thread (M)
    • LAB03: Automatically purging old files by the rolling trace listener (S)
    • LAB04: Authenticated Email Trace Listener (S)

    Resource Management & Localization

    • LOC01: Localizability of EntLib assemblies (L)
    • LOC02: Localizability of exception messages and templates (S)
    • RAB03: Resource Application Block (a provider to get assorted resources from various media/sources) (XXL)

    Validation

    • VAB01: Integration with WPF (XL)
    • VAB02: Integration with/assistance in implementing IDataErrorInfo (S)
    • VAB03: ArgumentValidationException.ToString() show the validation results (S)
    • VAB04: Decorating LINQ objects with Validation attributes (M)
    • VAB05: Simplifying checking for positive / negative values (S)
    • VAB06: Simple validating field only if the value is not null (S)
    • VAB07: Validation Block refactoring to allow using Unity to resolve Validators (M)
    • VAB08: Enabling Validation Block to be used with 3rd party object relational mappers (M)
    • VAB09: Honouring validation attributes defined in System.ComponentModel.DataAnnotations (S)   
    • VAB10: Honouring MetadataType attribute (M)
    • VAB11: Better localization support (i.e. the first time the validator is used, the locale for the messages is defined) (M)
    • VAB12: Inheritance-aware object validator (M or ?)
    • VAB13: Support for recursive data structures (M)
    • VAB14: Provide NullValidator to properly "ignore nulls" instead of the "Or composite" (S-M)
    • VAB15: Additional validator: Number of decimal places validator (S)
      VAB16: Additional validator: Validator that checks that an enum contains a value that maps onto its defined values (S)   
    • VAB17: Validator that compares against a single specific value (S)
    • VAB18: RelativeDateTimeValidator update to  compare against UtcNow instead of Now  (S)

    Unity

    • U01: ResolveAll to return unnamed registration too (S)
    • U02: Allow a mapping from a named registration to the "default" one (S)
    • U03: Support for passing arguments to the Resolve method (M)
    • U04: Container introspection (S)
    • U05: Unity-MEF Integration (e.g. unityContainer.Resolve<MefPart>()) (M)
    • U06: Clearer error reporting (M)
    • Unity Interception
    • UIN01: Generalized interceptor (XXL)
    • UIN02: Caching of matching policies (M)

    Policy Injection

    • PIAB01: Implement PIAB interface that takes an interceptor type (to leverage new Unity interceptors) (S)
    • PIAB02: Add non-generic overloads (S)
    • PIAB03: New handlers (incl. RequiresTransaction and Call Forwarding) (S)
    • Installation/Repair/Uninstallation
    • INS01: Installer allows you to pick which specific blocks to install instead of the whole package (M)
    • INS02: Installer ships both debug and release versions of the DLLs (S)
    • INS03: EntLib installers to be included as part of installers of other custom products (merge modules) (M)

    Additional Resources

  • Page 5 of 44 (1,096 items) «34567»