Archive

Archive for April, 2008

Strategy: A definition

April 28, 2008 Leave a comment

Strategy is one of the most difficult and misused terms used in business and indeed life. When most people think of strategy they have a hazy view that may involve wars and conflicts, perhaps they have some knowledge of strategic visionaries from the past like Sun Tzu or Clausewitz.

But normally when they think of a strategy to solve some problem most people think of either (1) tactics or (2) plans, neither of which are in fact strategies. So the question is then what is Strategy?

If we take one of my favorite strategists definitions we read it as:
“Strategy is a mental tapestry of changing intentions for harmonizing and focusing our efforts as a basis for realizing some aim or purpose in an unfolding and often unforeseen world of many bewildering events and many contending interests. ” Taken from John Boyd’s presentation Strategic Game of ? and ? page 58.

The above statement is very compact and contains some very decent guidance therefore I suggest you read it again.

Inherent in this statement is the idea that a strategy is intended to help you create a specific future, which you must by necessity specify at a given time. This future is then achieved by focusing on intentions and aims not goals. In order for these intentions to continue to be efficient, effective and efficacious they to have to change as you realize the consequences of new events and contending interests require your adaptation.

Perhaps the future you want to realize is not the future you actually want, but is in fact a moving target (like so much of life). Therefore your strategy has to be flexible enough to accept that the future you are aiming at will change and that the environment you operate in will change.

And how do you deal with this change?

Categories: Strategy Tags: ,

Skills Acquisition

April 21, 2008 Leave a comment

This post is a work in progress for an article about how people develop and acquire skills and what skills are particularly important for software developers…

Before we start with the specifics it is useful to examine the higher order ideas of skill acquisition and then apply those to the skills germane to software developers. A useful framework to describe this process is called the Dreyfus Model.

This model segments up the different stages of skill acquisition into distinct levels: novice, advanced beginner, competent, proficient, and expert. As we progress through the levels of capability with a given skill we move from having our analysis and actions governed by rules, to using nuanced conditional rules, to using varying levels of pattern matching, to finally fully internalizing our experiences into invariant mental representations. Experts then match these patterns against what they observe and then intuit the correct action.

The result is that experts develop an intuitive understanding of a given skill and corresponding domain. One of the interesting consequences for domain experts is that they often have difficulty explaining why they know what will happen and why they should do what they are going to do. This difficulty is caused because experts use their intuition to both understand and solve problems. Experts are often struck by certain knowledge that what they are going to do will work, but not know why. A second notable byproduct of increased skill maturity is an increase in the practitioners sense of inborn responsibility to their craft and the job at hand. True experts can usually be recognized by both their sense of responsibility and their intuitive understanding of their craft.

It is also important to recognize that experts are often the worst teachers of novices. Both novices and experts process information in very different ways: novices need rules, experts need concepts and contexts. Techniques that work when teaching a novice are maddening to an expert, and vice-versa.

The five skills or domains used during the development of correct, quality software are: analysis, specification, design, implementation, and testing. Three additional skills crucial to working in a team are: communication, documentation and planning. Growth in each of these areas is required to mature developers from novices to experts and should be used to measure the progress of developers as they expand their responsibility and influence within their teams and broader organization.

In conclusion we must focus on specifying experiences, capabilities, and responsibilities which will implicitly cross cut against the skills we desire and which we believe will have inculcated the level of maturity needed to perform the job being proffered.

Follow

Get every new post delivered to your Inbox.