The home of the haikulator



My Stand-up & gigs
The Coding Craftsman

The Musical!
Incredible Productions


Previous Posts

A geeky post I was watching a BBC2 programme last ...
What a Malarkey I arrived at the gig last night, h...
Let's blog again A comedic colleague has just star...
A lot has happened since my last blog entry. Well,...
Another mammoth post I reckon Despite advising p...
Too busy to be blogging A friend of mine, who will...
Fair play After about 3 years of asking for it, my...
2048, a webspace odyssey As my last post was my 21...
Post 1024 - that's 210 I still have a general disd...
Dawn of the deed Well, I just did a gig and did so...

Blog Archives

October 2001
November 2001
December 2001
January 2002
February 2002
March 2002
April 2002
May 2002
June 2002
July 2002
August 2002
September 2002
October 2002
November 2002
December 2002
January 2003
February 2003
March 2003
April 2003
May 2003
June 2003
July 2003
August 2003
September 2003
October 2003
November 2003
December 2003
January 2004
February 2004
March 2004
April 2004
May 2004
June 2004
July 2004
August 2004
September 2004
October 2004
November 2004
December 2004
January 2005
February 2005
March 2005
April 2005
May 2005
June 2005
July 2005
August 2005
September 2005
November 2005
December 2005
January 2006
February 2006
March 2006
April 2006
May 2006
June 2006
July 2006
August 2006
September 2006
October 2006
November 2006
December 2006
January 2007
February 2007
March 2007
April 2007
May 2007
June 2007
July 2007
August 2007
September 2007
October 2007
November 2007
December 2007
January 2008
February 2008
March 2008
April 2008
May 2008
June 2008
July 2008
August 2008
September 2008
October 2008
November 2008
December 2008
January 2009
March 2009
April 2009
May 2009
August 2009
September 2009
January 2010
March 2010
April 2010
May 2010
June 2010
July 2010
August 2010
September 2010
October 2010
November 2010
December 2010
January 2011
February 2011
March 2011
April 2011
May 2011
June 2011
July 2011
August 2011
October 2011
December 2011
February 2012
March 2012
April 2012
May 2012
June 2012
July 2012
March 2013
April 2013
May 2013
June 2013
July 2013
August 2013
September 2013
October 2013
December 2013
January 2014
February 2014
March 2014
May 2014
July 2014
January 2015
February 2015
March 2015
April 2015
May 2015
June 2015
July 2015
August 2015
January 2016
February 2016
March 2016
April 2016
May 2016
July 2016
August 2017
January 2018
August 2018
September 2018

Global Domination

Locations of visitors to this page

Monday, January 30

