Wordyard

Hand-forged posts since 2002

Scott Rosenberg

  • About
  • Greatest hits

Archives

Free Dreaming in Code paperbacks for bloggers

February 25, 2008 by Scott Rosenberg 8 Comments

It’s been fantastic keeping track of the reviews and critiques of Dreaming in Code in the blogosphere for a whole year. I’ve diligently stored them by a Delicious tag, and fed them via that mechanism into a widget on the book Web site’s front page. Today there’s 275 URLs in that list.

To get the word out about the paperback release, I’ve gotten my publisher to donate some copies for me to hand out, here, free, to anyone with a blog who wants to read it. All I ask is that you post something about the book — positive, negative, indifferent, that’s up to you. Go ahead, tell me you think it sucks! Just write about why.

Yeah, one goal here is to promote the book. But I also wish to bow in the general blogospheric direction. I owe ye, bloggers, big time!

So: want a copy? Just drop me email at scottr /at/ this blog’s domain (or use the form, Luke). Send me your blog’s URL and your snailmail address so I can send you a book. I’ve got a bunch here. First come, first served, till they run out.

UPDATE: Sorry, the books are all gone…

Filed Under: Dreaming in Code

Dreaming in paperback

February 25, 2008 by Scott Rosenberg Leave a Comment

This week, the paperback edition of Dreaming in Code arrives in stores. (And of course at Amazon, too.) The official publication date is Tuesday, Feb. 26 — tomorrow.

What’s the paperback like? It’s just like the hardcover — only the price is a bit lower, and there’s a new postscript bringing the Chandler story farther along. Pay a little less, get a little more. A deal, no?

In honor of this event, the next few days here are going to be a bit Dreaming in Code-focused.

Filed Under: Dreaming in Code

OOPSLA podcast cornucopia

February 22, 2008 by Scott Rosenberg 2 Comments

OOPSLA is the ACM conference that most broadly and widely addresses the sorts of questions I tried to explore in DREAMING IN CODE. I found the two events that I’ve attended, in 2004 and 2006, both highly rewarding. I couldn’t make the 2007 edition in Montreal, but I was delighted to find this page of podcast recordings of many of the conference’s highlights.

I’ve only had time to dip my toes in this stuff so far; there are talks by David Parnas, Fred Brooks, John McCarthy, Patti Maes, Guy Steele, Richard Gabriel, Gregor Kiczales and many others.

Filed Under: Code Reads, Dreaming in Code, Software

Spolsky: how programmers redefine their way around hard problems

February 20, 2008 by Scott Rosenberg 1 Comment

I only just caught up with Joel Spolsky’s amusing and insightful Yale talk posted last December — a return-of-the-prodigal-son sort of thing for this Yale graduate. (Here’s parts one, two and three.)

These quotes were worth highlighting:

Time and time again, you’ll see programmers redefining problems so that they can be solved algorithmically. By redefining the problem, it often happens that they’re left with something that can be solved, but which is actually a trivial problem. They don’t solve the real problem, because that’s intractable.

This is a failing, in one sense — it’s why certain Big Problems in the field never seem to get solved. On the other hand, in the face of deadlines or business pressures, we can surely see the value in a programmer’s ability to take some problem that’s impossible to solve (given available resources) and redefine it as a job that can actually be accomplished.

And:

Being able to write clearly on technical topics is the difference between being a grunt individual contributor programmer and being a leader.

The hardest problems facing most programmers don’t involve communicating with the computer; they arise in the course of communicating with people — colleagues, customers, users.

Filed Under: Dreaming in Code, Software

A year of Dreaming in Code

January 18, 2008 by Scott Rosenberg 4 Comments

I can’t believe that it’s been a whole year since my book came out (the official publication date was Jan. 16, 2007). The paperback will be out the third week in February, with a new afterword that carries the story through the release of Chandler’s Preview edition. The recent restructuring and cutbacks of the project are foreshadowed in this section. But they happened way past the time we could have added material, which is too bad — but I guess that’s one reason that I have a blog.

