Skip to main content
 

Maybe I'm the Muppet

5 min read

This is a story about software development...

Cog

Maybe I'm the problem, but wherever I go, the projects I work on are delivered on time (or early!) on budget, and they work. Everywhere else in the IT industry, projects are late, overbudget, and they are a disaster zone: security problems, performance problems and full of bugs. Maybe I'm the muppet though, for reasons I'm about to explain.

My approach to large complex software projects, is to decompose the problem into smaller easier to handle pieces. If the problem can't be decomposed into small chunks, it's probably not going to succeed. As a non-muppet who I admire once said, you wouldn't build a heart pacemaker or some other piece of technology which was a matter of life-and-death, with a design which couldn't be built and tested with certainty that it would perform its safety-critical functions perfectly. Heart pacemakers and suchlike are highly complex, sure, but they are built from lots of very thoroughly tested and well-built smaller components, which work together.

A watch, is of course, a very complex piece of mechanical machinery. The idea that we are just cogs in a big machine is a good analogy: the machine is fucked without one of the cogs. A good machine has exactly as many cogs as it needs; no more no less. Another non-muppet who I admire is oft-quoted as saying that everything should be made as simple as possible, but no simpler. No non-muppet ever said "I like this, but wouldn't it be better if it was more complex?".

I know that arrogance and delusions of grandeur are - unfortunately - big problems that I have to deal with, as a result of my mental illness: bipolar disorder. I'm sure there are plenty of quiet, unassuming and humble people out there in the world - somewhere - who suffer from bipolar disorder, but I'm one of the more common ones: I have a lot of confidence in my skills and abilities, which is frankly justified, because I don't think I'm a muppet, because every project I work on is a big success. But, as I said before, maybe I'm the muppet.

Of course, there's no "I" in team but there is a "me". There's also a hole in the "A". If your team doesn't have an a-hole in it, you're the a-hole. I often think that I'm probably the a-hole. Etc.

I know that we're all supposed to think of ourselves as the humble tiny cog, meaning that we're replaceable and not very important. I know that we're supposed to believe that our individual contribution is negligible. Frankly, that's a load of horse shit.

Sure, if you just want to turn up at a place for a few hours, in order to get money, and you really don't give a shit about what you do there, so long as you don't hate it so much that you kill yourself, then yes, you probably are "just a cog in the machine" in the way that most people mean. However, if you care about delivering successful outcomes and take pride in your work, then you too are a cog in the machine: that is to say, the machine is fucked without you.

Of course, capitalism has attempted to turn all workers into de-skilled automata, instead of highly sought after, valuable craftsmen. Instead of having some highly skilled scientists, mathematicians, engineers and suchlike, who are experts in their field, and experts on the particular projects they are working on, capitalism would prefer it if everyone was replaceable at the drop of a hat, so that anybody who's not kowtowing to their paymasters can be unceremoniously ejected from the workplace.

In my particular profession - software engineering - capitalism has succeeded to some extent, in that vast quantities of extremely poor quality code is produced, most of which will never be assembled into any kind of working system, delivering any kind of tangible benefits as intended, because fucking muppets are in charge, and muppets think that they're the brains and they just need a bunch of programmers to be typists for their 'perfect' requirements.

Maybe I'm a muppet, because I could accept a meagre wage, doff my cap at the muppets and pretend like they're not muppets. I could pretend I'm a lowly programmer instead of a highly skilled, experienced and seasoned veteran software engineer. I could pretend like I don't see the utter stupidity. I could allow the projects I work on to be late. I could allow the projects I work on to go overbudget. I could allow the projects I work on to fail. If I just wanted money, why would I care? I'm a muppet -surely- for not shutting my mouth and just taking the money.

Of course, lots of people care; lots of people want the projects to be on time, on budget and to succeed... but only the skilled craftsmen - the engineers - can make that a reality. No amount of spreadsheet monkey muppets can turn a failing project into a success, but one or two excellent engineers can.

Anyway... I guess I'll be looking for a job again soon. The muppets don't like it when I attempt to do things the right way and make their goddam project a success, weirdly, and they can't wait to get rid of me when they think they don't need me anymore. About to be unceremoniously ejected from the workplace, I think.

 

Tags:

 

My First Jobs: Defence and Banking

5 min read

This is a story about guilt...

Conscience

The ethical benchmark by which I try to judge myself is that of a schoolfriend who's a renowned thinker and writer, and an exceptionally clever and thoughtful person; a real inspiration. I'm occasionally reminded that he reads my blog, which is an incredible privilege, but also makes me more acutely aware of my shortcomings in the ethical department.

As the title of this essay suggests, my first job was in defence. In my defence - pun intended - I was 17 years old, and my motivation was to achieve some degree of independence such that I might later be able to choose what I wanted to do with my life. I don't feel like I ever had the opportunity to think "what do I want to do with my life?". It seems fairly commonplace amongst the sons and daughters of middle-class families, that their children find a subject that they find interesting, which they pursue academically at university. I never had any financial support from my family, to pursue any dreams, so I was forced to make pragmatic decisions. There was the opportunity to study for a degree while I was at my first job, but a job's a job... I had no passion for making weapons of mass destruction, so I wasn't motivated to study the subject academically.

