At last, we're getting started. We've hired our new developer to help with it, and started off on a few small tasks.
I have to confess: my conceptualization of how we would start this project was somewhat grandiose. I had whiteboard layouts of interfaces, database diagrams, and PHP class stubs in a directory on my laptop. I wrote abstracts of a couple of projects I want to use Geoscribe for. That's why I wanted to start big, by thinking in terms of the larger application structure. And starting big probably isn't a good idea, even for a big project; Todd Presner helped me see that at our design meeting last week, and at his expert suggestion, we're starting with just a few features.
So we're going to begin by adding a new feature to HyperCities: the ability for a reader to embed a link that opens a specific page in a Google book in the textual description of an object. From there, we'll probably move to an authoring interface to simplify creating these objects, then perhaps indexing these links. Then, we'll start by allowing a user to browse objects by the books they mention. At that point, it will be interesting to see how realistic my database diagrams and other tech stuff really were.
Starting small makes a lot of sense; we're starting a new project as we integrate a new developer into an existing team. I'm curious to hear from the community to see what they think, though. Have you found that the nature of how projects change over time makes a more gradual development process helpful? Has it made projects more likely to happen? And have you seen a small step-by-step process like this significantly change the desired outcome of a project? I'm not asking this because I want to change our approach by any means, but I wanted to see what others' experiences were. It seems to me like starting on the big things would make it more likely that a project would founder because of changing scope.
Part of this is because I've also been reading Ted Nelson's Literary Machines, and he mentions having built up Xanadu from the ground up, because he believed that going back and adding some features would have been impossible later if the system wasn't designed to include them from the beginning. That's extremely true—we've seen that in a few projects—but then again, Xanadu hasn't reached the audience it originally wanted (sadly). The WWW outpaced it because it was easier and quicker to implement than Xanadu, which seems to be the rule of technology. As much as I like the goals of Transliterature and what Project Xanadu wants to be, I have to use the WWW because it's more common. Besides, the viewer doesn't run on Macs yet.
I've found that in my own projects, too: I pretty much just have to start somewhere. My first design is never good enough, which means that I count on it to show me where my assumptions were wrong. On HyperCities, I've been responsible for implementing an API. While the design has been relatively consistent, the implementation code has through three or four different versions. If I'd started with the design I'm using now, of course, it would have saved a lot of time. Because it's a fairly complex system, though, it took that many drafts to see all the problems of the different approaches I took the first time.
So we have a starting place, and it's with a small feature. I think this will be the right idea in the long run, because trying to design a perfect system from the ground up has seemed not to work so far on this project. Once we have a workable version of this feature, I'll post some screenshots and maybe a link.