TrainingConferencesAbout UsContact UsAdvertiseSQE.com

StickyMinds.com: brain food for building better software

Join

Join

Clarify Your Search Criteria
Tips on Using Our Search Feature(s)
StickyMinds.com Home
ResourcesEventsTopicsPowerPassJobs
Home  >  Topics  >  Process Improvement  >  Detail: Cook Until Done

Viewing Item 1 of 4999


Article Picture
Cook Until Done

By Andy Hunt/Dave Thomas

Send This Content to a FriendGet a Short Link to This ContentPrint This Content

Summary: There's no shortage of advice on how you should model, design, test, build, and deploy your software project. Every author, trainer, and pundit will swear up and down that "they know the secret." They know how to build great software--they've done it before and all you have to do is follow their lead. Buy their software, read their books, buy their tools, attend their seminars, and do it just like they do it and you'll be a success, right? But somehow it doesn't seem to be that easy. In this week's column, the first in a series of articles that will explore the different avenues of software development, Andy Hunt and Dave Thomas, the Pragmatic Programmers, begin the journey by revealing that learning software development isn't as easy as the pros make it out to seem. Find out why these books and seminars work for them, but not always for the rest of us.
 
 
Tricentis
What are we doing wrong? 
One trap we keep falling into is the expectation that we can make developing software a "no-brainer." Everyone would adore it if we could just follow this or that process, just follow those rules, and have it all work out. But software development simply isn't amenable to a "no-brainer" approach; here's one reason why. 
 
A few years ago we discovered a helpful tool called the Dreyfus model of skills acquisition. It describes people's needs, how they learn and problem-solve according to their skill level in a particular area. We can use the Dreyfus model to better understand people and the role of process in software development. 
 
For instance, beginners require simple, context-free rules in order to function in a new environment. They don't want to see the big picture--it's overwhelming, confusing, and (to them) irrelevant. Suppose you were giving a recipe to a novice cook. It's not at all sufficient to say "cook until done," because the novice has no experience to determine what "done" means. A novice needs to be told to cook it for thirty-five minutes at 350 degrees. No more, no less.  
 
Advanced practitioners, on the other hand, "must" have access to the big picture or they won't be able to function. If you tell an expert chef to cook anything for exactly thirty-five minutes at precisely 350 degrees they will, at best, ignore you. "Cook until done," while meaning nothing to a novice, speaks volumes to an experienced chef. It means taking into account the humidity, the condition of this particular batch of ingredients, the vagaries of the equipment in question (that oven always runs hot), the color of the dish, the aroma, and so on. 
 
 
Full Brainer 
Any process that tries to reduce software development to a "no brainer" will eventually produce just that: a product developed by people without brains. Instead of trying to turn software development into a "no-brainer" activity, we need to recognize that it's a "full-brainer" activity, and deal with it accordingly. Pragmatic programmers realize that everything can be questioned, and hopefully improved upon. 
 
Consider the very role of process and rules. In the original Dreyfus research, experienced airline pilots were called on to create rules for the beginners. They did, and the beginning pilots followed them just fine. But then the researchers sneakily turned the tables and made the experienced pilots follow their own rules--strictly.  
 
It killed their performance. 
 
Whether you're attempting to follow eXtreme Programming or achieve CMM Level 5, one size for all the team members simply will not fit. Beginners need rules, but you can't force advanced practitioners to follow them. Not everyone is capable or comfortable working in a pair-programming environment, and very few people are effective or comfortable in producing excruciatingly detailed designs for something they haven't built yet. Both groups (and the shades of gray in between) have different needs, and the successful project accommodates each of them. 
 
But that's quite a burden to put on a process or a project manager exclusively, so we'll have to pick up some of the slack ourselves. That means that we as pragmatic, forward-thinking individuals have to get better at two key things.  
 
Two Primary Activities 
Developing software is largely composed of two activities: learning and communication. Surprised? Those probably aren't the two chief activities that came to your mind first. But in one form or another, that's what fills our days. We're always learning--not just new technology, but the problem domain, the quirks of the users/clients, the characteristics of the evolving system itself. Similarly we're always communicating: with the machine, with the users, with each other, and sometimes even to a family member who wonders just exactly what it is we do all day. These activities, while critical to success, are also very personal. The good news is that you can do something about it yourself, without any corporate mandate. 
 
In this continuing column, we'll look at many different aspects of software development. But underlying it all, we'll be talking about the raw ingredients of software development--us developers, and how we can improve ourselves, our projects, and our teams. 
 
As it turns out, the final frontier isn't outer space at all. It's inner space--our own minds. Join us in stretching the frontier.


About the Author
Andy Hunt and Dave Thomas are partners in The Pragmatic Programmers, LLC, specializing in helping people find better ways to develop software.

They helped author the now-famous Agile Manifesto, and speak internationally on new ways of producing software. From their best-selling book, The Pragmatic Programmer, to the new titles from their Pragmatic Bookshelf publishing company, Dave and Andy are there to help programmers stay on top of their game.