I’m proud to say that Dreaming in Code also recently went into its fifth hardcover printing. We did pretty well for a book about a Beckettian software project.

This is a good moment to thank Mark Bernstein for his warm review of the book, which posted over the holidays, so I caught up with it late. I’ve met Bernstein only a couple of times — many years ago at one of the Digital Storytelling Festivals in Colorado, and then once again at one of the Bloggercons. He’s a formidable innovator and leader in the field of serious hypertext fiction, and a software entrepreneur as well, both under the umbrella of his company Eastgate Systems. One of Eastgate’s products is a Mac-based PIM called Tinderbox, one of the very few programs I know of that fulfills at least a portion of the ambitions that Chandler set out with.

Anyway, here’s a bit from his post:

On this framework, Rosenberg hangs a masterful and engaging survey of the thinking that underlies contemporary software engineering. This overview will have lasting importance, as I think it’s destined be the textbook that introduces a generation of students throughout the world to the professional practice of software and to its founding voices — Brooks and the Mythical Man Month, Parnas, Joy, the postmoderns, the agilists.

He also offers some fair criticism:

What Rosenberg doesn’t capture — because Chandler seldom captured it — is the way software actually gets written: in slow, steady segments, in dashing sprints, in long nights of inspiration, in weeks of staring at the screen, but always — in the end — by one or two people working to get something to work. In practice, this usually means one or two people imagining how it might work, and then making it happen. There wasn’t enough of this in Chandler, and when it did happen, it too often happened to infrastructure, deep in foundations that were expected to underpin grand structures that were never built.

But concludes:

To have carved such a fine, generous, and useful book out of the debris [of Chandler] is a very fine accomplishment indeed.

I’m grateful for such a response. Bernstein has also posted some fascinating ideas on what he calls “NeoVictorian Computing,” which I keep intending to post on. Soon!
[tags]chandler, mark bernstein, tinderbox[/tags]

Filed Under: Dreaming in Code

OSAF cuts back — Chandler leaving the nest

January 11, 2008 by Scott Rosenberg 11 Comments

Earlier this week the Open Source Applications Foundation — the organization developing Chandler, whose work I followed for three years and whose story I tell in Dreaming in Code — announced what it called a “restructuring,” which meant laying off roughly 2/3 of its employees. (Infoworld’s story has the basics.)

So does this mean that Mitch Kapor, OSAF’s founder and chief funder, is “pulling the plug” on OSAF, as Techdirt has it, or “bailing on” Chandler, as a CNET blogger put it?

Kapor is indeed leaving the OSAF board and handing the rest of the reins to Katie Capps Parlante, who’s been running the project day-to-day for some time. That’s a big change. From what I can tell, though, this isn’t so much a “plug-pulling” as an amicable parting of the ways.

Kapor’s financial withdrawal is not a big surprise. He had told the Chandler developers several months ago that he intended to fund the project through the end of 2008 but no further; that decision had been discussed on the project’s public mailing list, so the looming changes couldn’t have come as a total shock to anyone who’d been following the story. (I write about these changes in a new epilogue to DREAMING IN CODE that will be included in the forthcoming paperback edition, due out in late February.)

What actually happened at the end of 2007, according to Parlante, who I interviewed today, is that OSAF and Kapor agreed that it would be healthy for the project to move out from under Kapor’s wing faster than they originally envisioned. Over the past year, Kapor has been less involved with Chandler and more focused on new projects (such as Foxmarks), and Parlante says that the project leaders felt that if they were headed towards independence anyway, it made sense to move faster.

“We’ve been joking that we laid off Mitch,” she says.

At that point, Kapor agreed to provide transitional funding for the group — less than he’d originally planned when envisioning paying the entire project’s bills for another year. That triggered the staff cuts.

