The conception, birth, and first steps of an application named Charlie

Subscribe: Atom or RSS

Advice from an Aardvark

by Alister Jones (SomeNewKid)

Charlie has not progressed during the last two weeks, due to illness (my illness, not Charlie’s). However, during this period I received notice that one of my favourite writers on software, Joel Spolsky, had kindly made available the software specification for a project he codenamed Aardvark. Inspired, I wrote a software specification for Charlie, which you may download.

While I have never before seen a software specification, the process of writing one crystallised a few goals that I had for Charlie, the most important of which I unashamedly copied from the Aardvark:

“Simple is better than complicated.”

What is most helpful about this principle is that it helped define non-goals for Charlie. For every feature of Charlie, I will need to decide between a complicated yet swish implementation and a simple yet rough implementation.

Take for example the feature of Charlie to serve multiple websites from a single installation. How would I add a new website to an existing installation? The complicated yet swish implemenation would be to provide a web or desktop interface, through which I complete a few details and upload a few files. The simple yet rough implementation would be to manually add an entry to a site.xml configuration file, and manually FTP transfer a new folder into a directory named ‘sites’. I see no value in spending time creating a swish interface for the developer; that time should be spent making Charlie as simple as possible for the website owner (whom I have identified as the most important user of Charlie).

Take for a second example the feature of Charlie to style websites. How can I design Charlie so that two websites that are functionally similar will look completely different? The complicated yet switch implementation would be to introduce a system of themes and skins, configurable through an interface. The simple yet rough implementation would be to hand-craft some CSS stylesheets. Again, I see no value in creating a system of configurable themes and skins—a website owner will not care how his website is styled, but will care only that it looks good, works well, and reflects the corporate identity.

Simple is better than complicated.

The process of writing the specification for Charlie helped define its four main features. More accurately, perhaps, is that the process helped define those features that would be hard to add retrospectively and, hence, should be added to this first version of Charlie.

The first feature is that Charlie will be simple. I will have more to say on this topic in future weblog entries, so I will not say more about it now.

The second feature is that Charlie will be secure. This is a matter of necessity and responsibility. If Charlie is to serve multiple websites from a single installation, and allow website owners to maintain and edit their own websites, then Charlie must provide a secure environment for the website owner.

The third feature is that Charlie will be globalized. I have been approached previously to create a globalized website, but at the time I did not know how to create one. The next time I am asked, I want to be able to accept the job. Additionally, globalization would be hard to add retrospectively, so I’ll add this feature to Charlie from the start.

The final feature is that Charlie will be configurable. While Charlie is to serve multiple websites from a single installation, each website should be unique in its operation and its appearance. I also want for Charlie to be able to provide turnkey website solutions, such as Clikpic. While turnkey website solutions will not be implemented until a later version, the required configurability should be in place from the start.

Writing the specification for Charlie took very little time, yet it definitely helped define the goals and non-goals for Charlie. It was a valuable exercise, and I extend my thanks to Joel and his Aardvark.

by Alister Jones | Next up: Charlie’s Hiatus

0 comments

----