I distinctly remember imagining a day when I might find out that a vessel had been sunk by Spearfish or Tigerfish torpedos, and I considered how I would feel if there was loss of life, directly attributable to my work. I suppose I should have thought about it beforehand, but I didn't - I just wanted and needed a salary; I needed to pay my rent and bills.

In all honesty, I didn't quit my job in ethical protest at the defence industry. I quit because I was getting ripped off - I was very underpaid for my skills and experience, and I resented that.

Where could I get paid the most?

Banking.

I'm not proud of it, but my thought process really was as simple as asking myself: where can I get paid the most?

I suppose just about anybody would think "investment banking" when quizzed on where a person might find the highest salary. The late 1990s was not quite the loadsamoney heyday of the yuppies, which was ushered in by Margaret Thatcher, but the City was still awash with money. My motivation was pure greed and avarice, one might say. I put little or no thought into the ethics of my career decision, I freely admit.

In my defence - pun still intended - I was leaving the defence industry, so surely anything I chose would be more ethical than that; more ethical than designing and building weapons of mass destruction.

With hindsight, usury inflicts as much misery and suffering as war.

But.

It would take many years before I understood that.

My first job in the City of London was everything you would expect it to be: an extremely macho and male-dominated environment, with plenty of booze, drugs, strippers and escorts. Awash with cash, our lifestyles were offensively lavish. It was pure vulgarity, writ large.

I was still young, of course... only my second job, but you must also remember that I skipped university because I couldn't afford it when I was 17. But then... but then... I was wearing golden handcuffs.

I kept thinking about going to university to pursue a subject I was interested in. Psychology or psychopharmacology, perhaps. I applied and was offered a place at some very prestigious institutions. However, I couldn't face being poor again. I couldn't give up the lavish lifestyle, once I'd had a taste of it.

It was several more years before I found myself working on a project related to the confirmation and settlement of credit default swaps for the investment bank which processed 70% of all trades. Quadrillions of dollars of credit swaps flowed through systems I designed and built. I didn't really think about it too much, as I was too busy being an engineer: Once the rockets are up, who cares where they come down? That's not my department.

I was laid low with depression, which kicked in at the exact same time as the credit crunch and the global financial crisis of 2007/8. I often say I was at ground zero, because it's true.

I still don't ask myself whether what I'm doing is ethical: I'm an engineer, and I like to build stuff; it's only with hindsight that I see the ethical problems. A schoolfriend suggested I sabotage the project I'm working on, which is 'big government' stuff, but it seems benign to me... perhaps I'll see things differently, when it's too late.

I absolutely do not pass the ethics test. I feel like my defence is a flimsy version of: "if I didn't do it, somebody else would have done". I feel like I'm a Nazi saying "I was just following orders".

 

Tags:

 

Give a Job to a Busy Person

6 min read

This is a story about workload...

Gas Meter

The original idiom - which I have adapted to make it more inclusive - says that if you want a job doing, you should give it to a busy man. I notice that this is fairly true, from my anecdotal observations: the busier I am, the easier it is for me to deal with extra work being given to me.

One year ago I had the intolerable task of sitting quietly trying not to get noticed, and trying to keep my mouth shut. I knew that the very best thing I could do for my career and my bank balance, was not to rock the boat; not to attempt to say or do anything useful. The best thing I could do was act as a very expensive seat warmer. I was paid for being present, not for being useful or productive.

One year ago, seemingly minor things made me exceedingly anxious. If I had to get my car tested for roadworthiness, have a haircut, deal with the gas company, or any one of a million ordinary everyday tasks, I would find it unbelievably stressful, and I struggled to cope.

I have started to work 100+ hours a week again. To say that I'm busy would be a massive understatement. I am hyper-productive for the maximum amount of hours which human physiology allows for, without sleep deprivation causing me to have a psychotic episode. Unable to sleep, it's quite usual for me to open my laptop and start working in the middle of the night. I wake up well before my alarm clock. I am running in overdrive mode at the moment, also more commonly known as a manic episode.

Of course, with mania, I get very impatient and irritable about things which are not on the critical path. For example, I was asked to update a spreadsheet which detailed the activities I've been doing during the past couple of weeks, and how long I spent on each activity. To me, this is the most ridiculous waste of my time, given that 100% of my time has been spent on productive activities for one single organisation, so I really don't give a toss about how it's sliced and diced - all my valuable time has gone to benefit the organisation who wants me to waste time on an unproductive exercise, which leaves me less time to do productive activities. It's idiotic to get your highly paid staff to spend their time doing activities which are not valuable, when instead they could be doing something useful.

