Most Read Latest News Blog Resources

David Rubinstein: Engineering? There’s the Rub




September 15, 2007 — 
I caught up with Alistair Cockburn at the Agile 2007 Conference in mid-massage. He was on the giving end, working his fingers up and down the forearm of a man who was emitting low guttural sounds as the probing deepened.

“I’m a methodologist,” Cockburn said of his view of he world, “but I try not to do massage the same way each time.” He said he uses empathy to identify pain points, so he can home in on muscles that need kneading. “When I feel the person get calm, I get calm, and the two of us are living in this greater pool of calm,” Cockburn explained. “I can do this for hours.”

Cockburn had transformed the conference’s book-signing area into a mini-spa, complete with headrest for the weary attendees he deigned to rub, but eventually the conversation turned to “Agile Software Development: The Cooperative Game, Second Edition,” the update to his seminal 2001 work, and his other current efforts, which include the creation of a university course in software engineering.

That last part might seem surprising, coming from a man who is on record as saying the term “software engineering” has no meaning. But Cockburn has revisited the term, and is now finding places where manufacturing and engineering map to software development.

“Engineering—the verb is interesting. What are the actions? They are the trade-offs in an overconstrained situation to come up with a result that’s acceptable,” Cockburn said. He went on to describe three anchors of software engineering: craft, the “cooperative game,” and the application of lean manufacturing techniques.

The craft, the hands-on portion of development, has a number of steps, including project management, deciding what to build, large-scale decisions of architecture, testing, modeling, and the small-scale decisions of programming.

The cooperative game aspect involves situations and strategies to get the team to achieve its goal, which is to deploy software and then get ready for the next deployment of software. “This is where you find out where the bottlenecks are,” Cockburn said.

A game, Cockburn has written, has three main characteristics: It can be finite or infinite; it can be competitive or cooperative (tennis versus rock-climbing); and it can be terminated by reaching a goal or time limit or can simply end according to the volition of players (think of jumping rope). Software development can be described in terms of a goal-terminated cooperative game—one that requires invention and communication for success, Cockburn said. The speed of the project is directly tied to the speed with which members of the team can communicate information. Invention describes how members of the team create paths to get to the end point.

The lean manufacturing principles of mathematics and strategy “pick up the issues of critical safety, distributed work and all of agile,” Cockburn said. “Software development fits naturally.”

Engineering, he concluded, can be seen as an overconstrained area requiring trade-offs to come up with results that are acceptable. Thus, engineering and software development do share some commonality.

Cockburn is sharing his approach to software development with Utah Valley State College, for which he is writing a university course and text.

Turning to his updated book, Cockburn explained that he has updated much of the information in sections marked with gray bars on the sides of the pages, so they can be found easily. In one notable section, Cockburn tries to correct some of the misperceptions that would-be agile developers relay to their managers.

Two examples: Iterations must be short, the developers say. But not too short, Cockburn cautions, lest completing any new features becomes impossible. Developers say agile teams must be in the same place, physically speaking. But Cockburn says distributed teams can do agile as well, and he points out that synchronizing the codebase becomes more important for distributed teams, where communication is not as rapid.

In another section of his revised book, Cockburn describes new topics in agile methodologies, including test-driven development and user interface design.

Cockburn admits that five years ago, he did not consider automated testing a critical project success factor, but now that project teams are shortening their iterations and refactoring more often, he has decided that automated testing and test-driven development need to be thought of as a core practice. As for UI design, he wrote he’d rather think of it as UX design—for the user experience. A balance must be struck, Cockburn said, between giving these UX designers the time they need to research user needs and maintaining incremental development to get a consistent big picture.

Always seeing the big picture, Cockburn went looking for his next massage.

David Rubinstein is editor-in-chief of SD Times.


Share this link: http://www.sdtimes.com/link/31139
 

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading



 
 
 
 
News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 
Download Current Issue
ISSUE 3/15/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Google Code turns 5
Google Code Turns 5, and adds a Paxos Algorithm to make the system more stable and reliable.
03/17/2010 11:16 AM EST

Test your Visual Studio 2010 know-how
Microsoft is offering free beta certification exams for Visual Studio 2010.
03/17/2010 11:08 AM EST

Microsoft lifts the hood on IE9
Microsoft is previewing IE9.
03/16/2010 01:10 PM EST

 

Events calendar tab
3/22/2010 to 3/25/2010
Santa Clara, Calif.
The Eclipse Foundation

4/12/2010 to 4/14/2010
Las Vegas
Penton Media

4/12/2010 to 4/15/2010
Santa Clara, Calif.
O'Reilly Media

4/19/2010
New York City
Flagg Management

4/25/2010 to 4/28/2010
Overland Park, Kans.
IIUG