Andy and Dave are regular contributors to StickyMinds.com. Contact them via www.pragmaticprogrammer.com.

Back to Top
 
 

Member Comments
Add Your CommentExpand Comments
 
Comment:    
by Duncan Green 10/23/2009

For me the two central activities are communication and reasoning. Both of these are only made possible by the development of consistent and meaningful language. In the context of incremental delivery, this is very hard to achieve. Engineers who realize that the essence of the problem is semantic not technical are very thin on the ground...

 
 
Comment:    
by Rose Eliff 1/18/2006

Andy & Dave - You gave me some very interesting points to consider, particularly, the Dreyfus research comparing beginners to experienced practitioners (and the always-erudite John D's French chef example) and the point about learning and communication. Well done, gentlemen! In my experience, we can all do the "communication" part of that equation better. Too often, all the information about the vagaries of a system lie with just one or two individuals; the info is only in their heads, isn't documented for reference by others, and isn't communicated in any forum for others to learn from. When those people either vacation or...Read On

 
 
Comment:    
by John Daughety 1/18/2006

After a lot of experience with many different "models for success", I have found one thing to be true - if any one of many valid processes is chosen, the real key to success is injecting a common, shared vision of this process in every team member. When you go to chef school in Paris, they don't teach you how to read instructions and translate the different shortcuts for amounts of ingredients. They teach you how to "know" when the souffle is just the right consistency, when a merengue has been mixed just the right amount, or when a goose is "done". Upon graduation, each person "knows" in his/her...Read On

 
 
Comment:    
by Johannes Trost 4/19/2005

"learning and communication", I fully agree with you. Since years I have the problem to make that clear to my managers. L&C can not be seen by the customer, therefore it can not be sold, therefore planning is not focussed on L&C. What is paid for is code that in some sense does what the costumer expect produced within minimum time. Learning & Communication is seen as an expensive add-on.

Author's Response:
5/18/2005    
Right -- the problem is that it's not an add-on, it's an investment in the team's infrastructure. It's really no different than investing in an IDE or a compiler, but because it's less tangible many companies tend to disregard it completely.

 
 
Comment:    
by Andy Hunt 4/14/2005

The previous pooster said "Just remember that one of the main reason for a standard to exist is just that - to make the process for beginners a no brainer." The only way that can work is if the rules are context-free an unambiguous. In the kitchen at Burger King, it seems to work fine. In the domain of software development, that's not usually the case -- context is key, and that causes a great deal of problems. Take patterns, for instance. Patterns have been terribly misued by under-experienced practitioners who lack appreciation of the context in which they should be used. You can't give context-free rules for when and...Read On

 
 
Comment:    
by Vitaly Vigasin 4/13/2005

The problems with processes that do not work are: 1) they are not actually followed 2) they are not understood 3) they themselves are not good My experience is that the processes are most often not understood - and THEREFORE are not followed. Just remember that one of the main reason for a standard to exist is just that - to make the process for beginners a "no brainer". If it does not work, verify either the process itself or how it is understood and followed. You can't specify ABSOLUTELY everything - so make sure that "done" is identically understood by all experienced "chef" in your environment (which...Read On

Author's Response:
5/18/2005    
See my reply in the comment above.

 
 
Comment:    
by Richard Whitehead 3/29/2005

I think I agree 100%. Learning and communication? Now that you mention it, absolutely.

 
 
Comment:    
by Tanmay Vora 3/29/2005

I so agree with you when you say that the two most important ingredients for successful software development are learning and communication. One more key ingredient is the practical application of these learnings - about technology, processes and people. Software development is all about taking a practical approach and using lots of common-sense to get the best results. Look forward to some exciting stuff ahead.

Author's Response:
5/18/2005    
It's coming! We've got new articles coming here, and new book titles coming out shortly. Thanks!

 
 
Comment:    
by Peter Walen 3/28/2005

"Any process that tries to reduce software development to a "no brainer" will eventually produce just that: a product developed by people without brains." Absolutely!

 
 
Comment:    
by Robert M Melendez 3/28/2005

I very much like your title. Can I expect to see "Season to Taste" in the near future?

Author's Response:
5/18/2005    
Hmm. Hadn't thought of it that way. I suppose a few Habanero peppers would spice things up a bit...

 
Back to Top

May We Suggest...
Show All

Articles & Papers

Templates

Links

Books

Tools

Related Products
Testing Training Courses
Software Testing Certification, Systematic Software Testing, Test Management, Mastering Test Design, Just-in-time Testing

Software Engineering Training
Mastering the Requirements Process, Requirements Modeling, Introduction to the Capability Maturity Model Integration, Business-Driven Software Measurement

Agile Software Development Training
Scrum Master Implementation Workshop, User Stories and Estimation in Agile Development, Design Patterns Explained, Practical Test-Driven Development

 
Ads By Google
What's This?
 
 



About Us   |   Contact Us   |   Terms & Conditions   |   Privacy Policy   |   RSS Feed



© 2013 StickyMinds.com. All rights reserved.
PNSQC

Tricentis

Agile Development Conference & Better Software Conference West