The argument would be that timesheets and suchlike are the way that we calculate how much to pay people, but this is demonstrably absurd. If the number of hours worked had any kind of relationship with the value delivered, then I would agree that it's important for us to record or time worked on task accurately, but there IS NO relationship between remuneration and hours worked. If I work the same number of hours as some of my colleagues, I am paid 5 or 6 times as much. Am I 5 or 6 times more productive and valuable? Sometimes I am less valuable, sometimes I am more valuable, and sometimes - although it's exceptionally rare - my remuneration tallies with the value that I'm delivering.

One of my colleagues said to me "you've got too much time on your hands" when he saw something I'd been doing, which he thought was a waste of time. Later, that piece of work I'd done turned out to be one of the most valuable things that anybody in the team ever produced - something that benefits every member of the team every single day, and perhaps many many other members of other teams, and indeed the whole organisation.

Value and productivity are very hard to measure. "Bums on seats" culture is dreadful. The number of hours that staff spend at their place of work has no bearing on how productive and valuable they are.

In the teams I get involved with, I try to instill a culture of "think it... do it". I want people to implement any innovative ideas the moment they have them. If the ideas turn out to be duds, so what? It only takes one or two great ideas that really pay off, to more than outweigh the small amount of wasted time doing things which had little value. So much time is wasted talking about priorities, and the pros and cons of doing something, and agonising over whether it could or should be done. The culture I bring to teams and organisations is one where everybody's encouraged to build stuff, even if it gets thrown away; even if it's silly!

It's much better for people to be productive and have their brains being kept busy, than looking busy. It's so much better for people's sense of job satisfaction, sense of purpose, sense of pride, sense of ownership, and a multitude of other great qualities that we want from the people in our teams and organisations.

There's no obvious value in the text-based adventure game which I hid inside one of our systems, as an easter egg, but the value is in the cultural tone that it sets: it's OK to build stuff; don't be afraid; don't be so serious... this is supposed to be fun and intellectually challenging.

As it turned out, now we have several tools which imitate the game I built, which perform useful functions for the organisation. Instead of attempting to "win" a "game", the objective is to find and fix problems, using the available clues, which is pretty much what every IT professional does for a day job, but it's a lot better if there's a half-decent interface to help with that task. Computer games are always brilliant at having the learning curve set to make them accessible, and they take advantage of the best available features: if all you have is a computer terminal that can print text and accept typed commands, then you can still create a brilliant game, even without fancy 3D graphics and sound.

I'm busy as hell, and you might say that the 2 hours I spent writing an adventure game were wasted, but in fact it was time well spent. The 5 minutes I spent battling with a spreadsheet where I had to record the hours I spent working on things, was a total waste of time and quite corrosive to the great working culture I'm trying so hard to create.

 

Tags:

 

Ticks in Boxes

3 min read

This is a story about form filling...

Vote

So my project is delivered and the giant form-filling SurveyMonkey exercise has begun. Today was supposed to be exciting, but it wasn't. It was boring. If I do a good job, then this part of the project is boring. If I do a good job then everything's supposed to work and run smoothly. I expect there will be problems, but at the moment there aren't any, mainly because nobody's doing the damn survey.

It's a little anti-climactic. I got up super early this morning, hoping to see the first users using the system, but there've barely been more than a handful of people who've stumbled upon the system. It won't be until tomorrow or the day after that people are notified that they have to do something, and their survey results will start flooding in. After so many months of hard work, it's a little hard to sit and watch a flat-line graph, showing virtually zero activity, the whole day. What a disappointment. At least things are working though, so far as we can tell.

I can't go into too much detail, because I'm bound by codes of conduct, privacy & confidentiality contractual clauses, and indeed other rather scary-sounding laws which restrict me from spilling the beans, but the good old general public are about to be asked to do a cool SurveyMonkey, and this is jolly exciting... except it isn't because nobody's doing it yet.

I'm exhausted.

It's been a long old slog to get to this point.

With so much nervous anticipation, it's hard to maintain the same level of energy and enthusiasm when nothing is happening. I found myself nodding off at my desk so I had to come home early. I'll try to get an early night and lots of sleep, in the hope that tomorrow is a more exciting day, providing some adrenalin to carry me through an otherwise pretty anti-climactic period.

It's supposed to go smoothly. It's supposed to go well. There aren't supposed to be any problems.

But.

Having worked so hard for so long, to meet a very tight deadline, I really don't quite know how to re-adjust to life without that pressure; without that goal and sense of purpose. It's difficult changing mindset, from push, push, push, to now wondering what fire is going to break out that will need to be put out; what crisis is going to emerge?

Still very obsessed with work and project, but the waiting is now mostly over, and we'll soon know whether some bold decisions I made have paid off, or whether they'll cause terrible problems and turn out to be disastrous.

 

Tags:

 

MMORPG

2 min read

This is a story about co-operative play...

Java

