I've been playing Go for three and a half years, but officially I've been a 5 kyu for two of them. I'm actually a lot stronger than 5 kyu but until my opponents realise this, they are going to continue beating me.
I only play about once a week, but I have started to do quite a lot of life and death problems. My intuition is that "knowing" the connotations of a position is both quicker and less error prone than reading them. Also, I think that before you can start reading, or thinking about strategy, you have to work out where and what you want to read. That is, there is a perception stage before reading starts, and this perception is based on subconcious knowledge. So, lots of life and death for me.
I started Go with the intention of writing a Go playing programme. This is still in the back of my mind, but I don't want to write a bad programme, and I haven't yet worked out how to write a good one.
evand: The easy answer for writing a good program is to find one that's good, but not yet good enough, and help out :) We always appreciate help, and new ideas are often especially interesting. If you don't yet have any interesting ideas, we can suggest things to work on; we also have about 800 test cases that we would like GNU Go to be able to solve, but it doesn't yet. They might provide some ideas. Anyway, whatever route you take with programming Go, good luck with it :)