A bit like a House

I’m often wracking my brain to come up with good analogies to explain why we should develop things one way rather than another or to try and explain a development strategy to non technical people. Sometimes these people are Clients, sometimes Employers, often Designers (you get the picture).

But the question remains how best do you explain (often slippery) concepts to people who haven’t got a clue what you are talking about, and without resorting to Jargon or Technical Terms?

Lately I have spent a lot of time figuring out how to evangelise various Frameworks; or actually just the concept of a Framework. Specifically I want to spend most of my time at work developing in CakePHP not jury rigged and ad hoc or home brewed libraries built by either myself or others. I think we’ve all been there… very early on as a developer you come to realise that you need organisation. You start gathering together useful classes and functions, maybe you come up with naming conventions.

It’s great your development speeds up, you learn a great deal along the way. Your boss is happy, but then for your next project they want you to do something just a little bit different. You start off no problem, I’ve got all this code, it’s great – it’ll be done in no time… except it isn’t because your system can’t bend and you are stuck writing so much code to deal with the exceptions that your benefits seem to evaporate.

A good framework seems to provide a solution – you get to take advantage of a lot of very smart people, you get the benefit of a community, you learn good practice, hopefully a lot of the mistakes and dead ends have already been avoided. In fact for me probably the worst thing is when I have to work back in mud of projects and systems that have just accumulated over years, the sinking feeling…

I think they key point is that there is a sense of an overview – that everything has a place. The framework buzz at the moment is all about MVC based systems – they have that organisation. What is nice is that looking at something written in say CakePHP or Code Igniter it’s usually pretty obvious what is going on, but even something written in Rails or Django will have familiarity due to the similar structure (my Ruby and Python skills are essentially non existent).

But back to my analogies. I live in a beautiful old cottage that is probably a few hundred years old, but some of it is made of brick, some of it is stone. One wall (we believe) is made entirely of mud (Cobb), there aren’t really any foundations and the house is listed that means we can’t fiddle about too much. Over the years people have added water and gas and electricity but it would have been so much better if they had been planned in from the start.

Of course, if you build a new house you can make something amazing (as long as the architect’s OK).

Dancing Ledge


Recently I was on holiday in Dorset on day it poured with rain all day long. In the evening I wanted to do for a walk by myself. The rain still hadn’t let up, but at 8.50pm I set off from Tom’s Field anyway, and walked up the hill. I wanted to see the sea.

As I walked the rain and the wind got stronger and stronger and it was getting darker. I reached the top of the hill, but I still couldn’t see the sea, so I kept on walking. the rain was stringing my face so much I had to look down as I walked.

I ran for a bit, but the wind was so strong that I had to stop. My jeans and my boots were now soaked through from the rain so it didn’t matter as I splashed through the deep puddles.

An errant though entered my head – I could go swimming at Dancing Ledge. Conflicting thoughts clashed in my head. It would be pretty cool, but also pretty daft. Swimming in verthat juy bad weather, in the twilight, miles from any other soul. I had an internal battle common sense vs. something else…

I got to the brow of the hill where I could finally see the sea bellow. I still couldn’t see Dancing Ledge, but it was a steep climb of a few hundred feet or so down to the sea. My internal battles continued. I had said I was just nipping out for a quick walk when I left about 20 minutes earlier… so I was aware that time was getting on.

I told myself that I had to at least carry on to stand at the top of the cliff… I had to be as close to the sea as I could. I gingerly made my way down a very dark and very muddy track between Hawthorne hedges and led into a meadow that plunged steeply down to the cliff top.

Conscious of the time, but determined to go on, I started running again until I reached the bottom of the meadow and reached the cliff top – a semi circular ledge taken out of the hillside and floored with naked stone. A series of ledges dropping away to the sea, remnants of the quarrying that made this place.

The sea was roaring and I couldn’t even tell if the swimming hole was already under the tide. If the hole was already submerged there was no way I would be getting into the wild sea. I scrambled down the ledges to get as close to the sea as I could and saw the swimming hole below me on the bottom ledge at the edge of the sea.

I walked along the ledge looking for a way down to the pool, but there was no apparent way down. Eventually I found a kind of narrow crack that I was able to scramble down and then jump left last 3 or 4 feet to the ledge. The pool lay in front of me about 20 feet long a rough rectangle blasted out of the rocks a hundred years ago. A feet passed the pool the ledge ended and the sea began as waves rolled over the ledge and foamed across the surface.

I got undressed and slipped into the water a dart of pain flashed across my shoulders as if all the accumulated tiredness and tension of the year were flushed out of me. I swam a length of the pool and back in the black but surprising warm water. The tide was starting to come in over the ledge and I scrambled out quickly. By the time I got dressed the water was lapping around my boots. I pulled myself back off the ledge and began the long walk back.

Traffic Light Therapy

Just started a new job (so far I’m enjoying it a lot (although it will be even better perfect when I can get a Cake based system (not that what is in place at the moment is bad – on the contrary it is very good – it is just that I am philosophically opposed to it…) in place… (although I really want to use a bit of Django sometime))). What comes with this is much longer walk to the office from where I park the car. My walk involves crossing some very busy and very inconveniently placed roads.

These roads have crossing points and if you are a pedestrian you get to press a button to let you cross, but the buttons do nothing – they have no effect on the traffic flow at all. All I can surmise is that the buttons are put in place purely to give pedestrians a something to do purely so they don’t scream in impotent fury at the traffic.

I know (in my heart) this to be the case, but I push the buttons anyway… out of some faint hope…

I am right aren’t I? The buttons really don’t do a thing?