What's the game I'm playing right now? Well, it's called "get the massive software system to work before the damn hard deadline". It's a multiplayer game. It's fun.

I've spent all evening chatting to some genuinely delightful colleagues. Instead of trash-talking the overpaid fuckwits, I should be raving about what a pleasure it is to work with some brilliant individuals.

I'm not so sure I would go as far as to say "I love my job" given that earlier I very much wanted to down tools and give up until the morning, in the face of overwhelming technical obstacles. I was inclined to wait for a couple of more skilled individuals to be on hand to offer some real, tangible, useful assistance, but I lucked out on being able to take a couple of nice shortcuts.

The joy has come from the camaraderie of working with the select group of individuals who really care; who really know their onions and are used to working under pressure, having to solve nasty problems with a gun to their head and a crazy number of people breathing down their neck.

The chips are down. This is sink or swim time. This is where shit gets real. I love it.

Earlier I thought "is it only Monday?" and I thought that I should give up and take it easy, because it's going to be a long week. Then, I got creative and found a way though. I've been doing work-related stuff up to 10pm but I don't care, because we're making progress; we're kicking ass.

This is fun. It's sociable.

 

Tags:

 

Just Another Highly-Strung Prima Donna

10 min read

This is a story about arrogance...

Badge

I have spent huge chunks of my career helping the rich to get richer, not doing anything useful for society at all. I have suffered as a wage slave, working a bullshit meaningless job, doing nothing except making the world a worse place. I have been denied the pleasure of being a builder creating something real and tangible.

I'm very jealous of the engineers who get to work on useful projects - helping to feed, house and clothe the masses. I wish I was working on something more worthwhile.

The project I'm working on is quite simple really: ask a bunch of people a bunch of questions, and gather the answers so that they can be analysed. I suppose you could call it "big data" if you wanted to use an over-hyped phrase that's in vogue at the moment, but really it's just a big survey; an opinion poll.

I've developed software for nuclear submarines - that was my first full-time job. I've developed software for trains and busses. I've developed software for every school in a whole country. I've made computer games that were played by half a million people. The computer games were the hardest.

As an old-school programmer, I slaved away at my keyboard, creating the graphics, sound, music, and endlessly playtesting my games, to make them as good as possible before I released them to the general public. That was hard work.

But it was rewarding.

The challenge made it rewarding.

It was rewarding because it was difficult.

Creating an online survey is not difficult. I expect you could do one in a few minutes, using something like SurveyMonkey.

So, how do you make your day job interesting if the project is not challenging? Well, there's a lot of challenge in getting anything done in a big organisation. It's a million times harder to do anything when you're inside a big organisation, and things go painfully slowly. The interesting part is in trying to build anything at all, in the first place, and in trying not to build something that sucks, just because big organisation software always really sucks.

One programmer can make a game in one month. Two programmers can make a game in three months. Ten programmers can make a game in two years. And so on. And so on.

I'm not saying my colleagues aren't any good. I'm just saying that trying to learn computer programming as your day job, working for a big organisation, is pretty much impossible. The only way that anybody ever became a good programmer was by first being allowed to work on a whole self-contained project themselves, and having to support and maintain the code; having to deal with angry users reporting bugs; having to be up in the middle of the night figuring out a mess that they created. You can't learn that stuff if you're just a junior member of a big team.

It does make sense to break a system up into components which are then assembled to create the finished product. It does.

What does not make sense is dividing up a piece of work which could be easily accomplished by a single developer. It does not make sense to have 8, 10 or even 12 programmers all trying to work on the same piece of code. It is not fast. It is not efficient. It does not produce a good end result.

However, would I like to have to support and maintain my code after the project is live, on my own?

No.

Of course not.

Whenever I have finished something which was big and complicated, and hard work to complete, then I never want to see it ever again. However, if I'm the person who created all the code, then I'm the only one who knows how anything works, and it's a very difficult steep learning curve for any poor unfortunate who has to come after me to unpick my work.

In this regard, I suppose it's necessary to have a bunch of people, so that the 'hero' code warrior doesn't saunter off into the distance, leaving some other poor person to carry the can.

So many times in my career I have inherited somebody else's mess.

Which is why the pleasure and professional pride I derive from my work at the moment, is in the effort I put into making a system which is simple and easy to maintain, and easy to support. There's a temptation as a good developer, to be really smart and do things in ways which seem very elegant and beautiful to the trained eye of a highly skilled engineer, but are completely impenetrable to your average journeyman junior programmer, just learning the ropes. I take huge pride in creating deceptive simplicity. Yes, it's great to show off how smart you are by creating something complicated, but it's so much harder to create something that looks simple.

I am intolerant of the incompetence of a highly paid consultant who I have to suffer. "Why would you put that there?" "Why would you do it like that?" "Why didn't you read that comment?" "Why are you making such a mess of everything?" "Why have you introduced all this unnecessary complexity?" are questions I want to yell at my incompetent colleague all the time.

