Professionally, I build and support business software systems. I prefer bespoke new builds because I'm not constrained by whatever came before. Coming into a company with an established system is much harder because you have to understand how it works in detail before changing even the smallest thing. You can't make unilateral decisions because the consequences ripple out and without knowing the system you cannot predict the effects.
Currently I'm working on an established system that's more than a decade old. Outwardly it looks a bit of a mess and I couldn't wait to get stuck in changing things and making them better. But then I do not assume that the previous developer was a fool. If there is something unorthodox or not in keeping with best design practice, it's usually for a good reason having looked at the balance of trade offs. A high degree of optimisation in code may give you marginal performance improvements but makes upkeep and rapid analysis more difficult. It's a judgement call.
Pretty much any system is the culmination of thousands of decisions, all made with imperfect knowledge, according to the demands and priorities of the time. Reality never conforms to a perfect system design and 90% of intellectual effort goes into dealing with 10% of the scenarios. The measure of a good system is how well it deals with exceptions.
Over time some issues cease to be an issue so you occasionally need some housekeeping, deleting old data tables and code just to keep on top of it. But this is often slow and forensic work in that a careless change can have major repercussions which may even go unnoticed for a time, making them even more damaging. This is why we have change control systems and why system managers push back against maverick programmers who think they know better than the last guy.
And I certainly know the type. I used to be one. Some of the biggest professional cock ups I have ever made have been on the back of assumptions, not fully appreciating that things that seemingly don't belong are there for good reason - only nobody is quite sure what the reasoning was... until it goes wrong. Systems often talk to each other and though some data is seemingly useless it may serve a function for other systems interrogating your own system.
These days if I want to make a change I have to set out a business case for doing so, having done a complete risk assessment, demonstrating the kind of intimate knowledge of the specifics before they will let me anywhere near it. They won't let me go off half cocked without explaining what I am doing and why and I certainly don't blame them. If I muck up and the automatic billing data import doesn't run then people don't get paid.
In the past I have always found change management procedures tiresome and bureaucratic, often killing off spontaneous initiatives which saps the creativity out of the job - which is why I prefer new builds. New builds are not immediately business critical and the consequences of changing your approach are not so urgent. That's me and just about every programmer. Wading through other people's badly commented and undocumented code is not easy, it's boring and having no agency in what can and can't be changed without seeking consensus is frustrating.
And you know where I'm going with this. It doesn't matter if it's a software system or a management system. A system is a system and they follow the same evolutionary cycles and any change small or big comes with its own internal politics where there are enablers and blockers. Sometimes you have to navigate your way around the blockers with careful diplomacy or go the extra mile to persuade. If you go in like a bull in a china shop all you do is get people's backs up, create unnecessary resistance and sour the atmosphere. You're also setting yourself up to fail.
This is why I'm cautious of letting Dominic Cummings anywhere near the civil service. His demeanour is much like a younger, more arrogant version of myself, assuming all who came before are stupid and self serving, and that things would work so much better if only I had all the power.
I've worked in dozens of companies, and though there are common strands of bureaucracy that are universal throughout, every one has evolved in its own way and though they can all benefit from some radical housekeeping and fresh ideas, asking the questions people have stopped asking, all of them are a balance of interests and everything is a compromise bending to the realities of an imperfect and uncooperative real world.
For sure, in any bureaucracy you get your timeservers, jobsworths and petty obstructionists and people who just don't like you. That's office politics, but nothing is ever improved by bullying management imbued with simplistic ideas about how things work. I've seen this before when HR comes along with half baked faddish ideas they want to impose on people. The moment it happens I start hitting the job boards. Pretty soon you see a major brain drain and you lose the institutional knowledge upon which any functioning organisation depends. When you break up the delicate compromises, interrupting slow and steady change, all you do is leave a wake of resentment.
The Tory clan would have us believe that Cummings is an all seeing, all knowing genius who can turn it all around. They've bought into the legend and added to it - but I don't buy it. We've seen these cleverdick pretentious spads before, knowing less than a tenth of what they think they know. It never ends well as Cummings's track record in Vote Leave shows. He very nearly broke the entire organisation. There is nothing to suggest anything has been learned since.
The psychology on display from Cummings is that of a man who has been frozen out once too often and is now after revenge. Good systems marginalise and exclude men like him. That he is where he is now is a symptom of a system subverted. Mavericks have their place as ideas men and are a good resource to tap - but you never, ever put them in charge.
No comments:
Post a Comment