Catenary

Why We Disagree About Climate Change

December 2, 2009 · 1 Comment

I’ve just finished reading Mike Hulme’s Why We Disagree About Climate Change (update: you can listen to Hulme discuss some of the book’s topics here. Thanks Jon!) and felt I had to recommend it to anybody that is interested in this issue. What a marvelous, thought-provoking book.

It was not an easy read. I don’t mean it because the prose is obscure (though it could be better), but because it demanded from me some mental strength to break out of my own perspective, again and again, to try and see the world as others see it. It required patience and a cool head.

But the rewards are significant. Hulme explains the many reasons why humanity disagrees about climate change: why we have different ideas about the role of Nature, about scientific knowledge and technology, about economics, ethics, religion, culture, and politics. Through reading it I came to see why my solutions to climate change turn off or are perceived as problems for others, what could the role of society and government be in addressing the problem, and why some people just don’t seem to care. I also came to understand my own views on environmentalism and on our place in the world far better than I used to.

This is a complex book, and a strange one –it covers the hairy mess of disciplines and fields of study that converge in climate change. Among many other things it talks about science and myth, about carbon markets and eco-anarchism. It does it all lucidly and convincingly. It’s unique, and it’s one of the best books I’ve read.

→ 1 CommentCategories: Activism · Books · Recommendations

Against SEMAT

November 29, 2009 · 21 Comments

There is a call for action making the rounds among software researchers. You may have heard of it: it goes by the name of SEMAT (Software Engineering Method and Theory); Ivar Jacobson presents it as a “revolution” whose “goal is to re-found software engineering as a rigorous discipline.” You can read the call for action here. The list of adherents is rather impressive and includes several people I admire deeply.

But this is an entirely misguided movement. Let’s analyze the call for action, bit by bit. It begins:

Software engineering is gravely hampered today by immature practices. [...]

We start with what seems to be a minor point, a mere choice of words, but the problems begin by setting this supposedly re-foundational effort firmly within the old paradigm that got us where we are now. Thus we do “software engineering” research, and we should do what other engineers and engineering researchers do. Never mind that people in the community (most prominently Tom DeMarco) have spoken against this paradigm, or that software development has little to do with most established engineering disciplines: the people behind SEMAT have chosen to ignore these criticisms and move on.

Note that the SEMAT call for action presents the current state of the software industry as “hampered” by “immature practices,” which may be true (we’ve only been developing software for a few decades; our practices are necessarily immature), but as an observation it is symptomatic of the software-crisis hypochondria that afflicts many software researchers. The call continues:

[...] Specific problems include:

  • The prevalence of fads more typical of fashion industry than of an engineering discipline.

This is how the consequences of the engineering paradigm I mentioned above manifest themselves. It’s true that the software industry is notoriously susceptible to fads. But notice how the alternative to these fads, according to the signatories of SEMAT, is to behave like an “engineering discipline.” That is, they offer a dichotomy between the archetypical fad-based industry (whimsical, pretentious, superficial, frivolous) and the archetypical measurements-based industry (conservative, positivist, serious, professional).

In fact, some “fads” end up being pretty good ideas. Object-orientation is mainstream today; it was once a fad. Extreme programming has been shown to be more effective than its alternatives under many conditions; some people still label it as a fad. There is a danger of labelling any grassroots innovation, any experimentation by practitioners, as a “fad”, as not conforming to the seriousness of our engineering discipline —there is a danger of stifling progress by an appeal to an unsuitable paradigm.

(This criticism doesn’t even get into the problem that several of the fads that have been inflicted on the software industry were started or promoted by some of the signatories!)

Let’s continue with SEMAT’s list of problems:

  • The lack of a sound, widely accepted theoretical basis.
  • The huge number of methods and method variants, with differences little understood and artificially magnified.

I agree with the first of these points, and I have argued in the past for the need to develop better foundational theories in our field. The second point, however, makes me doubt whether the signatories realize the implications of the first. We have plenty of evidence that software development is not homogeneous. Developing an operating system is not the same as developing videogames; developing mission-critical control systems is not the same as developing mission-critical data warehousing scripts. Different settings demand different methods. This diversity must play an essential role in our theories —unless we want our theories to be disconnected from the evidence we have collected.

In fairness, what the SEMAT adherents probably mean is that we have far too many academic software processes. Whole PhDs have been built on the basis of designing supposedly new methods, practices, or tools (really just a variation of old ones, under a different name) with almost no empirical validation. If this is the case, if what SEMAT refers to is our pathological growth of academic software methods without empirical validation, then I would agree with this point.