How much exactly did Kapor commit? Referring to the deal that launched the Mozilla Foundation in 2003, which Kapor brokered when AOL was shutting Netscape down, Parlante says, “He’d told AOL to give Mozilla enough support for it to become viable on its own, and he decided he should follow his own advice with us.” (In 2003, AOL put up $2 million, and Kapor himself put up $300,000, to fund the Mozilla Foundation, which is now a hugely successful enterprise, based on Firefox’s revenue from Google.)

Chandler started in 2002 as a high-profile project that aimed to produce a novel personal-information manager and demonstrate that the open source development methodology could produce innovatively designed desktop software. But the work proceeded at an agonizingly slow pace, and it took about five years for OSAF to ship a usable “Preview” edition last fall.

So there’s no question that the cutbacks represent a come-down for a project that started out with such grand ambitions and golden prospects. But surely there are better metaphors for what’s happening than “pulling the plug”: “leaving the nest,” perhaps. In fact, as of the end of the month, OSAF will move out of its longtime home at Kapor’s offices on Howard Street in San Francisco’s SOMA district and become a virtual team.

From the start of OSAF, Kapor had made clear that he did not envision the project as an open-ended philanthropic obligation, but rather as a test-bed for new ideas in software design and project organization. During the time I spent at OSAF, he would regularly repeat his belief that OSAF ultimately needed to become financially self-sustaining.

Parlante says OSAF will use its transitional funding period to explore lots of different business models — everything from selling advertising or charging for service to community support (donations and fundraising) to business partnerships or deals to bundle the Chandler Hub server with other products. “Open source business models are always a little up in the air, they’re always changing — that’s true even of Mozilla,” Parlante says.

Can Chandler survive on its own? Right now I’d give it good odds for continuing in some form: as long as there are developers interested in continuing work on it, there’s no reason for it not to. It will be harder, but by no means impossible, for the organization to find enough money to support a small full-time staff beyond the transition.

The obituary writers are already chomping at the bit. And of course many of the criticisms of OSAF’s mistakes are accurate. Still, those mistakes are now history. Since shipping the Preview version of Chandler its team has sped up the flow of new releases, new features and bug fixes, suggesting that the pressure of looming independence has already made a difference. The question is, does Chandler today offer enough innovative value to build a thriving community and win support — both volunteer development effort and cash?

Given the history, it would be foolhardy to say “yes” for sure; but I think it’s also a mistake to say “no way.”

I’m a veteran of a company that spent roughly three years disproving premature reports of its demise. Salon is still around and doing good work. It’s certainly going to be challenging for OSAF to continue on its own, and it’s entirely possible that the organization will be gone within a couple of years. But writing it off today seems wrongheaded to me.

Of course, in spending so much time and thought on telling Chandler’s story, I invested something of myself in it, too, so maybe I’m just unwilling to let go. But there are other indicators that the project is unlikely to simply evaporate.

At the very moment that OSAF announced its cutbacks and the obituary writers jumped the gun, geek-hero blogger Cory Doctorow posted an enthusiastic endorsement of Chandler on the extremely popular BoingBoing. Doctorow’s post might be part of an effort to rally support for Chandler among its users now that its future isn’t guaranteed. That’s what happens when an enterprise that people care about is threatened. Or maybe it was a spontaneous coincidence — that happens too!

The big question is whether enough people care enough about Chandler to keep it afloat. In a sense, that is the final experiment in the OSAF lab, and as long as Kapor continued to fund the project out of his own deep pockets, it would never be able to get results.

* * *
I’ve posted this before I’ve had a chance to talk with Kapor, because this story is already generating a lot of commentary. I’ll update as needed. This is what he told Infoworld:

“I would say I had a lot of ambitions that we wound up, for very good and practical reasons, scaling back on,” Kapor said in an interview Thursday. He described the outcome as “a working subset of a grand vision.”

Kapor said his interest in continuing waned. “We found ourselves in the situation that the team wanted to continue on very much,” he added. “I found myself in a different place. I did not have that same level of commitment and desire, because I had the original dream in mind.”

UPDATE: I did catch up with Mitch Kapor late today. He confirmed the accuracy of this account. “It’s time for me to move on,” he said. See also Kapor’s own blog post on this topic.

I’ve also received a couple of anonymous emails from people involved in the project, suggesting what I’m sure is just the tip of the iceberg of disagreements over Chandler’s direction, its leadership, and the personnel choices involved in the layoffs. Having lived through the difficulty of such events more than once myself, I know that they’re deeply emotional — and that there is often more than one “right” view of the situation. I haven’t been following Chandler closely enough for the last couple of years, since I wrapped up the book, to gauge the accuracy of these perspectives.

I also don’t yet know exactly who’s leaving. I’ll try to link to the participants’ own reports. Here’s Ted Leung’s announcement of his departure. Here’s Matt Eernisse’s. And Mike “Code Bear” Taylor’s. Taylor and Eernisse have both joined Seesmic, Loic LeMeur’s new startup. Brian Moseley, who for a long time was the central developer for the Cosmo Server (later Chandler Server), is also leaving.

Funny footnote: Moseley and I crossed paths a decade before we met at OSAF; he was part of a small development team of Cornell students who wrote the first, somewhat disastrous version of Salon’s Table Talk in 1995. He’s plainly become a very different developer in the interim. His colleagues went on to fame and fortune during the dotcom boom before going bust.

Filed Under: Dreaming in Code, Software

A year of Code

December 19, 2007 by Scott Rosenberg 1 Comment

It really has been a great year for Dreaming in Code — many thanks to all of you who helped make it so. The book started off with a rush of interest sparked by Joel Spolsky; I got to present the book to interested crowds at Yahoo, Microsoft and Google, and talk about it on a bunch of radio shows; and sales of the book held steady all year.

Now it’s the season of year-end lists, and my book has turned up on the Chicago Tribune’s list of “Our Favorite Books of 2007”. Some kind bloggers have also put it on their year-end lists — I’m grateful.

I’m also happy to have received a detailed and thoughtful write-up by Michael Schrage, the longtime technology columnist and commentator, who selected Dreaming for his list of favorite books of 2007 in Strategy and Business.

The paperback is due out in February, with a new epilogue, taking the Chandler story further down its still open road.

And, yes, there’s another book in the works where that one came from. I should be posting more about it pretty soon now…

Filed Under: Dreaming in Code, Personal

Perfect software? More on Cantrill and Dreaming

November 13, 2007 by Scott Rosenberg 16 Comments

Bryan Cantrill has now fleshed out his critique of Dreaming in Code that I recently addressed. I want to thank him for returning to the topic and giving it serious consideration. I’m going to respond at length because I think, after clearing away a lot of smaller points, we’ve actually found an interesting point to dispute.

As far as I can tell, Cantrill is now saying that the problem with Dreaming is that it starts from the notion that “software is hard” and then explains why it’s hard by exploring what makes it unique — and he would have preferred a book that started from the notion that software is unique and then explored why its uniqueness makes it hard. At some point this becomes pretty abstruse, and I’ll leave it to those of you who want to compare what Cantrill says with what’s in the book to weigh our different perspectives.

I do want to correct his statement that I “picked a doomed project” from the start, as if that was my intention, in order to support a pessimistic view of software. At the time I began following Chandler, it had high hopes and a lot of enthusiastic support. I chose it because I cared about the problems it set out to solve, I thought the people involved were interesting, and I thought it had a reasonable chance of success. 20/20 hindsight leads Cantrill to dismiss Chandler as an ill-fated “garbage barge” from the start. But that’s hardly how it looked in 2002. It attracted people with considerable renown in the field, like Andy Hertzfeld and Lou Montulli, as well as other, equally smart and talented developers whose names are not as widely known. Nor, even at this late date, do I consider Chandler in any way to be definitively “doomed” — though certainly it has failed to live up to its initial dreams. There are too many examples of projects that took long slogs through dark years and then emerged to fill some vital need for anyone to smugly dismiss Chandler, even today.

Also, I need to say that my interest in the difficulty of software did not emerge as some ex post facto effort to justify the problems that OSAF and Chandler faced. In fact, as I thought I wrote pretty clearly, it emerged from my own experience in the field at Salon, where we had our own experience of a software disaster at the height of the dotcom boom.

