Pragmatic Thinking and Learning

Home > Other > Pragmatic Thinking and Learning > Page 4
Pragmatic Thinking and Learning Page 4

by The Pragmatic Programmers


  without running into a Clinton-esque “It depends upon what the

  meaning of the word is is.” This phenomenon is known as infinite

  regression. At some point, you have to stop defining explicitly.

  Rules can get you started, but they won’t carry you further.

  Stage 2: Advanced Beginners

  Once past the hurdles of the novice, one begins to

  see the problems from the viewpoint of the advanced

  beginner. Advanced beginners can start to break

  away from the fixed rule set a little bit. They can try tasks on their

  own, but they still have difficulty troubleshooting.

  They want information fast. For instance, you may feel like this

  when you’re learning a new language or API and you find yourself

  scanning the documentation quickly looking for that one method

  signature or set of arguments. You don’t want to be bogged down

  with lengthy theory at this point or spoon-fed the basics yet again.

  3.

  I forward it with my compliments and a large check to my accountant, who is expert in these matters. I hope.

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  THE FIVE DREYFUS MODEL STAGES

  33

  Advanced

  beginners

  can

  start

  using

  advice in the correct context, based on Advanced beginners

  similar situations they’ve experienced in don’t want the big

  the recent past but just barely. And picture.

  although they can start formulating some

  overall principles, there is no “big picture.” They have no holistic

  understanding and really don’t want it yet. If you tried to force the

  larger context on an advanced beginner, they would probably dis-

  miss it as irrelevant.

  You might see this sort of reaction when the CEO calls an all-hands

  meeting and presents charts and figures showing sales projections

  and such. Many of the less experienced staff will tend to dismiss it

  as not being relevant to their individual job.

  Of course, it is very relevant and can help determine whether you’ll

  still have a job with this company next year. But you won’t see the

  connection while you’re at the lower skill levels.

  Stage 3: Competent

  At the third stage, practitioners can now develop con-

  ceptual models of the problem domain and work with

  those models effectively. They can troubleshoot prob-

  lems on their own and begin to figure out how to solve novel

  problems—ones they haven’t faced before. They can begin to seek

  out and apply advice from experts and use it effectively.

  Instead of following the sort of knee-jerk

  response of the previous levels, the com- Competents can

  petent practitioner will seek out and solve

  troubleshoot.

  problems; their work is based more on

  deliberate planning and past experience. Without more experience,

  they’ll still have trouble trying to determine which details to focus

  on when problem solving.

  You might see folks at this level typically described as “having ini-

  tiative” and being “resourceful.” They tend to be in a leadership role

  in the team (whether it’s formal or not).4 These are great folks to

  have on your team. They can mentor the novices and don’t annoy

  the experts overly much.

  4.

  See Teaching and Learning Generic Skills for the Workplace [SMLR90].

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  THE FIVE DREYFUS MODEL STAGES

  34

  In the field of software development, we’re getting there, but even

  at this level, practitioners can’t apply agile methods the way we

  would like—there isn’t yet enough ability for reflection and self-

  correction. For that, we need to make a breakthrough to the next

  level: proficient.

  Stage 4: Proficient

  Proficient practitioners need the big picture. They will

  seek out and want to understand the larger concep-

  tual framework around this skill. They will be very

  frustrated by oversimplified information.

  For instance, someone at the proficient stage will not react well

  when they call the tech support hotline and are asked whether it’s

  plugged in. (Personally, I want to reach through the phone and

  remove the first vital organ that presents itself in these situations.)

  Proficient practitioners make a major

  Proficient practitioners

  breakthrough on the Dreyfus model: they

  can self-correct.

  can correct previous poor task perfor-

  mance. They can reflect on how they’ve

  done and revise their approach to perform better the next time.

  Up until this stage, that sort of self-improvement is simply not

  available.

  Also, they can learn from the experience of others.

  As a proficient practitioner, you can read case stud-

  ies, listen to water-cooler gossip of failed projects, see

  what others have done, and learn effectively from the story, even

  though you didn’t participate in it firsthand.

  Along with the capacity to learn from others comes the ability to

  understand and apply maxims, which are proverbial, fundamental

  truths that can be applied to the situation at hand.5 Maxims are

  not recipes; they have to be applied within a certain context.

  For instance, a well-known maxim from the extreme programming

  methodology tells you to “test everything that can possibly break.”

  5.

  See Personal Knowledge [Pol58].

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  THE FIVE DREYFUS MODEL STAGES

  35

  Pragmatic Tips

  When Dave Thomas and I wrote the original The Pragmatic

  Programmer, we were trying to convey some of the advice

  we thought was most relevant to our profession.

  These tips—these maxims—were a reflection of our col-

  lective years of expertise. From the mind-expanding prac-

  tice of learning a new language every year to the hard-

  won principles of Don’t Repeat Yourself (DRY) and No Bro-

  ken Windows, maxims such as these are key to transferring

  expertise.

  To the novice, this is a recipe. What do I test? All the setter and

  getter methods? Simple print statements? They’ll end up testing

  irrelevant things.

  But the proficient practitioner knows what can possibly break—or

  more correctly, what is likely to break. They have the experience

  and the judgment to understand what this maxim means in con-

  text. And context, as it turns out, is key to becoming an expert.

  Proficient practitioners have enough experience that they know—

  from experience—what’s likely to happen next; and when it doesn’t

  work out that way, they know what needs to change. It becomes

  apparent to them which plans need to be discarded and