We continue:

  • The lack of credible experimental evaluation and validation.
  • The split between industry practice and academic research.

In this case I agree with the second point, but I partially object to the first. Industrial practice and academic research are certainly disconnected, and we need many more researchers bridging this gap if we are to solve the problem.

In fact I, too, believe that we need credible experimental evaluation and validation. I only object to this point because of its emphasis on experimentation, not on empiricism in general. This is another example of locking ourselves in the engineering paradigm: we want controlled experiments and measurements, the rest of our empirical work is not worth mentioning. As a researcher that has applied both experimental and non-experimental empirical methods in software development, I have seen that controlled experiments tend to abstract away the important elements of the phenomena we study, whereas non-experimental methods, such as case studies, provide a necessary richness to our evidence. Software development is hard, in part, because of the numerous elements and interactions in the socio-technical systems in which it takes place. These elements are almost impossible to replicate in the lab. Controlled experiments only give us a narrow piece of the story.

The SEMAT call for action then switches gears and offers a proposal:

We support a process to refound software engineering based on a solid theory, proven principles and best practices that:

  • Include a kernel of widely-agreed elements, extensible for specific uses
  • Addresses both technology and people issues
  • Are supported by industry, academia, researchers and users
  • Support extension in the face of changing requirements and technology

SEMAT, then, proposes to re-found software theory by decree. We decide to pick up “a solid theory” (which one?) that includes “a kernel of widely-agreed elements.” (which ones?) I simply cannot think of any scientific field that has prospered under such an epistemological basis. If we have a kernel of widely-agreed elements, that in itself is our theory and there is no need to refound anything. But we do not have a theory precisely because we do not yet have a kernel of widely-agreed elements; we cannot create such a kernel out of thin air.

Furthermore, I cannot see how such a kernel can arise out of the combined work of the signatories. The list includes, for instance, Alistair Cockburn and Watts Humphrey. It includes Larry Constantine and David Harel. It includes Ken Schwaber and Barry Boehm. The list itself suggests that, more than a kernel of widely-agreed elements, what we already have is several competing conceptions of software development, several vaguely formulated theories, that need to be refined and tested against each other. This is, I believe, where we should spend our efforts.

The rest of the items in SEMAT’s proposal are mush. Of course our theories need to address technological and social issues. Of course they need wide support by several communities to be successful. Of course they must be flexible. But what should they consist of? What stake is SEMAT putting on the ground? Unfortunately, beyond a wish to be more like an engineering discipline, this proposal is completely vague, and therefore I cannot support it.

 

→ 21 CommentsCategories: Academia · Software development

Second Workshop on Software Research and Climate Change

November 26, 2009 · Leave a Comment

Here is another ICSE 2010 workshop you should be interested in: the Second Workshop on Software Research and Climate Change.

The call for papers is just out –you might find it a bit unusual that there will not be a formal publication of the proceedings but the intent of the workshop is to create a lively discussion on the topic and to build a community of researchers interested in tackling it. Here is the challenge for participants:

How can we, as experts in software technology, and as the creators of future software tools and techniques, apply our particular knowledge and experience to the challenge of climate change? How can we understand and exploit the particular intellectual assets of our community — our ability to:

  • think computationally;
  • understand and model complex inter-related systems;
  • build useful abstractions and problem decompositions;
  • manage and evolve large-scale socio-technical design efforts;
  • build the information systems and knowledge management tools that empower effective decision-making;
  • develop and verify complex control systems on which we now depend;
  • create user-friendly and task-appropriate interfaces to complex information and communication infrastructures.

In short, how can we apply our research strengths to make significant contributions to the problems of mitigation and adaptation of climate change?

I should mention I am also in the Program Committee for this workshop — if you have anything to say on the subject I’d love to hear from you!

 

→ Leave a CommentCategories: Academia · Activism · Software development

Web 2.0 for Software Engineering

November 25, 2009 · Leave a Comment

The list of workshops for ICSE 2010 is out, and though many of them look very interesting I’d like to point your attention towards the workshop on Web 2.0 for Software Engineering. Here’s the abstract:

Social software is built around an “architecture of participation” where user data is aggregated as a side-effect of using Web 2.0 applications. Web 2.0 implies that processes and tools are socially open, and that content can be used in several different contexts. Web 2.0 tools and technologies support interactive information sharing, data interoperability and user centered design. For instance, wikis, blogs, tags and feeds help us organize, manage and categorize content in an informal and collaborative way. One goal of this workshop is to investigate how these technologies can improve software development practices. Some of these technologies have made their way into collaborative software development processes such as Agile and Scrum, and in development platforms such as Rational Team Concert which draw their inspiration from Web 2.0. These processes and environments are just scratching the surface of what can be done by incorporating Web 2.0 approaches and technologies into collaborative software development. This workshop aims to improve our understanding of how Web 2.0, manifested in technologies such as mashups or dashboards, can change the culture of collaborative software development.

I’m in the Program Committee and I’d love to read your work on the topic, so start writing!

→ Leave a CommentCategories: Academia · Software development

Bad surveys

November 15, 2009 · 6 Comments

Yesterday, a grad student asked me whether I could answer a survey he was doing for his research. I’ve struggled getting participants in the past, and seeing that the survey would only take a couple of minutes, I accepted.

It was a survey about the urban design of a particular place at the University of Toronto, which was fine with me. Halfway through the survey, though, I realized he was trying to put some answers in my mouth. He asked me whether I liked that place, and when I said I did he replied: “Really? There’s nothing to like there.” I insisted that I liked the landscape around it; he objected, pointing out that it was just a grass field. I kept insisting, and he grudgingly wrote down my answer.

We went through this process several times. The last straw fell when I said the lighting at that place was good and he responded that “it’s pretty dark there right now,” circling the “bad lighting” answer. He only erased that answer after I lost my patience and told him that these were my answers and if he wanted others he should ask someone else.

I know how this survey’s results will look like. Some large percentage of users of this space, it will say, are terribly dissatisfied with it –hence providing support for whatever project this student is designing. What gets me is that results from a survey as poorly and dishonestly executed as this one will carry greater weight than any non-quantitative arguments simply because they produce a percentage number in the end. We’re in love with quantitative evidence, no matter how poorly it is constructed.

As I left the place that evening I looked around with a critical eye. There were definitely some areas that could be improved. Come to think about it, I thought, it was plain to see that lighting was actually pretty bad — and no survey results will convince me otherwise.

 

→ 6 CommentsCategories: Academia

Global warming scepticism and academic intolerance

October 28, 2009 · 1 Comment

Someone very dear to me told me, a few weeks ago, that he had noticed I was becoming more and more intolerant with several positions and people —among them, climate change deniers. He felt it wasn’t fitting for a scientist, a person supposed to examine the facts objectively and to be a professional doubter, to reject challenges to the scientific consensus as a matter of principle.

So I started thinking whether I was indeed failing to uphold the values of my profession; whether I was becoming intransigent on scientific matters. I concluded that, at least for software research, I wasn’t at fault: several of my papers are challenges to popular notions in my field. Among other things, my coauthors and I have argued that mining software repositories is plagued with dangers, that software processes may be irrelevant or, at least, of very limited applicability, that literally replicating experiments of software developers may not be an appropriate strategy under some conditions, and that software estimation is extremely sensitive to judgmental biases. In fact, the theoretical foundations of my field are so weak that I think professional sceptics could build a good and productive academic career mainly by poking holes in them. (They would build an even better academic career by developing better theoretical foundations, though.)

What about scepticism towards climate change? Well, first of all, I am not a climate scientist. Though the theoretical foundations of climatology are relatively simple, there are far too many details I do not know, and if I wanted to know them I’d need to spend another decade at school. As a scientist, I must defer to the conclusions climatologists reach —with caution, of course, especially if their field is as immature as mine.

But it turns out to be quite mature, and for several years now climate science has reached a consensus as strong as that on evolution or the germ theory of disease. You wouldn’t know that by just tuning in to the news: in the interest of “balance,” journalists often look for someone -anyone- to counter the very grave conclusions reached by climate scientists. But if you talk to climatologists or read their work you’ll discover that the debate is artificial, that it happens almost exclusively in the media, and that denialism is entirely disconnected from scientific practice.

So the science is clear — we’re essentially burning our planet. There is simply no credible scientific opposition to this consensus. Since the consequences are so catastrophic, it is everyone’s moral duty to fight them, and at the very least to stop the misinformation in the public sphere — even if we sometimes, sadly, appear to be intolerant.