Finally, in substantiating his criticism of what he calls my “tour de crank” of software thinkers, Cantrill still doesn’t make a lot of sense to me. In the two chapters near the end of the book that depart from Chandler to explore wider issues, I discuss the work and ideas of Edsger Dijsktra, Watts Humphrey, Frederick Brooks, Ward Cunningham, Kent Beck, Joel Spolsky, Jason Fried and Nick Carr (in Chapter 9), and Charles Simonyi, Alan Kay, Jaron Lanier, Richard Gabriel and Donald Knuth (in Chapter 10). (Marvin Minsky and Bill Joy, whom Cantrill mentions, are each cited only in passing.) Anyone might view some number of these figures skeptically — I do, too — but cranks, all?

Anyway, these are side issues. It’s later in Cantrill’s argument that we get to the heart of a real disagreement that’s worth digging into. Despite the evident pragmatism that’s on display in his Google talk, halfway through his post Cantrill reveals himself as a software idealist.

…software — unlike everything else that we build — can achieve a timeless and absolute perfection….software’s ability to achieve perfection is indeed striking, for it makes software more like math than like traditional engineering domains.

And once software has achieved this kind of perfection, he continues, it “sediments into the information infrastructure,” becoming a lower-level abstraction for the next generation to build on.

Ahh! Now we’re onto something substantial. Cantrill’s view that aspects of software can achieve this state of “perfection” is tantalizing but, to me, plain wrong. He makes a big point of insisting that he’s not talking simply about “software that’s very, very good” or “software that’s dependable” or even “software that’s nearly flawless”; he really means absolutely perfect. To me, this insistence — which is not at all incidental, it’s the core of his disagreement with me — is perplexing.

Certainly, the process by which some complex breakthrough becomes a new foundational abstraction layer in software is real and vital; it’s how the field advances. (Dreaming in Code, I think, pays ample attention to this process, and at least tries to make it accessible to everyday readers.) But are these advances matters of perfection? Can they be created and then left to run themselves “in perpetuity” (Cantrill’s phrase)?

On its own, an algorithm is indeed pure math, like Cantrill says. But working software instantiates algorithms in functional systems. And those systems are not static. (Nor are the hardware foundations they lie upon — and even though we’re addressing software, not hardware, it’s unrealistic to assume that you will never need to alter your software to account for hardware changes.) Things change all the time. This mutability of the environment is not incidental; it’s an unavoidable and essential aspect of any piece of software’s existence. (We sometimes jokingly refer to this as “software rot.“) Some of those changes break the software — if not over a matter of weeks or months, then over years and decades. It is then, I think, no longer accurate to call it “perfect” — unless you want to take the pedantic position that the software itself remains “perfect,” it’s the accursed world-around-the-software that’s broken!

This, of course, is a version of Joel Spolsky’s Law of Leaky Abstractions argument, which I present at length in Dreaming in Code: “perfect” abstractions that you can ignore are wonderful until something happens that makes it impossible to keep ignoring them. Such things happen with predictable regularity in the software world I know. I don’t know how you can discuss software as if this issue does not lie at its heart.

The strange thing about this disagreement is that, as far as I can tell, Cantrill is — like the engineers I know a lot better than I know him — a hands-on kind of guy. And DTrace, the project he’s known for, is by most accounts a highly useful tool for diagnosing the myriad imperfections of real-world software systems — for navigating those trips down the ladder of abstraction that software developers must keep making.

All of which leaves me scratching my head, wondering where the world is in which Cantrill has found software of “absolute perfection,” and which programs it is that have achieved such a pristine state, and how they — unlike all other programs in existence — escape the creep of software rot.
[tags]bryan cantrill, software, software development, dreaming in code[/tags]

Filed Under: Dreaming in Code, Software

Does “Dreaming in Code” suck?

November 2, 2007 by Scott Rosenberg 9 Comments

Early in my online career — this goes back to around 1990 — I learned a basic principle about off-the-cuff criticism online: No flame flares in a vacuum. In other words, don’t be too glib with your put-downs — because before you know it, the person you’re putting down will find your comment and call you on it.

I recalled this today when I encountered (thanks to a mention on Sumana’s blog) a drive-by attack on Dreaming in Code. In the opening couple of minutes of a talk at Google this past summer, it seems, a Sun engineer named Bryan Cantrill declared, with some vociferousness, that my book — I quote — “sucks.” This judgment is now preserved in the perpetuity that is Google Video.

Now, Cantrill is one of the creators of DTrace, a popular, award-winning and innovative tool for managing Solaris, and my hat is instantly removed to anyone who bears responsibility for a successful piece of software. I am also not particularly shocked to hear that a smart programmer didn’t like my book; he’s neither the first nor the last in that group.

What’s just plain puzzling is exactly what Cantrill has to say in his handful of complaints about Dreaming in Code. Because every point he makes in explaining the basis for the book’s suckiness turns out to be a point that I have made at length in the book itself and in my talks this year about the book — including at Google, several months before Cantrill’s appearance there. Of course I’m not suggesting that he borrowed from me — he almost certainly hasn’t heard my presentation! But I am puzzled how he could so completely have missed my argument, and misrepresented my position, when it seems to be so close to his own.

As best I can make out, Cantrill believes that Dreaming in Code fails to acknowledge that software is uniquely different from other creative endeavors because (a) it’s not a physical entity; (b) we can’t see it; (c) it’s really an abstraction. These factors cause all the analogies that we draw to things like building bridges to break down. Cantrill describes himself as a “finisher” of books and I’ll take his word, but I’m flummoxed how anyone who has finished the book can knock it for failing to understand or express this view of software.

The critique gets sketchy from here on in; Cantrill draws some sort of analogy between Dreaming in Code and Apocalypse Now (a comparison I’ll gladly accept — it’s a reference I make in the book myself) and suggests that I got “hoodwinked” by “every long-known crank in software” (the lone “crank” cited is Alan Kay).

It’s true that the final section of the book surveys both the nuts-and-bolts methodologies that try to alleviate software’s practical difficulties and a whole gallery of software philosophers from both the mainstream and the fringes — people like Kay, Charles Simonyi, Donald Knuth and Jaron Lanier. If even discussing these people’s ideas constitutes “hoodwinking” I guess I’m guilty.

From here Cantrill wanders into his own case for software’s uniqueness, which as far as I can tell is nearly identical to the one I make in Dreaming in Code. “All the thinking around software engineering has come from the gentlemanly pursuit of civil engineering,” Cantrill says. “That’s not the way software is built.” Indeed.

So I’m not sure what the complaint is. Maybe analogies are so odious to Cantrill that he feels they should not even be discussed, even if the discussion is intended to expose their limitations. Maybe the notion of software’s uniqueness and its intractability to old-fashioned physical-world engineering principles seems so obvious to Cantrill that he is appalled anyone would even bother to explore it in a book. But there’s still an enormous amount of attention and money being applied to the effort to transform software development into a form of reliable engineering. I found thoughtful arguments on several different sides of the matter and thought it was worth the ink, although my own conclusion — that software is likely to remain “hard” and not become an easily predictable undertaking — is pretty clear.

Anyway: Go ahead and tell me my book sucks — I can take it! But don’t tell me that it sucks because it fails to acknowledge an argument that actually forms its very heart. Say that and, well, I’m just not going to be able to resist a retort.
[tags]dreaming in code, bryan cantrill, software engineering[/tags]

Filed Under: Dreaming in Code, Software

Code Reads #13: “The Inevitable Pain of Software Development”

October 31, 2007 by Scott Rosenberg 6 Comments

Code ReadsThis is the thirteenth edition of Code Reads, a series of discussions of some of the central essays, documents and texts in the history of software. You can go straight to the comments and post something if you like. Here’s the full Code Reads archive.

