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


   

 
 
Download Current Issue
ISSUE 2/1/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Is Microsoft eyeing Office subscription pricing?
Microsoft may be preparing to offer a new Office pricing option called "union," which charges the same for cloud as on-premises.
02/01/2010 09:38 AM EST

Facebook rewrites PHP runtime
Facebook is about to open source its own PHP runtime, written from scratch for speed.
01/30/2010 08:53 PM EST

There WILL be a JavaOne this year
JavaOne will happen in 2010, as a co-located event with Oracle's OpenWorld, on Sept. 19-23 in San Francisco.
01/27/2010 01:02 PM EST

 

Events calendar tab
2/9/2010 to 2/13/2010
San Francisco
IDG World Expo

2/10/2010 to 2/12/2010
San Francisco
BZ Media

2/17/2010 to 2/25/2010
Atlanta
Python Software Foundation

2/19/2010 to 2/20/2010
Los Angeles
SCALE

2/21/2010 to 2/24/2010
Las Vegas
IBM


 
Most Read Latest News Blog Resources

A Culture of Fear




April 15, 2006 — 
As I write this column in mid-March, the venerable SD West conference (www.sdexpo.com) is just winding down. SD West is still one of the best conferences out there if you’re interested in actually learning something. Its sessions are all tutorials, and there’s absolutely no vendor hype—a refreshing change from Microsoft’s Tech-Ed, Sun’s JavaOne and the other big vendor conferences. A few thoughts came to mind while listening to this year’s keynotes, which I’d like to share here.

My first thought was that none of the keynotes covered bold new territory, but the talks were still topical because people just aren’t developing software in a way that works, even though we know how to do just that. How is it that we, as a profession, can know how to get the job done, but we just don’t do it?

ObjectMentor’s Robert Martin, in his keynote, asked if anyone had ever had to work on a piece of code so hideously complicated that it took forever to get even a simple change to work? Everybody raised their hands. He then asked, “So, why did you write it that way?” which engendered a nervous laugh from most of the crowd.

We do write bad code all the time for bad reasons. Some idiotic manager telling us to use AJAX, Web services, application servers and all sorts of other junk to implement a facility that could be written in 20 minutes using a simple socket—that’s all too common.

When it comes to software development, there are very few revolutionary ideas. The most recent example of a truly great idea is the notion of agile processes, which I learned about by reading Kent Beck’s “Extreme Programming Explained” about six years ago.

Few of Beck’s ideas were truly new, but a few stand out as truly inspired. Pair programming and test-driven development, for example. Even now, six years later, it’s still a struggle to get companies to put these ideas into practice, and that reluctance mystifies me.

Steve McConnell, former editor of IEEE Software, talked about process in his keynote. He observed that Extreme Programming (XP), paradoxically, is one of the most heavily documented software development processes. I can’t think of any other software development process that’s documented so thoroughly. This in spite of the fact that the XP folks seem to shun formal documentation. Interestingly, this documentation makes XP one of the easiest software processes to adopt—the rules are laid out for you right there in the books. Nonetheless, nobody seems to be adopting it.

Now don’t get me wrong, I can understand why a manager might approach XP with caution. The disregard of up-front thinking about program architecture is, to my mind at least, a bad idea. Nonetheless, there’s a lot of great stuff in XP. Pair programming really does work, for example. Several formal studies have demonstrated conclusively that short cycle times and regular releases of the software into the hands of real users is one of the two “best practices” that measurably reduce development time and increase quality. (The other is regular design reviews.) Since I’ve done test-driven development, I’ve not only seen my development times cut at least in half, but also have found programming to be a much more enjoyable activity. The pressure of “getting it working” is nonexistent. The code always works. Whenever I make a change, it’s never more than a few minutes from working again.

More to the point, designing the software around use cases (which the XP folks call “stories”) is, to my experience, a profoundly better way to develop software than to start with the technology and work outward toward the UI.

Martin also talked about “blocking”—people not being able to get work done while they’re waiting for someone else to finish something. A use-case-based approach, where a programmer (or a pair) implements a single task that the user needs to do, virtually eliminates blocking. That’s a very different way of working than many of us are used to, however.

Two programmers working on separate use cases in the same program will probably be working simultaneously on the same class definitions and in the same database. You don’t work on a single class definition until it’s done; you work on getting the program to do something useful, modifying as many classes as necessary.

So why aren’t we doing this stuff? It does work, and we know it! The answer is one word: fear. I just quit a CTO job because the CEO was so filled with fear of not getting the software out the door fast enough that he refused to let me do the very things that would get the software out the door fast enough. After being told off one too many times about how I “wasn’t doing anything” (i.e, not sitting in front of an IDE coding), I just gave up. I’m not going to preside over a death march, or be blamed for a failure, when I’m not permitted to do what’s necessary to make the project succeed.

Unfortunately, it’s exactly this sort of fear that makes uneducated managers everywhere sabotage their own projects, and the best way to deal with that fear is education, which brings me back to SD West. Conferences are great venues for learning new ways of doing things.

Education is almost always the first thing to go when budgets get tight, but it’s the only thing that can get you to work effectively within that tighter budget.

Allen Holub is an architect, consultant and instructor in C/C++, Java and OO Design. Reach him at www.holub.com.


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

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading