Why I (Still) Do Programming

It’s an oddity that although I sell most of my time as a senior software architect, and can also afford to purchase software I need, I still spend a lot of time programming, writing code. Twenty-five years ago people a little older than I was then frequently told me “I stopped writing code a long time ago, you will probably be the same”, but it’s just turned out to be completely untrue. It’s not even that I only do it for a hobby or personal projects, I work some hands-on development into the majority of my professional engagements. Why?

At the risk of mis-quoting the Bible, the answer is legion, for they are many…

To get the functionality I want

I have always been a believer in getting computers to automate repetitive actions, something they are supremely good at. At the same time I have a very low patience threshold for undertaking repetitive tasks myself. If I can find an existing software solution great, but if not I will seriously consider writing one, or at the very least the “scaffolding” to integrate available tools into a smooth process. What often happens is I find a partial solution first, but as I get tired of working around its limitations I get to the point where I say “to hell with this, I’ll write my own”. This is more commonly a justification for personal projects, but there have been cases where I have filled gaps in client projects on this basis.

Related to this, if I need to quickly get a result in a complex calculation or piece of data processing, I’m happy to jump into a suitable macro language (or just VB) to get it, even for a single execution. Computers are faster than people, as long as it doesn’t take too long to set the process up.

To explore complex problems

While I am a great believer in the value of analysis and modelling, I acknowledge that words and diagrams have their limits in the case of the most complicated problem domains, and may be fundamentally difficult to formulate and communicate for complex and chaotic problem domains (using all these terms in their formal sense, and as they are used in the Cynefin framework, see here).

Even a low-functionality prototype may do more to elicit an understanding of a complex requirement than a lot of words and pictures: that’s one reason why agile methods have become so popular. The challenge is to strike a balance, and make sure that an analytical understanding does genuinely emerge, rather than just being buried in the code and my head. That’s why I am always keen to generate genuine models and documentation off the back of any such prototype.

The other case in which I may jump into code is if the dynamic behaviour of a system or process is difficult to model, and a simulation may be a valid way of exploring it. This may just be the implementation of a mathematical model, for example a Monte Carlo simulation, but I have also found myself building dynamic visual models of complex interactions.

To prove my ideas

Part of the value I bring to professional engagements is experience or knowledge of a range of architectural solutions, and the willingness to invoke unusual approaches if I think they are a good fit to a challenge. However it’s not unusual to find that other architects or developers are resistant to less traditional approaches, or those outside their comfort zones. Models and PowerPoint can go only so far in such situations, and a working proof of concept can be a very persuasive tool. Conversely, if I find that it isn’t as easy or as effective as I’d hoped, then “prove” takes on its older meaning of “test” and I may be the one being persuaded. I’m a scientist, so that’s fine too.

To prove or assess a technology

Related to the last, I have found by hard-won experience that vendors consistently overstate the capabilities of their solutions, and a quick proof of concept can be very powerful in confirming or refuting a proposed solution, establishing its limitations or narrowing down options.

A variant on this is where I need to measure myself, or others, for example to calibrate what might or might not be adequate productivity in a given situation.

To prove I can

While I am sceptical of overstated claims, I am equally suspicious if I think something should be achievable, and someone else says “that’s not possible”. Many projects both professional and personal have started from the assertion that “X is impossible”, and my disbelief in that. I get a great kick from bending technology to my will. To quote Deep Purple’s famously filthy song, Knocking At Your Back Door, itself a exploration into the limits of possibility (with censorship), “It’s not the kill, it’s the thrill of the chase.”.

In the modern world of agile development processes, architect and analyst roles are becoming blurred with that of “developer”. I have always straddled that boundary, and proving my development abilities my help my credibility with development teams, allowing me to engage at a lower level of detail when necessary. My ability to program makes me a better architect, at the same time as architecture knowledge makes me a better programmer.

To make money?

Maybe. If a development activity can help to sell my skills, or advance a client’s project, then it’s just part of my professional service offering, and on the same commercial basis as the rest. That’s great, especially if I can charge a rate commensurate with the bundle of skills, not just coding. My output may be part of the overall product or solution or a enduring utility, but more often any development I do is merely the means to an end which is a design, proof of concept, or measurement.

On the other hand, quite a lot of what I do makes little or no money. The stuff I build for my own purposes costs me little, but has a substantial opportunity cost if I could use the time another way, and I will usually buy a commercial solution if one exists. The total income from all my app and plugin development over the years has been a few hundred pounds, probably less than I’ve paid out for related tools and components. This is a “hobby with benefits”, not an income stream.

Because I enjoy it

This is perhaps the nub of the case: programming is something I enjoy doing. It’s a creative act, and puts my mind into a state I enjoy, solving problems, mastering technologies and creating an artefact of value from (usually) a blank sheet. It’s good mental exercise, and like any skill, if you want to retain it you have to keep in practice. The challenge is to do it in the right cases and at the right times, and remember that sometimes I really should be doing something else!

Posted in Agile & Architecture, Code & Development, Thoughts on the World | Leave a comment

Travel Blogging and Photo Editing

I’ve been asked a number of times recently how I manage to write my blog during the often hectic schedule of my trips. It is sometimes a challenge, but it’s something that I want to do, and so I make Continue reading

Monday, March 6, 2017 in Myanmar Travel Blog, Photography, Thoughts on the World, Travel

The Perfect is the Enemy of the Good

The Perfect is the Enemy of the Good. I’m not sure who first explained this to me, but I’m pretty sure it was my school metalwork teacher, Mr Bickle. Physically and vocally he was a cross between Nigel Green and Continue reading

Monday, February 27, 2017 in Agile & Architecture, Myanmar Travel Blog, Thoughts on the World, Travel

Myanmar Musings (What Worked and What Didn’t)

Well, I’m back! Apart from a mad dash the length of Bangkok airport which got us to our plane to the UK with only a couple of minutes to spare, the flights home were uneventful and timely. Here’s my traditional Continue reading

Thursday, February 23, 2017 in Myanmar Travel Blog, Photography, Thoughts on the World, Travel

The World’s Worst Panorama – 2017

As per tradition, I’ve compiled a group photograph from a series of hand-held shots taken by the members of the group in turn, in low light and high alcohol conditions. I’m moderately pleased with this year’s which was taken using Continue reading

Wednesday, February 22, 2017 in Myanmar Travel Blog, Travel

The Oldest Established Permanent Floating Crap Game in New York

I am slightly disappointed to find that the "floating market" is actually on solid ground, and only "floating" in the same sense as the "floating crap game" in Guys and Dolls. However it’s still a bustling, vibrant place, with lots Continue reading

Sunday, February 19, 2017 in Myanmar Travel Blog, Travel

Drifting Along

A decent night’s sleep! I am obviously now so knackered that I have just “tuned out” the boats. After breakfast we go to a different area of the lake, to watch more leg-rowing fishermen but who use a different style Continue reading

Friday, February 17, 2017 in Myanmar Travel Blog, Travel

A Broader View

I really shouldn’t complain. I know the sleep deprivation thing is a bit annoying, but it’s just become a running joke. On the other hand, I am getting the opportunity to see and photograph some rather magnificent sites. Here, and Continue reading

A New Twist

The "Light and Land Burma Sleep Deprivation Experience" (TM) gains a new twist. While theoretically we have an extra hour and a half in bed, at almost exactly 4.43 am the little boats start powering past the hotel, single-cylinder engines Continue reading

Thursday, February 16, 2017 in Myanmar Travel Blog, Travel

Land, Sea (Well, Lake) and Air

Today we have a welcome opportunity to sleep a bit later. Unfortunately the Pavlovian conditioning has well and truly kicked in and I wake up at 4.43, although I do manage to get back to sleep for a bit longer Continue reading

Capture and Visualisations

Today was not quite as restful as planned, and tummy grumbling slightly – this trip is quite hard work. That said, it’s another excellent day of photography. After an early start – quel surprise – we go back to the Continue reading

Wednesday, February 15, 2017 in Myanmar Travel Blog, Travel

On the Road to Mandalay

Lie in.  🙂 Until 5.35. 🙁 After breakfast we go to Bagan airport and got the flight to Mandalay, which took 25 minutes ground to ground, followed by a bus drive of well over an hour through the city to Continue reading

Monday, February 13, 2017 in Myanmar Travel Blog, Travel