My junior colleagues are, well, junior. I can't get mad at people who are just learning. I have patience for learners. I spend a lot of time coaching and mentoring, helping my junior colleagues to learn and develop.

My graduate colleagues are stupendous. They have amazing ideas. They produce great work. They are smart and a pleasure to work with.

Why oh why oh why do I have to work with somebody who doesn't deserve the massive consultancy fee that they charge? It angers me that they are lagging behind the graduates and dragging the project into the dirt; making a complete pigs ear of everthing. It would be so much better if they weren't on the team, because they are so slow, and what they do produce all has to be re-done, so it creates a huge amount of extra work for me. Their work is riddled with bugs and defects. Their work is shoddy, so their contribution is not welcome: it's counter-productive.

Of course, I shouldn't rip into colleagues on a public platform. But, they ruin my day and undermine all my hard work, threatening the success of the project, so why the hell shouldn't I let rip? They're costing the organisation a shittonne of money, which is a complete waste of money in my opinion.

Anyway, I often think "would it be better if everybody just stepped aside and watched me work?". I think "would it be better if I designed and built the entire system, on my own?".

No.

No it would not be better.

I would finish the project, but I wouldn't want to support it. I wouldn't want to maintain my own code. I wouldn't want to ever look at the code ever again. I wouldn't want anything to do with my code or the project. That's not fair on the poor sods who would have to support and maintain my code.

It's also not fair for just one person to have all the enjoyment of creating an entire system, and then to ride off into the sunset believing that it's a job well done, when software is considered to be an asset - all the code will be preserved and future development teams will be forced into attempting to re-use it, when really it should be thrown away. Decrepit old systems, where all the original developers have long since left the company, should never be resurrected, but they always are. Idiot management always wants to adapt a system for a purpose it was never designed for, and that nightmare always falls on some poor unsuspecting underpaid junior programmers, who will have a horrible life, being forced to work with somebody else's code and never being allowed to create their own system.

Sure, the arrogant part of me wants the glory - the heroics - of creating some massive complex system as a one-man team. I don't want the faff and the hassle of having asshat overpaid idiot incompetent consultants, messing up my stuff. I don't want to be slowed down by people who aren't as experienced and quick.

But, I know it's better for everyone if we do things the "modern" way.

I wish I had been born earlier, so that I could have been one of those programming gods who created an entire video game, but I suppose I had that glory. The first iPhone was my opportunity to create retro games, in just the same way that the early video game pioneers did - a bedroom hacker. I grabbed that opportunity and I loved it, except I also learned that I never want to ever touch my code again when I'm finished - I want to release something and then forget about it.

In this era of the web, people expect products to be maintained. Software no longer ships on cartridges, floppy disks or CDs. Software can be updated via the internet. Software is delivered via browsers. Software is constantly being updated by the developers, like websites are constantly updated, so software development had to change to reflect this. Software development is now a team sport, but I came from an era when a prima donna like me could do everything on their own.

I fear this essay has revealed an unpleasant side of my character. I fear that I've crossed lines that I should not have done. I fear that my arrogance is on display very badly.

Still, I had to share this. It's my habit to share things that are bothering me, and/or that I feel very strongly about.

It's a difficult time, because there's a lot of pressure and stress. I feel like yelling "shut up and stand back" and "hold my beer" while I roll up my sleeves and get things done. When I come under extreme pressure and things are going wrong, I retreat into my comfort zone: working in isolation. Nobody was with me when I learned how to debug. Nobody was with me when I figured out how to solve complex technical issues. I had to figure those things out on my own. Nobody comes to me with the answers: I have to figure them out, and I do that on my own in isolation. When I get stressed, the last thing I want is any "team" - the team adds no value in those difficult situations where there's a dreadful gremlin in the system, and it does take some one-man heroics to find and fix the problem.

I've written vastly more than I intended to, because I'm very highly-strung at the moment; the pressure is immense; the deadline is imminent.

I can hear colleagues' angry voices in my head:

"You're not the only one who's worked hard on this"

"You're not the only one who cares"

"You're not the only one who's made a valuable contribution"

"You're not as good as you think you are"

"You're arrogant"

"You're full of yourself"

"You think you're so great, and everybody else is inferior"

"You're not a team player"

I know I would have had a breakdown a long time ago if it wasn't for the team. I know that the project would not have been as much fun if it hadn't been a team effort. I know that it doesn't end well when I reach the finish line and collapse; that it's not a good way to finish a project, when there are ongoing requirements for support and maintenance. I know that arrogance and delusions of grandeur are a problem for me.

Anyway, this is how I've spent my weekend: worrying about work.

 

Tags:

 

Managing the Managers

4 min read

This is a story about work...

Devops

Building software is no longer about programming. Programming is something that I learned as a child. Programming is quite literally child's play to me. Modern software development involves very little programming. Modern software development is all about delivering massive projects, with massive teams, in massive organisations, and none of this has anything to do with programming. Remarkably little programming gets done by programmers.