what needs

  to be done instead.

  Similarly, software Patterns (as espoused in Design Patterns: Ele-

  ments of Reusable Object-Oriented Software [GHJV95], also known

  as the Gang of Four book) can be effectively applied by proficient-

  level practitioners (but not necessarily at lower skill levels; see the

  sidebar on the next page).

  Now we’re getting somewhere. Proficient practitioners can take full

  advantage of the reflection and feedback that is core to agile meth-

  ods. This is a big leap from the earlier stages; someone at the profi-

  cient stage is much more like a junior expert than a really advanced

  competent.

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  THE FIVE DREYFUS MODEL STAGES

  36

  Misapplied Patterns and Fragile Methods

  As you may realize by now, some of the most exciting new

  movements in the software development community are

  targeted at proficient and expert developers.

  Agile development relies on feedback; in fact, my defini-

  tion of agile development from Practices of an Agile Devel-

  oper: Working in the Real World [SH06] says this: “Agile

  development uses feedback to make constant adjust-

  ments in a highly collaborative environment.” But being

  able to self-correct based on previous performance is pos-

  sible only at the higher skill levels.

  Advanced beginners and competent practitioners often

  confuse software design patterns with recipes, sometimes

  with disastrous results. For instance, I once knew a devel-

  oper on a project who had just been exposed to the Gang

  of Four (GoF) book. In his enthusiasm, he wanted to start

  using design patterns. All of them. At once. In a small piece

  of report-writing code.

  He managed to jam in about seventeen of the twenty-

  three GoF patterns into this hapless piece of code before

  someone noticed.

  Stage 5: Expert

  Finally, at the fifth stage, we come to the end of the line: the expert.

  Experts are the primary sources of knowledge and

  information in any field. They are the ones who con-

  tinually look for better methods and better ways of

  doing things. They have a vast body of experience that they can tap

  into and apply in just the right context. These are the folks who

  write the books, write the articles, and do the lecture circuit. These

  are the modern wizards.

  Statistically, there aren’t very many experts—probably something

  on the order of 1 to 5 percent of the population.6

  6.

  See Standards for Online Communication [HS97].

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  DREYFUS AT WORK: HERDING RACEHORSES AND RACING SHEEP

  37

  Experts work from intuition, not from rea-

  son. This has some very interesting rami- Experts work from

  fications and raises some key questions— intuition.

  what is intuition, anyway? (We’ll delve

  more into the details of intuition throughout the book.)

  Although experts can be amazingly intuitive—to the point that it

  looks like magic to the rest of us—they may be completely inartic-

  ulate as to how they arrived at a conclusion. They genuinely don’t

  know; it just “felt right.”

  For instance, suppose a physician looks in at a patient. At a glance,

  the doctor says, “I think this patient has Blosen-Platt syndrome;

  better run these tests.” The staff runs the tests, and indeed, the

  doctor is correct. How did she know? Well, you could ask, but the

  doctor may well reply with “He didn’t look right.”

  Indeed, the patient just didn’t look “right.” Somehow, in the vast

  array of experiences, distilled judgment, memories, and all the rest

  of the mental effluvia in the doctor’s brain, a particular combina-

  tion of subtle clues in the patient came together and suggested a

  diagnosis. Maybe it was the skin pallor or the way the patient was

  slumped over—who knows?

  The expert does. The expert knows the difference between irrele-

  vant details and the very important details, perhaps not on a con-

  scious level, but the expert knows which details to focus on and

  which details can be safely ignored. The expert is very good at tar-

  geted, focused pattern matching.

  2.3 Dreyfus at Work: Herding Racehorses and Racing Sheep

  Now that we’ve looked at the Dreyfus model in detail, let’s see how

  to apply the Dreyfus lessons at work. In software development at

  least, it turns out that we tend to apply them pretty poorly.

  Experts aren’t perfect. They can make mistakes just like anyone

  else, they are subject to the same cognitive and other biases that

  we’ll look at later (in Chapter 5, Debug Your Mind, on page 124),

  and they will also likely disagree with one another on topics within

  their field.

  But worse than that, by misunderstanding the Dreyfus model, we

  can rob them of their expertise. It’s actually easy to derail an expert

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  DREYFUS AT WORK: HERDING RACEHORSES AND RACING SHEEP

  38

  Unskilled and Unaware of It

  When you are not very skilled in some area, you are more

  likely to think you’re actually pretty expert at it.

  In the paper “Unskilled and Unaware of It: How Difficulties

  in Recognizing One’s Own Incompetence Lead to Inflated

  Self-Assessments” [KD99], psychologists Kruger and Dun-

  ning relate the unfortunate story of a would-be thief who

  robbed a bank in broad daylight. He was incredulous at

  his prompt arrest, because he was under the impression

  that wearing lemon juice on your face would make you

  invisible to security cameras.

  The “lemon juice man” never suspected that his hypoth-

  esis was, er, suspect. This lack of accurate self-assessment

  is referred to as second-order incompetence, that is, the

  condition of being unskilled and unaware of it.

  This condition is a huge problem in software development,

  because many programmers and managers aren’t aware

  that better methods and practices even exist. I’ve met

  many younger programmers (one to five years of expe-

  rience) who never have been on a successful project.

  They have already succumbed to the notion that a normal

  project should be painful and should fail.

  Charles Darwin pegged it when he said, “Ignorance more

  frequently begets confidence than does knowledge.”

  The converse seems to be true as well; once you truly

  become an expert, you become painfully aware of just

  how little you really know.

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)
<
br />   DREYFUS AT WORK: HERDING RACEHORSES AND RACING SHEEP

  39

  and ruin their performance. All you have to do is force them to

  follow the rules.

  In one of the Dreyfus studies, the

  researchers did exactly that. They took Rules ruin experts.

  seasoned airline pilots and had them draw

  up a set of rules for the novices, representing their best practices.

  They did, and the novices were able to improve their performance

  based on those rules.

  But then they made the experts follow their own rules.

  It degraded their measured performance significantly.7

  This has ramifications for teamwork as well. Consider any devel-

  opment methodology or corporate culture that dictates iron-clad

  rules. What impact will that have on the experts in the team? It

  will drag their performance down to the level of the novice. You

  lose all competitive advantage of their expertise.

  But the software industry as a whole tries to “ruin” experts in this

  fashion all the time. You might say that we’re trying to herd race-

  horses. That’s not how you get a good return on investment in a

  racehorse; you need to let them run.8

  Intuition is the tool of the expert in all fields, but organizations

  tend to discount it because they mistakenly feel that intuition “isn’t

  scientific” or “isn’t repeatable.” So, we tend to throw out the baby

  with the bathwater and don’t listen to the experts to whom we pay

  so much.

  Conversely, we also tend to take novices and throw

  them in the deep end of the development pool—far

  over their heads. You might say we’re trying to race

  sheep, in this case. Again, it’s not an effective way to use novices.

  They need to be “herded,” that is, given unambiguous direction,

  quick successes, and so on. Agile development is a very effective

  tool, but it won’t work on a team composed solely of novices and

  advanced beginners.

  But forces in the industry conspire against us in both directions.

  A misguided sense of political correctness dictates that we treat

  7.

  Cited in The Scope, Limits, and Training Implications of Three Models of Aircraft Pilot Emergency Response Behavior [DD79].

  8.

  Like thoroughbreds, not mustangs.

  Report erratum

  Prepared exclusively for Jose Luis Loya

  gggggggggggggggg

  this copy is (P2.0 printing, January 2009)

  DREYFUS AT WORK: HERDING RACEHORSES AND RACING SHEEP

 

‹ Prev