sea nerd blog
summer twenty fourteen annexe

quality & context

image: an image

The quality of the code I write is very dependent on the team I’m in.

The quality of my thinking about software is very dependent on the team I’m in.

These are both observational statements. I don’t have metrics. I didn’t measure myself. I can only really use my sense of achievement, technically, or lack of it, and my sense of the quality of the code I produced. But that latter sense of quality is based on my sense of my use of the language, the code as poetry, not in measured metrics, except in that it did what was wanted by the people who asked me to write it.

Now, I like to think I’m pretty good. In terms of my own criteria for pretty good at programming, I am pretty good, unsurprisingly. I’m not the best, by my own criteria, by a long shot. That unawarded achievement goes to the designers, original and ongoing, of the languagues, and the guys who really use well to produce seriously good quality products.

But the clue to the problem with this belief is in the statement ‘by my own criteria’. Who doesn’t believe they’re pretty good at what they do, professionally? The problem is those criteria.

This problem is seen elsewhere. Most car drivers think they’re pretty good, especially the crap ones. Car driving can be measured objectively, such things as breaking the rules of the road, & involvement in accidents, can reveal relative quality. Yet the drivers who are objectively crap tend to think they’re not. So, me thinking I’m not a bad programmer is not a sign of being not a bad programmer: if anything, it’s a hint of the opposite.

So I need metrics to measure my skills, and to help me improve them. I’ve access to the research; I’m a member of the ACM and the IEEE. Perhaps I should get my finger out and go look’see. It could be painful.

15.6.14


leadership

image: an image

When I was active in politics, I was quite successful. I ended up running organisations on a national level. You don’t get to do that unless you are seen to be good at what you do.

I decided, ultimately, to drop out of politics.

I’ve been a programmer for decades. Yet I have never progressed in that way.

The main reason is this: many people in software management don’t have a clue what they’re doing. Being clueless, they will fit in to whatever is necessary to please those further up the chain. They often end up blindly following some idiotic fad or other. This isn’t so silly. When it goes wrong, as it will, they don’t get too much of the blame if they obviously followed their boss’s belief.

The problem is, of course, that people who see through the fad don’t get to climb the tree. I didn’t climb the tree. That’s because I wasn’t seen to believe. I did climb the tree in politics partially because I did believe: political parties are about a common belief. You don’t join if you don’t share the belief. There was no fad to block your progress.

The real reason I didn’t get to climb the tree is that I refused the opportunities I had. It was a deliberate choice, too: I didn’t want to climb the tree. That might have been a mistake, but it’s a mistake made. I had other priorities. I have never been a one trumpet man, I have always had to spend time and energy on multiple things. My arts are too important to me.

Putting all these together, the only way I could ever progress is to join the right organisation, or start my own successful business. I could never progress when working for fad–fascinated organisers. In fact, I followed the money, usually, wrongly presuming money indicated quality.

Let me make it very clear that I have worked for some high quality managers and organisations. They were, though, unfortunately, rare. I was working as a contractor, in a role to do a particular engineering job, which I did.

The best decision I ever made professionally was nothing to do with any of this. It was to leave the UK. But that’s another blog.

15.6.14


to do

image: an image

If I were starting out again, I’d do my utmost to work for an organisation that had high quality management and high quality products.

But it’s very very difficult to get inside the perfect organisation, even in good times like now. In bad times, the newly graduated are pretty well stuffed.

But they’re not without options.

If you want to get yourself into an organisation with very good habits, to learn those habits, then there are certain voluntary organisations out there.

My personal recommendation would be to try and get involved in a quality project. There are many. How do you find them? How do you know which ones are quality, and which ones have an unjust reputation. Find a group which has clear evidence of producing quality code, which quite obviously uses objective criteria to judge code. Have a look at those criteria, and make sure they include empirical techniques. Reputation may help you decide where to look at first, but it is not to be used to confirm you’ve got the answer: it is too easy to abuse reputation through the dark arts of marketing and lying and spin and so on.

Do not let reputation give you the answer. Have a look at the code. Have a look at how the quality is determined. Have a look at the process. Is it empirical? Is it objective? Ignore a lot of the comments that fly around, most people who comment are Mr Angry of Sevenoaks who still can’t quite get over the decision by the Yorkshire cricket club to destroy Sevenaoks’ seven oaks with a humungous fart (substitute any convenient enemy / victim / weapon / event).

In fact, I need to up my own standards again. I’ve not worked for an organisation with high quality code and high quality management for quite some time. My quality has slipped. My new job is very self–motivating and self–judging. If I am to bring my quality up to scratch, I need to get involved in something else with that desired quality to help me do so. It’ll have to be a fairly long term thing.

15.6.14