This month’s paper, Daniel Berry’s “The Inevitable Pain of Software Development, Including of Extreme Programming, Caused by Requirements Volatility,” is a sort of update and latter-day restatement of Frederick Brooks’s classic “No Silver Bullet” argument — that the traits of software development work that make it difficult are inherent in the enterprise and extremely unlikely to be vanquished by some breakthrough innovation.

Berry is, as he admits, not the first to locate the source of software’s essential difficulty in “requirements volatility” — unpredictable fluctuations in the list of things that the software being built is expected to be able to do (including variations in user behavior scenarios, data types and all the other factors that a working piece of software must take into account). Read any development manual, listen in on any software team’s gripe session and you will hear curses directed at “changing requirements.”

Every new approach to improving the software development process includes a proposed method for taming this beast. These methods all fail, Berry maintains, leaving software development just as much of a “painful” exercise as it was before their application.

In each case, Berry locates this failure in some aspect of or practice dictated by a particular method that programmers find to be too much of a pain to actually perform.

Every time a new method that is intended to be a silver bullet is introduced, it does make many part of the accidents easier. However, as soon as the method needs to deal with the essence or something affecting or affected by the essence, suddenly one part of the method becomes painful, distasteful, and difficult, so much so that this part of the method gets postponed, avoided and skipped….

Each method, if followed religiously, works… However, each method has a catch, a fatal flaw, at least one step that is a real pain to do, that people put off. People put off this painful step in their haste to get the software done and shipped out or to do more interesting things, like write more new code.

So that, for instance, the method of “requirements engineering” (exhaustively “anticipate all possible requirements and contingencies” before coding) offers many benefits, but “people seem to find haggling over requirements a royal pain.” Also, it demands that “people discover requirements by clairvoyance rather than by prototyping.”

Similarly, Extreme Programming (XP) depends on programmers writing test cases first. That’s a step that in itself seems to be painful for many developers. When requirements change, XP calls for frequent refactoring of existing code. “Refactoring itself is painful,” Berry notes. “Furthermore, it may mean throwing out perfectly good code whose only fault is that it no longer matches the architecture, something that is very painful to the authors of the code that is changed. Consequently, in the rush to get the next release out on time or early, refactoring is postponed and postponed, frequently to the point that it gets harder and harder.”

Berry goes right down the list and confirms that the pain he diagnoses is a condition universal in the field.

The situation with software engineering methods is not unlike that stubborn chest of drawers in the old slapstick movies; a shlimazel pushes in one drawer and out pops another one, usually right smack dab on the poor shlimazel’s knees or shins. If you find a new method that eliminates an old method’s pain, the new method will be found to have its own source of pain.

Berry’s paper concludes with an alternative version of the principle that in Dreaming in Code I dubbed, tongue-in-cheek, Rosenberg’s Law:

To the extent that we can know a domain so well that production of software for it becomes almost rote, as for compiler production these days, we can go the engineering route for that domain, to make building software for it as systematic as building a bridge or a building. However, for any new problem, where the excitement of innovation is, there is no hope of avoiding relentless change as we learn about the domain, the need for artistry, and the pain.

Berry writes about the creation of software as much from the vantage of psychology as from that of engineering, and that gives his observations a dimension of bracing realism. In “The Inevitable Pain of Software Development” I found a willingness to examine the actual behavior of working programmers that’s rare in the software-methodology literature.

Too many authors are all too eager to pronounce what developers should do without considering the odds that any particular developer actually will do these things. Berry is a realist, and he keeps asking us to consider the cascade of consequences that flows from each method’s weak spots.

His case against “pain” seems not to be a naive attitude of trying to take a process that’s fundamentally difficult and somehow conjure the hardness right out of it. Instead, he asks us to note carefully the location of the “pain points” in any particular approach to software creation — because, given human nature, these are its most likely points of failure.
[tags]code reads, software development, software methodologies, daniel berry[/tags]

Filed Under: Code Reads, Dreaming in Code, Software

« Previous Page
Next Page »