I would be surprised if the average number of lines of code written by a programmer in a big organisation was more than a handful a day. In fact, I picked a colleague - a programmer - at random and looked at how many lines of code they've written in the past year - an average of 8 lines per day. That's not a lot of programming.

So what do programmers do all day if they're not writing code? Well, most of them are sitting around scratching their heads, wondering where the problem is in millions of lines of code that they didn't write.

Why are programmers looking at other people's code, trying to find the problems?

Good question.

There are people out there who write lots of code, but most of them are software architects and devops engineers: these are developers. Developers don't just write code though. Developers create systems. Developers know how all the different moving parts fit together to create an entire system. Developers can design, build and assemble the components of gigantic software projects, into working systems. Sure, some of it involves programming, but none of it requires writing programs. Programs are for children. Children write programs. Programming is child's play. Developing software systems is grown-up work, done by developers.

There's a general belief that a programmer is an interchangeable commodity. If you don't like one programmer, fire them and hire another one who "speaks" the same language. Of course, this is idiotic, because programmers in big organisations write 10 lines of code or fewer per day. Most of what is useful and valuable is the specific knowledge which relates to an organisation and its software systems, which only the experienced team members know. Throwing more programmers at a problem makes things worse, not better, because they don't have a clue about anything, except how to read code... millions and millions of lines of code which they didn't write. There's nothing worse than somebody else's code.

The diagram above shows how software is shipped these days. If we were back in the 1980s then the diagram would show copies of a diskette being made and physically distributed, so that people could install it onto their PCs themselves. How software goes from a programmer's computer to your computer is kinda important. How do you think it gets there? Well, there's a lot of magic behind the scenes. The diagram shows the magic trick, but it's so incomprehensibly complex that it remains as good as magic, even though I showed you how the magic trick is done. This is just one tiny part of being a developer: understanding how to actually get software onto people's laptops, tablets and smartphones.

There are a million things a developer knows. They know about the cloud. They know about databases and data. They know about servers. They know about security. They know about performance. All of these subjects are vast. There are experts in every one of those subjects, and there are myriad experts in the specifics of each field. There is an incomprehensibly mountainous amount that a developer needs to know.

So, managers, stuff your spreadsheets up your arse. You have no skills, experience or knowledge which is relevant or useful in the field of software development. You are allowed to exist because you are a shit umbrella, nothing more. You are doing your job if you stop anybody from annoying the developers and programmers, allowing them to do their jobs, and you are being insufferably irritating if you attempt to intervene in the business of software, because software is hard.

Yes, software is really really really hard. It's harder than Excel pivot table macros, or whatever the hardest thing you know is. It's waaaay harder than that, managers.

So, butt out.

Shut up.

Let us do our jobs.

Engineers left to their own devices will produce wonderful things. All the things we take for granted in the modern world are a result of engineers being left alone to get on with building cool shit. None of the wonderful things would have come into existence if the engineers were bothered by some know-noting busybody bloody managers, who tried to interfere.

 

Tags:

 

New iPhone is Underwhelming

4 min read

This is a story about obsolescence...

iPhone

I wasn't excited about the launch of the new iPhone, but I ended up getting one. My old iPhone 6 had served me well for years, but it was annoyingly short of free space, which meant continuously deleting stuff - a time consuming pointless exercise. The battery life was terrible, but I had managed to replace the battery quite inexpensively myself, so that wasn't an excuse for getting a new iPhone. The back was slightly scratched, but the screen was pretty good. The mute button no longer worked and the charging port was unreliable, only working at certain angles, which clinched the decision to upgrade.

I expected to be more pleased with the new iPhone.

But, I just put it in my pocket and carried on like it was no big deal.

Sure, the camera is better, the screen is better. Sure it's a bit more responsive; less laggy. However, there was virtually zero impact - no wow factor whatsoever.

When Apple introduced the fingerprint reader that was a big deal, because it saved having to type the unlock code every time, which is a vast improvement of usability. Given that I unlock my phone and do something with it 50 times a day, on average, you can imagine that it was a huge saving, not having to type my PIN all those times.

Since then, there hasn't been a 'killer' feature.

I'm not that bothered about having a better camera, because I have a good camera anyway with a much better lens and sensor than any smartphone could ever have. There simply isn't the room in a smartphone to include a large lens and sensor, so the image quality is always going to be very inferior to a proper camera.

Being able to unlock my phone with my face makes no difference to me versus being able to do it with my fingerprint. Face ID is not an improvement. Yes, biometric security is important to me, but I don't care whether it's fingerprint or facial recognition.

I don't play games on my phone or use anything which requires a powerful processor or lots of memory. I just browse the web, send and receive emails and messages, scroll through Facebook and Twitter, and access my banking apps. I could have stayed with my iPhone 6 and been perfectly OK, to be honest.

