TrainingConferencesAbout UsContact UsAdvertiseSQE.comRSS Feed

StickyMinds.com: brain food for building better software

Log In
 Clarify Your Search Criteria

Tips on Using Our Search Feature(s)
 
StickyMinds.com Home
ResourcesTopicsCommunityPowerPassBlogs
Home  >  Detail: Experts, Craftsmen, and Ignorance

Viewing 1-5 of 5     Collapse Descriptions

Sort by:   Date Posted  |  Title  |  Content Type  |  Relevancy


This is Free Content BOOK: Apprenticeship Patterns    
Author: Dave Hoover and Adewale Oshineye

Pages: 199   Published: 2009

Description: Are you doing all you can to further your career as a software developer? With today's rapidly changing and ever-expanding technologies, being successful requires more than te...More

This is Free Content Original
COLUMN: The Empty Cup
Author(s): Dave Hoover
Summary: Feigning competence is human nature, but unveiling your ignorance about a subject may lead to myriad learning opportunities and an accelerated path toward craftsmanship. In this week's column, Dave Hoover shares a story of two consultants who found themselves on the same learning path, but learned different lessons as each dealt with his own limitations differently.

Date Posted: Dec 8, 2005
Comments on this contentComments: 6

This is Free Content Original
COLUMN: Experts, Craftsmen, and Ignorance
Author(s): Dave Hoover
Summary: The people who are paying you to be a software developer are depending on you to know what you're doing. How can you instill in people confidence that you can deliver when you are unfamiliar with the required technology? In this week's column, Dave Hoover tells you how to build confidence by showing the people who rely on you that delivering software involves a learning process. Then allow them to watch you grow.

Date Posted: Aug 18, 2005
Comments on this contentComments: 5

This is Free Content Original
COLUMN: Ping-Pong Programming
Author(s): Dave Hoover
Summary: Team player Dave Hoover wants to share a software development practice he enjoys. It emerged from the practices of extreme programming as a competitive yet simultaneously collaborative practice. Dave has found that this practice promotes the flow of knowledge between software developers better than any other practice he has experienced. As you might have guessed from the title of this week's column, this practice is called ping-pong programming, or P3 for short.

Date Posted: May 31, 2005
Comments on this contentComments: 7

This Content is Accessible by PowerPass UsersMAGAZINE ARCHIVE: It Takes Two to Tango
Author(s): Rachel Davies
Summary: Pair programming is an Agile practice that has been shown to greatly improve code quality without a huge increase in development time. This article explains the ins and outs of pair programming and some things you need to consider before you tell team members to grab a partner and get programming.
Type of Article: Feature: Management & Teams
Better Software Issue: April 2005
Date Posted: Apr 28, 2005


Sort by:   Date Posted  |  Title  |  Content Type  |  Relevancy

Viewing 1-5 of 5 
Collapse Descriptions  

Viewing Item 1 of 5


A StickyMinds.com Original
Article Picture
Experts, Craftsmen, and Ignorance

By Dave Hoover

Send This Content to a FriendGet a Short Link to This ContentPrint This ContentSee User Comments About This Content

Summary: The people who are paying you to be a software developer are depending on you to know what you're doing. How can you instill in people confidence that you can deliver when you are unfamiliar with the required technology? In this week's column, Dave Hoover tells you how to build confidence by showing the people who rely on you that delivering software involves a learning process. Then allow them to watch you grow.


ThoughtWorks
Human nature tells you to look competent. As software creeps deeper into our everyday lives, our society is increasingly dependent on your competency. Yet because of the continually evolving software development landscape, the average practitioner has many zones of ignorance. You are in a bind. The people around you are under tremendous pressure to deliver software, including your manager, your client, your colleagues, and especially you. You can see this need for confidence in their eyes when they ask you how long it will take you to finish task X. There can be tremendous pressure to pacify these people, to reassuringly tell them that you know precisely what they want, how you're going to give it to them, and when. 
 
A software craftsman's reputation is built through strong relationships with clients and colleagues. Conceding to unspoken pressures and telling people what they want to hear will not build strong relationships in the long run. Tell them the truth. Let them know that you're starting to understand what they want and you're in the process of learning how to give it to them. If you reassure them, reassure them with your ability to learn, not by pretending to know something you don't. This way, your reputation will be built upon your learning ability rather than what you already know. 
 
Get used to this learning process; this is the road to craftsmanship. Those of us uncomfortable with this process become experts: people who achieve expertise on one platform or in one domain and stick with it. Because of an expert's narrow focus, she can deliver functionality into a specific context better than anyone. While it is certainly important and inevitable for our industry to have experts, this is not the goal of the apprentice. 
 