This is why I love John Cook’s Skeptical Science website (found via Steve’s blog). It’s a sort of Snopes.com for climate science: it lists all the popular arguments against the scientific consensus and it explains how they have been debunked. The site also sorts denialist arguments under a useful taxonomy, in case that works better for you. So just like you’d refer your uncle to Snopes whenever he sends you a chain letter telling you that next month Mars is going to look as big as the moon or some other nonsense, you can use Skeptical Science as a handy reference to fight his fabricated doubt on climate change.

 

→ 1 CommentCategories: Academia · Activism

Workshop on Software Research on Climate Change

October 26, 2009 · 1 Comment

Today was (still is, at the time of writing) the 1st Workshop on Software Research on Climate Change, down in Florida. Jon Pipitone and I planned to attend remotely, skype-ing in, but never got around to make it work satisfactorily: our connection kept getting dropped, perhaps due to bad connectivity at the conference centre.

In any case, Jon and I decided to have our own mini-workshop in Toronto, and to share our conclusions with the Florida group. Jon posted our thoughts on his blog; if you’re interested in these things we’d love to hear what you think about it.

→ 1 CommentCategories: Academia · Activism · Software development

This is an advertisement

October 22, 2009 · Leave a Comment

The company my brother works for has just released a website called This is an Advertisement:

This is an Advertisement is a site where the ads are the content. It’s as simple (and counterintuitive) as that. We believe ads are useful and even entertaining — valuable information that should be available when we want and need it.

As it begins to fill up with content, and as you tell it what kinds of ads you like, the site will try and satisfy your preferences.

Posting ads on the site is completely free, so you have literally nothing to lose by posting yours. Check it out!

→ Leave a CommentCategories: Off Topic

The Size of a Software Organization

September 15, 2009 · 5 Comments

Measuring something as simple as the size of a software organization turns out to be a tricky problem. It’s clear to see that while IBM, Microsoft, and Google are “large”, the company my friends and I started when we finished our undergrads was “small”. But as I will show, beyond these basic comparisons it’s hard to come up with a satisfactory metric. Consider:

First, there’s the number of members of the organization. This is perhaps the most intuitive metric we can come up with, as knowing the number of people in a group immediately tells us much about the group’s characteristics. It also tends to be a very accessible metric: get the headcount and you’re done. I’ve actually used it in the past, precisely for its intuitiveness and its accessibility. But it’s not as simple as it looks:

  • Do we count all members, or just developers? If we count all members we might get in trouble. Let’s say that Beehive Inc. has 99 developers and one boss in charge of everything else, while Peacock Inc. has one developer and 99 people in charge of advertising, selling, schmoozing, and charming customers. Although both have the same number of members, in terms of software productivity they are probably quite different: perhaps Beehive produces software like mad, so it needs lots of developers, and Peacock has a single product that it just fine-tunes for its high-rolling clients, so it needs only one. And if we count only developers, what do we do with all the borderline roles, such as testers, maintainers, user interface designers, and hybrid positions?
  • What counts as a member? For instance, who counts as a member of Mozilla? If we only count people that have contributed with code, we may exclude a significant fraction of the community, such as everybody that has tested and reported issues with the software but that has not submitted a patch. And if we count all bug reporters we may be stretching the meaning of the term “organization”.
  • And on a related note, what counts as an organization? Should the people in the XBOX and Office divisions of Microsoft really be considered as part of the same organization? They get a paycheck from the same company, and they may be working across the street from each other, but if there’s little-to-none interaction between the groups, should we still consider them as subsets of a larger group?

So the number of members is a troubling metric. Unfortunately, the alternatives look just as bad, or worse. Let’s switch to financial metrics and say that an organization is large in proportion to its revenue. This is an acceptable metric for many sociologists, but it’s questionable for software organizations for several reasons –most notably the open source movement. And profit is not better: mammoths often sustain heavy losses for significant periods and we’d still like to classify them as large. (What would we do with organizations with gigantic financial losses if we used profit as our metric? Treat them as negatively huge?)

Perhaps an important component of what we mean when we talk about size is power. “Large” organizations exert plenty of influence and we cannot dismiss them as easily as “small” organizations. But trying to measure power is even more difficult than trying to measure size: it’s not even clear how to get started. Are we talking about power over the public sector? Over the company’s customers? Over its own employees? What happens to our metric when small companies associate and increase their power? And how do we account for the mixture of individual and organizational power? All else being equal, any “small” organization that Steve Jobs joins will become significantly more powerful (“larger?”) than if I were to join it. I can’t see how we can emerge from a discussion on power with a clearer mind than if we use other approaches to measuring size.

Some sociologists refer to size in terms of the outputs of the production process. For instance, a brickworks plant is larger if it produces more bricks. But this works much better with the manufacturing sector than with the service sector, and for software most inputs and outputs don’t make much sense. Let’s look at outputs. First, lines of code are an infamously bad metric. Function points are better, but the metric is very inaccessible: unless the organization itself is keeping track of the number of function points it produces, one can spend an extraordinary amount of time deriving the metric when all one wanted was a simple way to place the organization on a size continuum. The number of modules and number of products the organization releases are too vague to be satisfactory. And as for inputs, besides human effort (which gets us into the problems I went through a few paragraphs above when I discussed number of members), what could we use? Electricity, paper? Coffee?

We’re running out of options here, but we’re not through yet. Going back to easily accessible numbers, perhaps we could look at size in geographical terms, and claim that a software organization is large to the extent of its physical area. As most of the previous metrics, physical area makes some intuitive sense. Google’s area, including server farms and cafeterias and plastic ball pools, is quite large, whereas a basement start-up is tiny. Could we claim that a simple square feet count is an appropriate measure of an organization’s size? I don’t think so, since we run into problems we’ve struggled with before: open source projects, home offices, and the fact that a firm can cram lots of people in a space, increasing its totals on every other metric we’ve gone through, while still remaining just as large from a physical area point of view.

Nevertheless, physical area is still important, as is physical proximity. The number of sites an organization uses, as well as some calculation of their geographic distance, could give a good indication of some of the pathological consequences of size: cumbersome coordination, loss of cohesion, formalization of structure. But as our foremost size metrics they’d be very flawed.

Two more possibilities and I’m done. One has to do with the degree to which an organization has enough intellectual capital, perhaps represented as the number of specializations it masters through one or more of its members. I frankly don’t like this metric at all: it is, again, too ambiguous, and too inaccessible. But it seems to me that there is something to the insight that “larger” organizations have a greater number of experts in a variety of fields. The basement start-up may have little more than a couple of software-oriented generalists, while Microsoft has experts in internationalization, compilers, user interface, databases, security, performance, and many other domains, not to mention non-software expertise such as in law, marketing, human resources, public relations, and more. So the number of specializations metric shouldn’t be dismissed completely.

Finally, we can try to assess size through the number and kinds of external agents that an organization has to deal with. By “external agents” I mean mostly users and paying customers, but also policy makers, advocates, community members, and so on. According to this metric, an organization that only produces software to be used by itself is far smaller than one that produces software that is highly (un)popular for wide sectors of the population. If you are your only customer, your software will probably not be as complex as it would be if people from all over the world needed to use it, and this complexity in the software and its requirements would translate into a complexity of the structure of the organization that produced it.

This, like the others, is a deficient metric. Though it is somewhat accessible, it doesn’t fully match the intuition we want to capture. It would claim that a massive and massively inefficient organization would be equivalent, size-wise, with a lean, brash, innovative start-up, which may not be what we want.

So. I’ve gone through a lot of possible metrics, and I’ve listed the reasons why they’re imperfect. I suspect the reason why it’s so hard to pin down organizational size, which sounds simple in principle, is that there’s a lot of confusion about what it means to organize in the first place—I mentioned this above, and will expand on it later.

I don’t think this means that we shouldn’t use size metrics at all. John Kimberly, an organizational scientist, explored a similar thorny issue, for a more general case, and argued, back in 1976, that:

“It is perfectly possible that the important variable is not really size at all, and that this has simply been a heading under which researchers lacking any sharper theoretical perspective have lumped many variables together. Even if it is felt that jettisoning the concept would be premature, at the very least a more differentiated approach would lead to the identification of several aspects of the global construct. Researchers would be constrained to think less about the question of how big a given organization is and how this bigness might be the cause or consequence of other organizational characteristics, and more precisely about under what conditions particular aspects of size are important for what other organizational characteristics.”

Each of the aspects of size I discussed is useful for some purposes, but we need to be careful to select the one(s) that would work better for our problems, and be aware that each carries with it some flaws that may bias our results.

→ 5 CommentsCategories: Academia · Software development

The Hot Yam! at NOW magazine

August 27, 2009 · 1 Comment

More on good food: NOW magazine has just reviewed the Hot Yam!, an amazing one-day-a-week eatery at the University of Toronto that’s very close to my heart. It’s an extremely positive and well deserved review. Congratulations everyone, and if you haven’t tried it yet you must! Thursdays, noon to 2pm.

→ 1 CommentCategories: Community · Toronto