The Currency of Development

One of the anonymous reviewers of my OOPSLA paper made the point, paraphrasing, that the main problem in software development is not the difficulty of programming, but the difficulty of getting a development project to function effectively. This is usually seen as the subject of methodology, with “extreme” and “agile” methods being the latest trends. My initial reaction to this criticism was to point to the example of spreadsheets, which make a certain class of problems simple enough to be solved by an end-user or power-user themselves, without enduring the trials and tribulations of a professionally staffed development project. Even on such multi-person projects, reducing the programming effort ought to reduce the size of the team and the number of interactions subject to error. However the fundamental point of the criticism remains true: the biggest problem in software development is teamwork. It has occurred to me that the design philosophy of Subtext can contribute to solving this problem. Continue reading “The Currency of Development”

No Assembly Required

Building a toy for my children suggested an analogy with programming. Many toys come knocked down, requiring assembly, with instructions of the form “insert peg A into hole A, slide tab B into slot B, …”. This is just like the way we use names in programming languages, indicating parts that need to be attached by labelling them with the same name. The function call A is to be attached to the function definition A. Programming with names is like creating a program as a big pile of pieces with labels attached, and leaving it to the compiler/interpreter to assemble the pieces into something that works. Textual programs are knocked down.

The problem is that this approach boggles the mind when used with thousands or even millions of pieces. Modern IDE’s like Eclipse strive valiantly to help us imagine how things will plug together, but this is an impossible task. Even my kids know that all the King’s horses and all the King’s men can’t put Humpty together again.

The goal of Subtext is to fabricate programs as working wholes. No assembly required.

IDE Focusing

Here is a review of some research on managing the explosion of information in an IDE. Note that all of these are based on Eclipse, which appears to have become the dominant platform for IDE research.

Mylar is an experimental Eclipse plugin that tracks what program elements you are interested in, by watching your editing/browsing behavior. It alters the standard views such as the Package Explorer, Outline, and Type Hierarchy to focus in on what you have expressed interest in. Uninteresting things are filtered out, and the interest-level of the remaining things is indicated by different shades of highlighting. You can manually establish “landmarks” on program elements, which drive certain views to automatically display related elements, such as a type hierarchy filtered down to show only the inheritance structure of the landmarks.

Relo takes a different approach: instead of filtering the system down, it lets you build up a diagrammatic view of just the parts you are interested in as your explore.

JQuery lets you build a custom broswer by writting queries over your program. The results are shown in tree form, and you can expand any leaf with another sub-query, either custom or standard.

Lambda the Ultimate

Lambda the Ultimate posted an item on Subtext. I waded into the ensuing discussion to try to clarify things.

I didn’t notice it for a few days though, and the attention span of blog discussions seems to be only a day or two. What I need is something like the old clipping services for newspapers, that would email me whenever anyone blogs me. I thought that was what pingbacks were for, but I have never received one (nor a trackback).