Expertise is a byproduct of the road to mastery, not the destination. Over the course of a craftsman's journey, she will work with countless technologies and domains. If, through practice or necessity, she develops expertise in one or more of them, so much the better. This is to be expected, just as the woman training for a marathon develops stronger leg muscles. She's not training to have strong legs, she's training to run. Like the motivated developer who after working on a Python project for two years achieves a deep knowledge of Python, the marathon runner's strong leg muscles are a means, not an end. 
 
The critical distinction between a craftsman and an expert is what happens after a sufficient level of expertise has been achieved. The expert will do everything she can to remain wedded to a single context, narrowing the scope of her learning, her practice, and her projects. (You can make good money by doing this.) The craftsman has the courage and humility to set aside her expertise and pick up an unfamiliar technology or learn a new domain. 
 
Experts focus intensely on what they already know, and, at the cost of ignoring their ignorance, they work hard to know more of the same. Craftsmen could be considered experts at learning, who identify an area of ignorance and work to reduce it. Like the soil in a garden, an area of ignorance can be transformed by cultivating seeds of knowledge. Be honest with yourself and the people who are depending on you; ask colleagues for help. Thus, you water these seeds by learning through experimentation, practice, and reading. Or you can choose to hide your soil of ignorance from the light. Embarrassed by its size, you cover it with a tarp, and your pride remains intact. The difference between an expert and craftsman is the difference between having a great garden and being a great gardener. 
 
The expert has in-depth knowledge into a few threads of technology. With these threads, the expert has the ability to weave together robust software applications on a small number of platforms and domains. The master craftsman has the ability to weave a tapestry out of myriad threads. No doubt she will have her favorite threads, and her favorite combinations, but the number of threads will be high, allowing the master craftsman to adapt into a wide range of technological environments. This is where the road to mastery takes you. By exposing and confronting your ignorance, you will spin the missing threads much more quickly than by faking it in order to appear competent. 
 
Editor's Note: This article was adapted from one of the patterns from Dave's book-in-progress From Apprentice to Journeyman: Guidance for the aspiring software craftsman. For more information about this emerging pattern language, visit http://redsquirrel.com/dave/work/a2j/.


About the Author
Dave Hoover spends his days struggling to keep up with his fellow ThoughtWorkers, his wife, and his three children. He enjoys learning about and contributing to the craft of software development. Dave used to have a respectable job as a family therapist. He still wonders how he got here. You can read Dave's blog at http://redsquirrel.com/cgi-bin/dave.

Back to Top
 
 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Greg Hutchings 9/3/2005

I appreciate your article's emphasis on learning, humility and honest communication, Dave. We need not pretend to always have the answer... being creative, resourceful and willing to try is more important than knowing.

 
 
Comment:    
by jennifer orji 9/2/2005

"Craftsmen could be considered experts at learning, who identify an area of ignorance and work to reduce it." aptly put - doesnt make them jack of all trades just masters at what they decide to change. people ought to think about why they join this profession - this what its all about

 
 
Comment:    
by Stefan K. 8/30/2005

Well put! I enjoy reading this article much and the usage of the term "craftsman". My 2c is one must be honest to oneself and in order to mature in the respective industry, one must further his learning. If one does not know an area, say it so and find out how to get familiar and good with that area.

 
 
Comment:    
by Gene Fellner 8/29/2005

Thanks for the terminology normalization. I am delighted by your unabashed use of the word "craftsman." I have long been a critic of the term "software engineering." I think the way we build a software application has far more in common with a woodworker turning several beautiful pieces of wood into a custom cabinet than with a civil engineer following a set of scientific principles to design and construct a bridge. Art and experience combine to become craft. Craft and science combine to become engineering. The process you describe is exactly the way craftsmen in other disciplines work. I think that if we focus on...Read On

 
 
Comment:    
by Meera Sharma 8/29/2005

Hi Dave, I agree with you up to an extent. But isn't it true that it is better to be master of one rather than a jack of all trades?

Author's Response:
8/29/2005    
I'm not against mastering specific technologies or domains. I am encouraging software craftsmen to feel comfortable learning new technologies and domains after they have already mastered others. It is this ability to learn that is one of the most fundamental skills of software craftsmanship.

 
Back to Top



 
Ads By Google
What's This?
 
 



Home   |   Resources   |   Topics   |   Community   |   PowerPass



© 2010 StickyMinds.com. All rights reserved.
StickyMinds.com is a division of Software Quality Engineering.
Privacy Policy    Terms & Conditions    Link to StickyMinds.com    Feedback


ThoughtWorks




STARWEST 

Agile Development Practices