A friend who always gets the new iPhone, even when it's a minor upgrade, such as from the X to the XS, justifies his upgrades because of the frequency with which he uses his phone. This argument would also support my desire to upgrade too, given that I'm a heavy smartphone user and I have the disposable income, but it frankly depressed me that I spent the price of a reliable second-hand car on a gadget upgrade I really didn't need.

It's a year since I upgraded, and the screen on my iPhone XS is now scratched to pieces. Apparently the glass is very shatter resistant, but it's very prone to scratches. It's really disappointing to have bought a brand new cutting-edge gadget, and to find that it's not durable in everyday use situations. I have not abused my iPhone in any way. The scratches are all from simply being in my pocket, or on tabletops.

I haven't bought the new iPhone. I am not going to get the new new iPhone, because there's no way I can justify the expense for such a minor improvement.

It's kind of sad that I'll never re-experience that wonderful moment I got my first iPhone. That first iPhone was a real game-changer. That first iPhone was so transformative for human-computer interactions. I would be lost without having a smartphone and mobile internet available at all times. I - and so many others - have become dependent on the various communication apps, plus maps, taxis, banking and all the other things, which are so convenient to access through smartphones. My addiction to iPhone games was exhausted when I designed, built and released some for sale in the App Store, but I know that the impulse to check my various apps for notifications and new content is deeply engrained... perhaps an addiction, except it's one which does me no harm.

It must surely be time for a technology innovation which will inspire me again, like the original iPhone did.

 

Tags:

 

Team Player

4 min read

This is a story about leadership...

Design

As well as productivity - how much an individual produces - there is another contribution to a team which is harder to value. We have all suffered the micromanagers who are an annoyance and a distraction, slowing us down and stopping us from doing our jobs, but there are also people who do provide some useful function in a team, beyond their basic labour.

There are some people who aren't particularly interested in the big picture, and are very happy to go in the same direction as anybody with a big mouth and a certain overconfidence, who seems to have a vague idea of what direction everyone should be going. There are some people who are happier, more secure and more motivated if they're in a team with individuals who appear confident and knowledgeable. There is a great deal of value in having some authority figures in a team, to turn to in times of uncertainty in doubt, provided those people provide reasonable answers and can be trusted to be correct most of the time.

We might assume that there would be a power struggle, if two people tried to lead a team, but clearly this is untrue, because most of us have many masters. In a family, there are two parents, plus any other busybodies who decide to assert themselves, believing they have a valid opinion on the matter of childrearing. In most office situations, there are usually several people who have some degree of authority over us, who provide us with our objectives and otherwise place demands on our time. Generally speaking, we muddle along, even when we receive conflicting instructions from our higher authorities. Further, leaders will co-operate to achieve their goals - this is much more common than constant conflict, especially in organisations, where an argumentative person is not welcome.

I wrote yesterday about self doubt I had about whether I was suffering from delusions of grandeur, and I considered only my productive contribution as a builder - a labourer - as evidence that I'm a useful member of the big project I'm working on. Having given the matter further thought, I decided that there is also a lot of value in the role I play as a knowledgeable authority on a vast amount of subject matter. Although again it's anecdotal evidence, because it would be an insult to my colleagues to actually gather the hard data, I do seem to notice a reasonable footfall at my desk, of colleagues who are seeking my opinion or assistance.

Why do I fret about this stuff?

I thought a lot about why I'm so obsessed with my contribution to a massive project, and the answer is fairly straightforward: it's vindication. After many years where I felt sick and useless, that my skills, experience and abilities had rotted and withered, and that I was incapable of maintaining sustained and stable steady reliable productivity, my self-esteem was destroyed and I was full of self-doubt.

need this big achievement. I need this feather in my cap. I need to prove to myself and the world that I can pull off an impressive piece of work and that I'm still highly capable, competent and employable; that I'm worth the money; that I have value.

Whether it was homelessness, financial problems or mental health problems, I have felt very close to ruin and destruction for many years, and I started to believe that I truly was useless, and that I deserved to be ejected from society, to end up trampled in the gutter; kicked, spat on and tossed in the trash.

Having worked very hard for a long time on an extremely complicated project, and played a valuable role, this potentially vindicates my belief that I'm still a competent, capable and valuable person to have as part of a team, delivering gigantic software systems for huge organisations. I needed this proof that I don't deserve to be thrown into the dustbin, like a piece of human trash. I needed some concrete proof that those who wrote me off and left me for dead were wrong to do that.

That's why I work so hard and that's why it's important to me to believe that I'm making an exceptional contribution.

I absolutely do not want to rob my colleagues of their share of the glory or deny the value of their contribution. I completely recognise that it's been a huge team effort, and that I'm just one tiny cog in a big complicated machine. However, I do need to feel like I did something pretty damn good, for a guy who nearly died 2 years ago.

 

Tags:

 

Work Colleague Reads My Blog

7 min read

This is a story about being a team player...

Pokemon