Some debate on Creationist programming
For the first time ever, I've received some feedback on a blog post that even I thought was geeky. I was writing about the creationist vs the evolutionary ideas in terms of product development. To reiterate, I was looking at the Agile idea that we should aim for short incremental improvements when we develop the product towards some goal. In this approach, though we might spend a few minutes with a program that doesn't work, or has some odd loose end, we only ever aim for an easy-to-achieve working and slightly different program. Conversely, the creationist approach (as I'm defining it) says that we can spend time working on a component without surfacing it as part of a working program. In other words, we can create a huge complex thing in completeness between increments.

Here is was my correspondent (an old friend who has chosen this moment to renew our acquaintance) thought:

By definition all computer programs can be reduced to small lines of code and in the process of writing code you are adding these pieces one by one, although you usually have a clear 'vision' of the required end-state. The only question is when to release the product to market. Usually we wait to release until the functionality is fully usable by the customer, but there are many occasions where we may wish to introduce semi-functioning capabilities into a product, possibly with a beta designation.

With a computer program, having extra pieces of code that is not used does not hurt the product (but the same is true for organs that are no longer of use to us - why have humans not stopped having appendices -people who suffer from appendicitis should have died out long ago, leaving only humans without an appendix). Sometimes although we are carrying around extra parts that appear to be of no use, this is not a problem unless there is an alternative that is in direct competition available in the market place.

This is indeed food for thought. Let's have a quick look.

The smallest unit of the program is a line of code
True enough, but not all viable changes can be done in terms of single lines of code. I've just spent all morning writing a series of things which are interreliant and which cannot be surfaced to the user yet. No single line could do the job. So, if the unit of "mutation" is a single line, then the whole idea of evolving programs just ain't gonna work. However, if the unit of mutation is "that which I could do in a few hours", which is the sort of approach I think makes practical sense and which Agile seems to look at, then evolution still seems possible.

Clear vision of the end state
No way Jose. I have never have a perfect or unambiguous view of the end result. Indeed, I've only ever discovered this fact afterwards, so doing little increments and getting feedback (on something which won't break because it's incomplete) seems like a good idea.

When to release to market
This is what Agile tries to make possible more easily. The idea is that every day (or iteration, at least). There is a fully working piece of software with all the latest changes, none of which make the program unviable. Like evolution, which can only allow for the survival and propagation of a creature that doesn't have some horrible fatal flaw (at least compared to its ancestor), so incremental development needs to result in working increments as we go along. If someone has decided to rip something important out, or work on something huge, then this incremental delivery doesn't happen.

Semi-functioning capabilities. In nature, these would not survive, and I think that's what Agile is trying to say about them in software engineering. If it's only half working, then it's not working. If, however, it only does half as much as we would want it to, but is totally working, then that's still an improvement on it doing none of those things. In addition, half of what we wanted it to do might actually be enough for someone to get use out of it and, therefore, make them want to pay us for the privilege of owning it right away.

Extra stuff that is not used does no harm
I agree. In fact, this morning's work has resulted in exactly that situation. Nobody except me and my team will know that my new stuff exists. It hasn't been surfaced in any way a user could discover. This is where the computer programmer can deviate from the evolutionary analogy a bit. Evolution would only favour a mutation which improved the creature's survival. A computer programmer can add something which the programmer knows will benefit the program later on. Such things include back-end improvements or refactorings. These may well be totally invisible to the end-user. However, again it should be stressed that doing this adds inventory to the process. In other words, I've put effort in, so where's the reward? I should be able to see the benefits as soon as possible (in terms of surfacing something to the user). The reason for this is that it's better to do a small thing end-to-end and be able to show a user it, then do a lot of preparatory work and then demonstrate the end result in a big bang and discover that it's well off the mark, or discover that I've gone out of business while I was working on the beautiful creation.

So creationism vs evolution
Again, it's an interesting one. Sometimes, I think the programmer has to put his faith in his own abilities to make the perfect solution in one go, rather than evolve a solution. Yet other times, I think we are far too overoptimistic about our understanding of what is really required to make the perfect creation. Doing little steps in the right sort of direction can take slightly longer, but can provide so much more feedback and guarantees that if we had to stop, there'd still be a viable product. Given that my experience of product development has largely occurred in situations where I was always months away from a product which could do everything available from all of its menus, the idea that we could keep the product releaseable seems to be the ideal.

I think it can be done.

Why humans don't evolve
My correspondent has brought up an interesting thing that has been bothering me of late. I've dropped the whingeing about programming now. The thing which I've realised is that we humans pretty much defy evolution and natural selection. Why? Because we have come to the conclusion that life is sacred and we must do whatever it takes to preserve it.

Nature is a harsh environment. Creatures get killed by other creatures, or by their own inability to look after themselves. It's exactly this process that reduces the likelihood of weaker alleles being prevalent. It also emphasises the stronger versions. To survive, one must compete and improve. That's what gives us the huge diversity of creatures, adapted to their environments.

Humans, however, are sentimental and life-preserving. No natural selection for us. We'll favour the underdog. If someone has a congenital condition which hampers their survival, we'll keep them alive and someone may even fall in love with them, possibly having children with them. In nature this doesn't happen. In humanity, we defy nature. I don't know if it's right or wrong.

I do know that there is evolution occurring in some ways. Our culture is evolving. Instead of physical survival traits, we're developing cultural ones instead. Who can be the most famous? Who can be known by one name, instead of their full name? That's a sort of propagation. It's shallow, but it's there.

Look at the recent celebrity Big Brother. Take a bunch of unimportant people, who have a fake status of "celebrity" cast upon them through stuff that they have or haven't done. Add an underdog (we love an underdog) in the form of Chantelle, some exceedingly unimportant nobody (in the grand scheme of things, we all are) and see what happens. The public choose the nobody over the other nobodies and then the nation's attention is bestowed upon that person who, in the absence of any discernable ability to do anything, gets her clothes off for the tabloids, because it's easy money and she may as well cash in on the only natural thing she's got.

Maybe if we were constantly fighting for our lives, or had to watch our loves ones die because of lack of medical science, we'd be more keen to have real things in our lives than all of this.

Changing the subject this morning, I had a fairly odd journey into work today. It's interesting how these things go. I was offered a cup of tea before I left, but declined. Had I remained, I might have left 5 minutes later, which would not have been the end of the world. However, I chose to leave when I did.

I spotted a dead rat in the road on the way to the car. It was completely flat. A white rat, it looked quite odd. For a second I wondered if it might not actually be one of my girlfriend's guinea-pigs. One of them is white. It might have escaped in the night and been run over. Except guinea pigs don't have tails - well, not rat's tails at least. This musing delayed me and so I went over to my car. I reversed it out of the parking space and headed off down the street. All of the events leading up to this drive had taken time from me, or given me extra time to get to work. I had the sat-nav telling me to turn left into a minor road, I made the turning and was then hit by a car that had decided to ignore the combination of the give-way junction opposite the road I was turning into, and the presence of my car.

If I had been a few seconds delayed or sooner, the accident would not have occurred. If the person driving their car had been PAYING ATTENTION then the accident would not have occurred. I saw her slow down for the junction and I had right of way. I even clocked her out of the corner of my eye (as she idiotically rolled out into the road) and tried to get out of her way. It was not to be. Now we have to go through the process of getting her insurance company to pay up. This may be complicated by the fact that my insurance company's first stab at finding the details of her company has not been wholly successful.


My poor car.


Post a Comment

<< Home

All content ©2001 - 2012 Ashley Frieze