New Programming Language

5 02 2010

My new programming language that always compiles, never has bugs, has perfect style and is generally delivered on time, (all IMHO) is English. Developers must have a screw loose. Generally they refuse to write anything down, often they say the documentation is in the code, any yet, most of their leasure time is taken up refactoring rewriting and perfecting that algorithm that started out as a simple sort and is now drinking credit card limits on a cluster of Amazon nodes. Meanwhile, those crafty non developer types, lean back and claim victory with a page of prose that no compiler can even start to understand, and yet, they are the ones living it up with deadlines met. Now, we do do our best to ensure that doesnt happen, but there is a lesson to be learnt here.

Although 90% of those that write code for a living don’t do documentation and certainly don’t do it in advance, its far quicker and easier to experiment with ideas in plain English. (oops forgot that should be _i18n_native_tongue_ ), I wont go on, suffice it to say I’ve been trying out spec before implementation and found that on many occasions nuances that I can see would have appeared in the implementation have appeared in the spec, but the cost of correction has been significantly lower and my personal dialect of english has passed my patched english complier most of the time. Other’s substandard copies have problems. The bigest thing I have noticed with this approach is that I haven’t wasted hours debugging what I would eventually throw away.

It’s interesting that the software industry does so little of this. My first vocation in life was a design engineer; mechanical, high vacuum. There was no point in taking a stock bar out of the stores putting it into a lathe and hoping to machine off the right amount to make a stub shaft. In fact with high vacuum and often high voltage that was a positively dangerous pastime. Perhaps 200 years ago at the start of the industrial revolution or today if creating a work of art, but for engineering the physical material is always the last final part of the process. As software engineering, still a young profession evolves perhaps we will see more design and works of art and less metal bashing.

In the Zone

2 02 2010

I have been doing and experiment for the past 3 months. I work in a busy office, open plan and quite noisy at times. There are many projects running in the office, probably about 20 at any one time. A mixture of management, creatives and engineers. The thinking goes, with an open plan office where everyone can hear everything, there is cross fertilization of thoughts and information between projects, the normal process of active management of projects is not necessary because everything is visible and no one ever gets the chance to bury themselves in a hole for months. Well there is a free flow of information between individuals, and being within the University of Cambridge, free flow of thoughts is what we stand for. We’ve just spent a whole year shouting about 800 years of Cambridge thoughts changing the world (very arrogant, but thats also a Cambridge trait). So is this free flow of thoughts good ?

Several years ago, when I was still allowed to do sysadmin, a “joy” I am no longer considered safe to tackle. I was migrating an active CVS repository to a Subversion, the new and better source control system that didn’t force you to lock before edit. Sitting there at my keyboard, trying to get it done before a meeting a developer had taken the enforced downtime to continue that esoterically argument about memory consumption of byte arrays in C++ versus Java with a manager or co-developer, I can’t remember which. “^Rcvs” goes the keyboard, hoping to retrieve “find . -name ‘*cvs*’ ” for the zillionth time, then as I hit the enter key, I hear something just so outrageous I have to turn around and join in. Meanwhile “rm -rf /repo/cvsmain” poped up from bash history and diligently got to work. Needless to say the developer who’s work was in that repo cornered me at twilight, and I never did sysadmin again. Fortunately there was no period in hospital. If you hate doing sysadmin, thats a sure fire way to get out of it.

There is a reason a Study is called a Study, there the most common utterance spoken in a library is “shhh”. To get complex things into your head takes time free from distractions. The sorry take above was a simple case, and the volume of information very low, but the conversation and level of bullshit so tempting I couldn’t resist it, and bang, I wasn’t thinking what I was doing, my mind was blank and empty, just like the diskspace 5 minutes later, never again will I try to mix bullshit with command line.

So three months ago, I realised that most of my coding and complex work was done after 8 in the evening, or between 5 and 8 in the morning if I could not sleep. Time for an experiment, what will happen to my working hours if I move out and zone in. I upped camp, replugged the IP phone into an empty office down the corridor. By 10 I have cleared email, and loaded my head with everything that was there yesterday. Verified that dementia has not set in, yet, and I find I can get a good hours productive output in before the 15 second question brings it all to a grinding halt for the next hour. I looked at my timesheets last week, yes even in a University we have timesheets, there is no escape; and discovered that since moving to a quiet “study” environment, my hours have dropped from averaging 60+h to a far more reasonable 40h per week. I am almost certain that quality has gone up, I am working on a new version of the Sakai backend, looking at the stats we have resolved close to 500 issues, just did a 0.2 release and have 6 open bugs, with close to 90% test and integration test coverage.

I know plenty of other engineers have reported the same phenomena, often to deaf ears, but I cant help think that the change has something to do with it. So if you manage a mixed team of engineers, creatives try an experiment, create a space for communication but put those that need to study to get the job done in an environment where the most common utterance is “shhh” and let them get on with what was asked. If fall asleep, kick them, but quietly. If it doesn’t work, shout at them, but take them outside first, please.