A week ago I started writing, and by the time I had finished I was very angry - I had worked myself up into a rage. A close friend wrote to me immediately and said that I should reconsider what I wrote. Then, my work colleague who reads my blog replied to me. This was the moment I had been dreading: exposing myself as a lunatic to my colleagues. The mask had slipped.

My angry tirade was not directed at my workmates or management. My angry words were nothing to do with my workplace or the organisation I'm involved with, but sometimes I do write about the project I'm working on.

I suffer with imposter syndrome a great deal.

I feel very proud that I've made, what I feel is a significant contribution to a major project, but I'm also paranoid that I'm not that much of a big deal. I am, after all, just one member of a very big team. The project is costing hundreds of millions of pounds, and I'm just tinkering with one tiny part of it... and I'm just one tiny little insignificant speck. I need to curtail my delusions of grandeur, I think.

I attempt to use hard numbers to give myself some perspective: how many pieces of work have I played a significant role in delivering, versus my colleagues? How many technical obstacles have I managed to overcome? How many times have I unblocked team members and found solutions to problems? How many times have I saved the team from missing its deadlines?

Of course, I don't know the precise answers to all those questions, and to even gather the data seems to diminish the efforts of my team-mates. How arrogant of me to assume that I'm the driving force behind the success of the team I'm just one small part of. How grandiose. How awful.

I'm mindful that I don't even have the head honcho job title; the big cheese. If things screw up then I am comfortable in the knowledge that it wasn't my ultimate responsibility. There are colleagues who have the heavy burden of responsibility, which must surely slow them down and cause them to be hesitant, lest they tarnish their professional reputation. It's easy for me, mucking about doing whatever the hell I want, without a care in the world.

There is adequate evidence for my own success, productivity and achievements to go to my head, swelling my ego, without being completely delusional and unjustifiably arrogant. It would not be true to say that my contribution is ordinary; average.

My colleague has counselled me on a couple of occasions to not become obsessed with work and the project. I think that's great advice, and particularly meaningful and relevant to me, having burnt out and become sick due to overwork in the past. I know that I've got a completer-finisher personality, so I will definitely make it to the finishing line, but at great cost to my mental and physical health. I spend my evenings and weekends attempting to switch off, to have some work/life balance, but I struggle. My thoughts always gravitate back towards the project.

My thoughts often wander into the territory of wondering what my colleague thinks of me, particularly in regard to my arrogance and loathsome view that I'm some kind of hot-shot hero. I wonder how much I'm coming across as a terrible team player, entirely fixated on my own glory and somewhat denigrating the good work of my colleagues.

In reply to these doubts and worries, I have an anecdote which seems appropriate. I threw away part of the system, believing that it had been implemented in an unnecessarily complex manner. I was very pleased with myself for immensely simplifying the system, and the hard numbers were fantastic, in terms of performance improvement: a process which took several days was now running in 20 minutes. Then I started to think about the future, as the original system designers must have done, and I realised that what I had done would never work in a couple of years time: it was great for now - a huge improvement - but it was no good at all for the known future requirements. I started to think long and hard about how I would make the system support the anticipated future requirement, and I arrived back at where I had started, with a system which looked just like the original one I had thrown away. I had followed the same thinking and arrived at the same conclusion as my colleagues, and had perhaps wasted a lot of time and money making mistakes which I didn't need to make, because somebody had already thought everything through.

There is a huge temptation to believe that one could do a better job than those who have gone before, given that things often look easy and obvious to an outside observer. In my experience, once you do get the opportunity to try and improve things or implement your own ideas, then you discover all the many pitfalls which caused those who went before to have to compromise and kludge, leading to systems which look, to the outside observer, as though they could be easily improved.

It's almost an insult to my colleagues that I ripped up their work and started again with a blank piece of paper, except that's really not what happened. The new incarnation of the system is entirely based on the old one, driven by reverse-engineering. I didn't start from the original requirements and then attempt to build something brand new. I started from the requirement to make the system faster, easier to maintain and able to support new requirements, and I cherry-picked the bits that I liked - I whittled away all the 'noise' but kept the backbone. I kept the old system, but I got rid of all the layers of dust that it was caked in; I got rid of the rust and grime which had made it rather difficult to see the core functionality. It's the same system - I just stole the fundamental parts and put them into shiny new clothes. I hope my colleagues can see that their work lives on. I know that I would take it personally if I felt that something I was proud of was being thoughtlessly cast aside by a mindless vandal.

I don't know if my colleagues will ever forgive me for being such an arrogant sh1t. I don't know when my day of reckoning with reality will come, and I will come crashing down from my grandiose delusional state, and be forced to realise that I'm just a teeny tiny cog in a very big and complicated machine, and that my contribution is at best negligible. I don't know if I'll be able to avoid further insulting, diminishing and demeaning the work of my colleagues; upsetting them by suggesting that what I've done is good and what they'd done was somehow flawed or defective... insulting their legacy and insulting their hard work.

Perhaps I'm just not a team player.

 

Tags: