Skip to main content

I write every day about living with bipolar disorder, also known as manic depression. I've written and published more than 1.3 million words

twitter.com/ManicGrant

nick@manicgrant.com

facebook.com/manicgrant

 

Sprint and Coast

13 min read

This is a story about IT projects...

Bipolar Mood Chart

I'm sorry steady eddies, but if you want to get anywhere with a big complicated project, you're going to need somebody who's a little bit of a madman. There's this idea that building a piece of software is a bit like building an aeroplane. Plan the work, work the plan. The idea is that the software architects will come up with a brilliant design specification, and then programmers can just come along and build it. Wrong.

Firstly, you have to plug together all the bits of tech, and make them work with each other. From the front end to the back end, you have the "full stack" and it takes a special kind of masochist to declare themselves to be a "full stack" developer, because you're liable to be asked to change the buttons to a slightly different shade of green far more often than you're likely to be asked to make a working piece of software.

For me, I'll start with a database design - a schema. I will model the data. Most applications have a CRUD element: create, read, update and delete data. If you think about the classic example of a database that holds all the data on your customers, most of it will be performing CRUD operations to keep the data up to date.

Then the next thing is the data abstraction layer. How is your software going to store and retrieve the data from the database? Software talks one language, databases talk another. Interfacing between them is easiest when you use a bit of software that does the 'translation' for you.

Then you're going to need a bunch of business logic. Sure, you have all this data stored, but you're going to want to do something interesting with it. Maybe you want a piece of code that tells you who all the customers who you need to contact today are. That's a bit of business logic, and you wrap it up in a service.

Then you're going to need APIs. APIs are Application Programming Interfaces. APIs let one bit of software talk to another bit of software, which can be done over the Internet. You need an API so that your website running in your Internet browser, can talk to the server to call the services that get the data to display, and call the services that have the business logic in them. When you click a button on a website, a request goes off to another computer somewhere in the world, which is processed, and then the response comes back. The API describes how this can happen: it's a contract.

Once you've built your APIs, you can build the user interface. The user interface is the pretty bit you see when you download an app from the App Store, or when you visit a website. When you visit a website, the user interface is actually downloaded and it runs on your computer, in your Internet browser.

With a website, the user interface will be built in code that's very different to the code that runs elsewhere. Because web servers execute millions of requests, their code is highly optimised. Because your Internet browser needs to support millions of different websites, developed by millions of different developers, the code is designed to run on almost any computer.

Then, when you've written all this code, you need to set up your infrastructure. You need a server, you need to connect it to the Internet, you'll need to connect your domain name to your server, you'll need to configure the server with website hosting software and the database, you'll need to protect your server against hackers, you'll need to deploy your code onto your server. Then, people can visit your domain by typing www.yourdomain.com and the user interface code will be downloaded to their computer's Internet browser, and then the API on your server will be called to get the data it needs. Bingo! Your software is live.

Just getting a basic website running requires you to be:

  • A system administrator (a.k.a. "sysadmin") so you can configure the server
  • A security specialist (a.k.a. "pentester") so you can protect yourself from hackers
  • A networking specialist, so you can configure your domain name, load balancing, traffic routing
  • A database administrator (a.k.a. "DBA") so you can configure the database
  • A serverside developer (a.k.a. "backend dev") so you can write the service code
  • An API designer, so you can define the interface contract between backend and user interface
  • A web designer, so you can make the website look all pretty
  • A front-end developer (a.k.a. "UI dev") so you can write the scripts that control the user interface
  • A mobile developer so you can make an iPhone or Android app that does what the website does
  • A QA engineer (a.k.a. "tester") so you can make sure the damn software works
  • A release manager, so you can package up your software and deploy it
  • An operational support engineer, so you can diagnose and fix problems when they occur

That's 12 different roles, or "hats" that you have to wear. Also, bear in mind that all your users care about is what colour the buttons are.

If you're a "full stack" developer, you're highly in demand, because you can take a piece of software from an idea, to something that actually works and can be used by people anywhere in the world, via the gift of the Internet.

Do you notice that none of those roles are "programmer". There is no such job as programmer anymore.

Back in the 1970s, you used to ring IBM up and they would wheel a dirty great big cabinet into your basement, and then a zillion wires would connect every "dumb" terminal in the building to it. The dumb terminals would just display on their screens what the mainframe would tell them. Essentially, it was just one computer that had hundreds of monitors, and hundreds of keyboards.

Programmers in the 1980s had everything they needed all in one box. User interfaces were just green text on a black screen. There weren't buttons to click on, that could be different colours, so nobody had to waste their time changing the colour of the buttons. There weren't pretty graphics for people to argue over. There was just green text on a black screen.

Because everything was on one box, everything was the same computer code. The data and the code and the different parts of the system were seamlessly interconnected. There wasn't computer code flying around over the Internet, being executed in billions of different Internet browsers all around the world. There was just one blob of code, running on one computer, with hundreds of users. That was programming: writing programs to run on one computer, not billions.

Programming's not even that hard: if this, then that. That's about the gist of it. If you know what the words AND, OR and NOT mean, you're well on your way to being a programmer. If you can write a list of instructions for another person to follow... that's how you become a good programmer. You just get really good at righting really good instructions for a really stupid person to follow.

IF you see some gold THEN go and pick up the gold

Looks pretty easy, right? Well, then you find that your program doesn't work very well when the gold is on the other side of a Plexiglas window. The automatons following your instructions are going to get stuck on the "go" part, and will find themselves just walking on the spot, with their nose pressed against the glass, trying to get to the gold that they can see.

Fast forward to the present day, and you might have the situation where your website looks absolutely awful because granny is still using Internet Explorer, but you only tested your code in Google Chrome. We have the situation where your website works perfectly fine when one person is using it at a time, but when millions of visitors are trying to access it at the same time, they're all treading on each other's feet and the whole thing falls in a heap.

A lot of techies want to be programmers, but programming is such a tiny part of anybody's job. If you hire a bunch of programmers, and they all insist that they only want to do programming, you're never going to have a website.

If you hire a bunch of web designers to build you a website, you'll have a very pretty looking thing, but it won't work very well. It'll be fake. It'll be window dressing. It'll be a film set, where the buildings don't actually have anything behind them: they're flat fronts, propped up from behind.

Film Set

If you hire a bunch of back-end developers to build you an application, you'll have a beautiful set of services and APIs, but you won't have anybody to tell to change the colour of the buttons. If you tell the serverside developers how important it is that the button colour gets changed for the millionth time, they'll just say "yeah, yeah, yeah... I'm writing down on my invisible TODO list".

So, you hire a full-stack developer, because they can do everything. Trouble is, they're all a bit mental.

If you can do everything all on your own - you can wear 12 different hats and context-switch between them - then you're going to be driven mad if you have to work for somebody else.

Even though I can do everything, it's not like I should do everything. It's not healthy, to have constant interruptions, and to be pulled from one thing to another all the time. In fact, it's distinctly unhealthy.

The only way that a full-stack developer can make any progress is to work really, really quickly.

If you throw together a fully working application in the blink of an eye, you can get it done before anybody asks you to change the colour of the damn buttons. These herculean efforts are incredibly draining. Holding so many different competing tasks, and also the big picture, in your head, while working as fast as you can... that's exhausting.

Most software ends up in the bin anyway, so you might as well throw together these hastily built applications, that at least prove that things can be done, technically. There's already too much useless vapourware crap out there that doesn't actually do what it purports to be able to.

And so, I end up working on project after project that's clearly going wrong. I hastily cobble something together. I get something working end-to-end. Then, I'm burnt out and I have to take the money I've earned and go have a lie down in a darkened room.

I actually don't think software can be built without some nutter who's actually going to fill in all the blanks and prove out the concepts. Every important computer system that I've ever worked on has had one madman who's single-mindedly taken the project to the point of MVP - Minimum Viable Product.

It's unhealthy for your moods, to be expected to sprint as fast as you can, and then reap the rewards but be burnt out, but it's certainly lucrative and a good career strategy. The financial incentives can't be ignored. Also, if you're a complete-finisher personality type, it's the only way you're ever going to see a successful IT project, because so many people are happy to bumble along until the project eventually goes so far over budget and has spectacularly missed its deadlines, that it gets cancelled.

My current project - which is getting cancelled because it's over budget and late - has been slightly better for me than other projects have been in the past, because I just concentrated on making sure my team was on time and on budget, instead of thinking about the overall project. Net result, I'm out of a job again, but at least I've got a happy customer and a good reference, plus I'm not totally burnt out. It's a damnsight easier to only think about my 1/8th of the project, rather than feel responsible for the whole thing.

God knows how I'm going to reconcile my personality - a completer-finisher - with IT's staggeringly bad track record of ever successfully delivering projects on time and on budget. My health is suffering as I've tried to single-handedly get projects back on track, and I never get any thanks when I do that. I'm not saying I'm a hero. I'm just saying that I don't like to bumble along and fail.

Although I can do full-stack development, I don't think I should because it's just too much stress, being spread across 12 different roles. I reckon I'm going to look for some kind of development manager job, where I can have more management input into the way things are run.

It'd be interesting to know what my mental health would be like without the kind of external pressure to rush, rush, rush. It'd be nice to work on a project where I could take my time, take pride in my work, do the things I'm good at. Do those projects even exist?

I think it's the engineer's curse. "Can you do this?" is always answered honestly. Yes, I can probably fix your damn car, but should I really be doing that if my skill is as a software developer? "Yes I could, but I'm not sure I should" is the correct answer, but engineers aim to please. So few managers understand that it's a dumb idea to ask their capable engineers to do everything and anything, and expect them to spread themselves so thinly.

Even though management doesn't agree with me - too frustrating and boring - at least it gives me the opportunity to throw a bubble around my development team and protect them from bad managers. At least I can create the kind of culture that I'd like to have, as a developer, for my team.

It's hard to know how to balance your skills, your needs, your values, and the fact that life's a lot easier if you're paid a lot of cold hard cash.

Anyway, it's all rather academic until I've dug myself out of the debt hole.

 

Tags:

 

Take This Tablet 3 Times a Day

10 min read

This is a story about prescriptions...

Tablets

Are you underemployed? Are you unchallenged? Are you jaded? Are you disillusioned? Is your existence meaningless? Are you lacking purpose, goal? Are your ambitions, creativity, ingenuity and resourcefulness being thwarted? Are the prime years of your life draining away, washed into the gutter?

I want to write 3 times a day, at least.

need to write 3 times a day.

I get to work, nearly an hour late. I have a quick 10-minute call with my team. Then, I have nothing to do until lunchtime. If anything is going wrong I try and fix it, but my whole job is to try and steer the ship strategically so we don't ever get into trouble. I'd love it if a big crisis kicked off, but I've managed things effectively, so everything runs itself with little drama. Sensible, but boring.

So, I need to write something in the morning to get me through to my mid-day break.

I take a 2-hour lunch. I get away from my desk and go and read a book somewhere. Sometimes I sit in the park. Sometimes I sit by the river. I'm only supposed to take an hour for lunch, but who's going to question it when my team are so far ahead of the project deadlines and the client is happy?

Then, I need to write something in the afternoon to get me through to home time.

I stay on top of any queries. I'm watching like a hawk in case there's anything I need to deal with. One strategy that I've employed in the past is to let things build up and build up until there's an artificial crisis that I've created, and then I deal with the backlog in a flurry of activity. Through this strategy of putting things off I made a depressing discovery: most 'work' is unnecessary and can be forgotten about. Nobody's going to die if the crap that I do doesn't get done.

When I get home, I have pent-up frustration that I haven't been productive. My energy and enthusiasm for completing tangible tasks with meaningful output, has been completely unmet during office hours.

Sometimes I draw. Sometimes I make music. Sometimes I make a video.

What I really want to be doing is writing. There's nothing nicer than relaxing on my sofa with my laptop, brain-dumping. I have so much to say, and there's so little time. Words come flooding out of me. There's no shortage of things I want to write about. Researching what I want to write about means that there is even more to write about. Research sets off a chain reaction. The number of topics that I'm passionately interested in grows exponentially.

When I get home, I take off my suit and hang it up. I put on my civilian clothes. I relax, but I'm still not quite in a relaxed mood. It's not like I want to go out for a run, or to go out drinking or dancing. I'm not quite able to shake off the shackles of the rat race, despite the fact that the last thing I would ever think about doing is flipping open my work laptop or giving my project a moment's further thought.

My thoughts revolve torturously around "how am I going to get up and do it all over again tomorrow?".

Drawing, music composition, video editing... these things require a considerable amount of effort. Writing is something I'm compelled to do. Freedom of expression is important, and I've allowed myself to be completely free to write, when time allows. I do not self-censor. The only people whose identity I'm careful to protect are my friends. The only people whose feelings I consider are those who care whether I live & breathe. It's remarkably liberating, not caring if some mean judgemental family member takes offence. It's terrifying thinking that every word I write could make me unemployable, but so exhilarating to thumb your nose at a job you have total contempt for.

A simplistic analysis might conclude that I have transferred my 'addictive personality' to writing, but doesn't our society applaud the workaholic? The serial entrepreneur who puts him or herself through enormous stress is lauded as a captain of industry, an engine for growth, a valued member of the economic community. Whatever I do, I'm unlikely to approach it half-heartedly. If I'm going to work a job and make money, I'm going to work as hard as I can, and make as much money as possible. If I write, I'm going to write until my fingers bleed and I have to be prised away from the keyboard.

Society applauds my bipolarity. Not so much the depression, but the fact that I can achieve 'overnight success' during my hypomania means that I have no shortage of achievements in my portfolio. My shrewd opportunism means that cash windfalls have always carried me through the inevitable crash in my mood.

In fact, the whole working world is structured to celebrate the person who does the heroic big push to meet the deadlines. The steady eddies who just quietly get on with their work, have nothing remarkable to help them to stand out from the crowd. Even the idea of working at the level of intensity that we do in academia and employment, is destabilising. Cramming for exams, dealing with unrealistic workloads, and then collapsing during the holidays, barely recovering before the next painful bout of work or study. Who cares if your nerves are frazzled, as long as you're getting the "A" grades, right?

The project I'm working on is being cancelled, because it's failing. My team is way ahead of the deadline and our part is the big success of the project, but the other 7 teams have failed. It's a big mess. An expensive white elephant. A big embarrassment for the consultancy and the end client.

My attitude has been completely different to the projects I have worked on in the past. Normally, I don't care what my official role & responsibilities are. Normally, I go and find the biggest fire and try to help put that out.

I decided to adopt the attitude of focussing only on my responsibilities. I decided that I would concentrate on the job that I'd been originally been asked to do. I didn't go looking for trouble. I didn't tread on anybody's toes.

The net result is that I have happy bosses who are overjoyed with my work and I'm getting a good reference, but the overall project is a failure. Whether or not I would have been able to make a contribution to the success of the wider project is debatable, but I do have a track record of helping to turn around late or failing projects. I've made a habit of running into the burning building when all others are fleeing for their lives.

It's so bizarre and surreal that I've spent 4 months keeping a low profile, writing, doing as little as possible, and I'm far more appreciated than when I was working 14 hours a day, 6 days a week.

I used to get rung up routinely every weekend, to run conference bridges and orchestrate things on the failing project I worked on before this one. When shit was hitting the fan, I was there rolling up my sleeves and at least trying to be a calm head, even though I obviously claim no credit for the hard work of my colleagues.

That previous project ended with me finding out my security pass and access to email had suddenly been revoked and I was persona non grata with the senior management team who had previously been begging me for my help.

This current project is finishing with the work that my team have produced being lauded as some kind of 'jewel in the crown'. I'm being hailed as some kind of amazing manager, when in truth all I've done is sit unobtrusively in the corner of the office and write my blog.

I'm certainly one of the highest paid writers that you're ever likely to meet, but yet I was hired to run a software project, not to write.

For all those people who say "art is just a hobby" you're wrong. I spend the bulk of my time and effort writing, and being an IT consultant running a software project has been a little side project for me.

People walk up to my desk to ask me a question, and I quickly minimise what I'm doing. I then give the first answer that pops into my head. My whole body language seems to suggest that I'm very busy and my time is precious, so there isn't really a culture of lengthy discussions and debate in my team. It might sound horribly autocratic, but it certainly seems to get the software built and my team report a high level of job satisfaction. There is actually a great level of teamwork and mutual support in my team. The language we use with each other is very positive and complementary. We spend time applauding each other's efforts and celebrating our achievements.

So, I'm torn. Clearly I'm doing something right. It just feels so wrong.

Imposter syndrome means doubting your skills and abilities. I feel like a double imposter, because not only do people tell me I'm doing a good job, but I know that I spend most of my time writing my blog.

Things are coming to a head even more in my final week. My team are pulling together pieces of work that I asked them to do as part of a strategic plan, and it's working. In the final analysis we will finish up with a piece of software that's amazing quality and yet neatly packaged up to be thrown in the garbage. My team will all go off to new projects, knowing how to follow industry best practices and having seen them successfully implemented.

So many things in software get hopelessly botched: Agile project management, test-driven development, code quality, technical debt, continuous integration, release management, production stability, automated regression testing and intuitive user interfaces. Even for me, it's felt like a dream to see that some of these things can be achieved in a corporate environment.

My usual attitude of agreeing with bosses - "yeah yeah yeah" - and then just doing things the way I was going to do them anyway is unchanged. The only difference this time is that I've used my spare capacity to work on a personal project - this blog - instead of trying to think about the wider project.

It's quite exhausting - faking it, looking busy, watching out for anybody who might look over my shoulder - while also attempting to alleviate the boredom and fight the uncomfortable feeling of knowing that you're being unproductive, wasting time.

On the face of it, it looks like a good prescription for stability, financial success. I've turned up to work every day. I got paid every week. What more could you want?

However, how sustainable is it really, to live such a lie?

 

Tags:

 

Micromanagement

8 min read

This is a story about getting promoted at work...

White collar worker

I can wear pretty much whatever I want to work. Some of us techies wear jeans and t-shirts. Some people wear fashionable trousers and tops. I wear a white collar. It sends a message: I'm an idle manager, and I'm not going to roll up my sleeves and get myself dirty.

How do you get a promotion once you have become skilled at your trade? Once you have mastered your chosen profession, how do you keep growing in your career?

A handful of software engineers, programmers, web designers, hackers and people who are generally skilled in the dark arts of making computers do magical things, will have the good fortune of being promoted into management positions. It is not a logical progression.

One of my friends who is a startup founder talked about how "lucky" his engineers were to receive a good salary for their job. He talked about the wages that he pays as if it were an act of charity, and his employees were fortunate to be able to write code and get paid.

I can only imagine that people who shuffle paper around their desks and sit in tedious meetings all day long, are jealous of the people who actually get to make stuff. I can certainly vouch for my frustrations at being away from the coal face. I'm so bored, with nothing to do but 'manage' a team. Management is horrible.

I'm in an interesting position to be able to compare myself with my peers. On my current project, there are 8 teams who are working together to deliver the final end product. This means that I have 7 other managers, all of whom started work at a similar time to me, to directly compare myself with.

Myself and the other 7 managers deliver our work in 2 week chunks, with a demonstration to the customer at the end of it. We demonstrate the work that we have completed in the preceding fortnight. The customer then either accepts that the work is up to the expected standard, or rejects anything that they are unhappy with. Also, it's quite possible that not as much work as was expected was delivered. Failing to meet your delivery commitment, and missing the deadline, is something that is very common on IT projects.

I've worked on the project for about 14 weeks: 7 two-week chunks. The team that I manage has delivered on their commitments for 7 fortnights in a row, and the customer is very happy with everything we've done.

The other 7 teams have consistently missed their deadlines and have a number of things that they have demonstrated that have not met the customer's expectations.

So, what's the magic trick? What's the secret behind good management? I must be managing the hell out of the members of my team, right?

Wrong.

I've been developing software for the best part of 20 years, and my biggest problem is with micromanagers. Managers are so keen to be seen as adding some value, that they can't help themselves from getting involved with things that they're absolutely clueless about.

IT projects used to be run by project managers. A project manager is a jerk with a clipboard who's attended a week-long training course in PRINCE2 (Projects in Controlled Environments) and has then gone tear-assing around town, botching every project they've ever laid their hands on. Project managers are a pointless waste of space.

So, along came a practice called Agile software development. From Agile came the idea of a Scrum Master. A Scrum Master is supposed to be one of the developers, who knows the Agile methodology and can help to organise the team. Scrum Master is not as job... it's a role that one of your existing development team has.

Unfortunately, that left a load of useless project managers on the scrapheap.

All the project managers then paid to go on a week-long training course to become Certified Scrum Masters. They then returned to the same companies where they had been screwing up the IT projects before, and demanded that the projects hire them as "Scrum Managers" to do full-time "Scrum Management". They then went about doing everything they'd always done, just the way they did it before, and making a balls up of every IT project.

I'm a bit different. I crossed out the words "Development Manager", "Architect" and "Software Developer" from my CV and resubmitted it to an employment agency with the words "Scrum Master" substituted. I then had the shortest, easiest interview of my life, and was immediately hired to be a 'Scrum Manager'.

Since then, I cancelled every meeting that my team were expected to attend, banned anybody from approaching my team members directly, and then left them alone. I left my team all alone for 14 weeks. I don't hassle them. I don't try to 'add value'. I don't try to get involved. I just let them get on with things.

So, am I slacking? Well, if my team escalate an issue to me, I work to try and get it resolved, but otherwise I leave them alone. If my team need something they don't have, I try to find it for them. I try to think about what they're going to need in future, and make sure it's ready before they need it. Other than that, yes, I suppose I AM slacking.

If somebody said to me "Nick, I need you to justify your job. Show me what work you've done" then I would find it very difficult to actually point to something more tangible than saying management-speak bullshit like "I've facilitated the productivity of my team".

Results speak loudest though, and I know I'm never going to get a grilling from my bosses, because my team are happy, productive, and they keep hitting their deadlines with high quality software that the customer is prepared to pay for.

It's incredibly boring and incredibly frustrating, sitting on my hands. My team show me stuff, and my natural instinct is to try and think of something that could be improved. My natural instinct is to understand precisely what each team member is doing, and why. My natural instinct is to try and tell people what they should be doing, how and why. I have to fight all these instincts.

Sometimes, my team will come to me because they want a decision. My natural instinct is to have a discussion. My natural instinct is to understand all the pros and cons and debate them. I don't do this. I just make a decision and then everybody gets on with it. I might make the wrong decision, but as long as I'm right more than I'm wrong, then we're winning.

And we're most definitely winning.

The other 7 teams are unhappy places to be. There is a huge problem with staff turnover in the other 7 teams. Lots and lots of people are taking time off sick in all the other teams, except ours. My little team seems to be a happy oasis of calm in a sea of stress and accusations of blame.

Just about the only thing I do with my day is to spend 10 minutes complimenting each team member on the work that they've done and thanking them for their contribution. I spend a bit of time apologising for any frustrations there might be for things not going perfectly, and a bit more time reassuring everybody that I am listening and trying to improve things. Other than that, I leave everybody alone.

Every two weeks, the team get to show off what they've done, and every two weeks they have a big push and manage to get everything done to a high standard and give an impressive demonstration of their work to our customer. My only job is to be there to shut the customer down if they start asking why this or that hasn't been done, when we never said it would be.

We don't underpromise and overdeliver. We make a realistic commitment for the work we're going to undertake, in agreement with both the customer and the team, and then we get on and build it. Then we demonstrate that we did what we said we were going to do. Nothing more. Nothing less.

What's the role of management in all this? I haven't really figured it out. I feel terrible. I feel like a fraud. I feel like I'm getting paid money for doing nothing.

But doing nothing seems to get software built.

Nobody likes to be micromanaged. Nobody likes having somebody breathing down their neck. Nobody likes to feel they're not respected enough to be allowed to get on with their job. No professional is going to thank you for trying to interfere with their field of expertise. Nobody wants to have to explain their shit to a goddam manager.

Software should be like a delightful magic trick.

It's a recipe for success that's working brilliantly well with my team, as proven by the numbers and the direct comparison with my peers: the other 7 teams, who are under-performing and unhappy.

However... I'm not happy. I'm bored.

 

Tags:

 

Unified Identity

13 min read

This is a story about living a double life...

Blended Man

I don't know if you know this, but I've been working again these past 3+ months. I've been putting on my suit and going to the office and pretending like everything's just peachy. When I put on my professional clothes, I also put on a mask. "Hi! How are you? How was your weekend?" I cheerily ask my colleagues on Monday morning, instead of saying "this place makes me want to kill myself".

I like my colleagues and I like the project I'm working on. There's nothing especially objectionable about the company I'm working for. Every large multinational corporation has skeletons in its closet, and my current end client is no exception. But, I don't have a deep-seated concern that I'm propping up some too big to fail organisation, like I did at HSBC. The global project I'm working on is the number one IT project for a FTSE 250 company. It's a good project and it should be enjoyable.

When I was looking for work I was feeling pretty insecure. I had a run of short contracts that didn't end particularly well. Every job I took, I was inadequately enabled to make a difference. In every role, I was frustrated that I had very little decision making power. I was frustrated that my bosses weren't listening, and instead my Cassandra-esque prophecies came true while I was helplessly kicked to the sidelines.

So, I swapped from a purely hands-on technical role into a managerial one. I knew that I'd be able to ace the interview, and that it's virtually impossible to get sacked from a managerial job just so long as you keep your head down and do a reasonable job of organising your team.

I made a calculated gamble. I knew that I find purely managerial work totally soul-destroying, but also that I've made a reasonable job of running the projects and teams I've been given in the past. I knew that the interview process would be a lot less painful than the current crap that you have to do to get a developer job these days.

And so, I joined a failing project with a programme director on his last legs. Things were just as desperate as they were at HSBC, with total numpties in management whipping people to go faster and faster while the deadlines loomed ever larger, and it became clear that the software was going to be delivered late, and the performance and stability were going to be crap.

The project had - and still has - a huge staff turnover problem. People leave after just a few weeks because the atmosphere is so toxic. Almost every member of the original project team has left. Other IT contractors had warned me to actually stay away from this project. However, the job was offered with a fairly immediate start, and I could get my invoices paid weekly. It dug me out of a financial hole very quickly. It totally made sense to just shut up and put up with it for a little while. That was 3 months ago.

Now, a new management team have been installed. The old programme director got the boot, and we moved from totally crazy deadlines to a properly Agile project. In terms of the task ahead, things looked a lot more hopeful, but I still get shouted at by the grumpy customer every day, literally.

I have no idea if there are any happy projects in IT.

With my team, I throw a protective bubble around them, set them realistic deadlines, and shower them with praise for their hard work. My team have delivered all the work that they committed to doing for 12 weeks in a row now. My team is the most successful team on the project. I've had no problems with sickness and staff turnover in my team. Everybody who works for me is pretty much happy to come to work, and fulfilled in their role... apart from me.

I sit at my desk, and I'm bored.

It's actually quite easy to manage a high performing team. I've set them up to succeed, and my team members relish the opportunity to do a good job. People don't need micromanaging.

For sure, most of my job is pointing out where corners have been cut, or things that developers don't really like doing haven't been done. The code is never the problem. Instead, development is about giving everybody enough time to think about all the things that aren't code. Being a good developer isn't about being a good programmer. Good programmers are not necessarily good developers. Good programming means that something is logically correct. Good developing means that I have high quality features in an application that I can actually use in a meaningful way.

I should be able to have a lot of pride in my work, but instead I'm frustrated that I'm running just one of 8 scrum teams, and that any attempt to help the wider project would see me treading on toes and getting into trouble again, like I did at HSBC. In the interests of my own job security, and that precious cash that replenishes my damaged bank balance, I'm not rocking the boat. I sit there, quiet and miserable, while the whole project goes down the shitter.

My team is a diamond in the rough. It's not that my colleagues are necessarily doing things badly. There are historical reasons why everything is fucked. I'm sitting pretty with a happy motivated team who consistently hit their targets and deliver high quality software. I'm the golden boy, with the customer very pleased with the work we've done.

The difference between this contract and my last one, is that I'm listened to. I sat down with the new programme director and told him I was deeply unhappy that the project deadlines were so unrealistic, and that our end-client was so unreasonable in their expectations. He listened, and he even took the time on Friday to tell me that he's grasped the nettle and told the bad news to the customer. My previous boss would never have done that. I actually risked my job a couple of months ago by telling the customer that there was no way in hell they were going to get everything they wanted by Christmas. Although I got in trouble with my boss, I also impressed the client, so when shit went bad they got rid of him and kept me.

However, the pace of change is awful. It's taken forever to put a decent set of managers in place who have enough of a backbone to stand up to our stroppy customer. It's taking forever to change the toxic environment of the project.

The whole time at work, I'm bored. I can't bury myself in work. I can't roll up my sleeves and fight the biggest fire. Nobody would thank me for wading in, where others are struggling. Things are so siloed. I couldn't get involved without treading on toes. So, instead, I sit quietly, letting my team members get on with doing a good job. "I'm alright, Jack" is not my style. It's totally unlike me to just think about my own role and responsibilities, and try to ignore the bigger picture.

It's killing me, working like this.

I'm damned if I do, and I'm damned if I don't. If I had a regular developer job, I'd be frustrated that the team wasn't being run the way I like to do things. If I had a programme director job, I'd be frustrated that I couldn't help to manage individual teams. I want to be all things to everybody. I want to be in all places at all times.

It's frustrating that I can't just bury my head in code, and entertain myself learning new technology skills. It's frustrating that my hands-on skills are getting rusty, as I sit around doing manager stuff, which is mostly just being the punchbag for the grumpy customer at the moment.

Sit back and think of the money, right?

Well, yes, to a point. But the working day goes so slowly, that by the time I get to the weekend I'm filled with pent-up frustration that I haven't gotten to work on anything meaningful. I have almost zero chance of doing anything creative during the week, except for the odd blog post. Even writing short stories at my desk is hard, because there are enough interruptions to ruin my flow. I could try to learn some new technical skill, but it's so hard to do when you can't sit down and concentrate for a block of time.

My life seems remarkably easy on the face of it. Put on a freshly laundered shirt and dry cleaned suit. Put on my polished shoes. Grab my laptop bag and head for the tube. Rock up at the office. Have breakfast at my desk. Count down the hours until lunchtime. Go sit by the river and eat a sandwich. Count down the hours until I go home. Collect my cheque at the end of the week. However, it doesn't feel like a week. Every week feels like a year. A year of pain and boredom.

Yes, I'm probably sick. I seem to be suffering from persistent anhedonia. I get no satisfaction or enjoyment from anything. I have no energy or enthusiasm to do anything. I just write and I drink, and I wait for the next time I've gotta go to work. Day after day, week after week.

I'm grinding out the hours, in the hope that things will get a little easier every day, but they don't. Every day I'm questioning what the hell I'm doing, and then like stretched elastic, I snap. Every day when I get home, all the suppressed parts of my personality come rushing out in a complex tangle of mixed emotions, which I try to deal with by writing.

People at work have little idea that I'm dealing with depression and suicidal thoughts every day. People at work have no idea just how much I hate my day job, and how much it's destroying my soul and sense of wellbeing.

It makes no sense to an outside observer, because what they see is a capable member of the project who comes to work and manages to get the best out of the team. On the face of it, I'm succeeding: I'm well paid and I'm doing a good job. My bosses are happy. My team members tell me they're pleased to be working with me. I've managed to shield the developers and testers who work for me from the toxic atmosphere that's pervasive throughout the project. I've managed to wear my mask so well, that I doubt anybody at work suspects just how desperate I am, inside.

Maybe things will change. Maybe they won't.

I've been waiting for my depression to lift for so long now. I've been waiting for things to get better at work for months, and they haven't, although there is always hope on the horizon. I literally live in hope.

But you know what? It's exhausting, leading this double life. It's so exhausting, telling your team great job, and being sunny and upbeat about everything, rather than letting the whole toxic atmosphere and hopeless deadlines cause a morale problem for the developers and testers who I manage. "Take one for the team" is literally what I'm trying to do. That's literally my role: to be a human shield to protect my team from the stroppy customer.

It's also exhausting leading a double life where you're so depressed you can barely function, but you need to put on the corporate mask of being the reliable high-powered decision maker. I need to turn up and be consistent every day. The whole reason why I command a good daily rate is that I don't take time off sick or bring my problems to work. I'm not allowed to have an off day. That's the point of using contractors: they'll drag themselves into the office even when they're desperately sick.

If I was my doctor, I'd say stop, what are you doing? Give yourself a break. You can't continue like this. This job is making you unwell. However, how can I do that when I need to get a stack of savings in the bank so I can afford to have a nervous breakdown.

I've been bumping along at rock bottom for as long as I can remember. I never recover, because I'm always trapped in a corner. I'm forced back into work too early, and I'm forced to work stressful shitty full-time jobs, because I need to dig myself out of a hole. It's a Catch 22.

It's quite possible that if I can stick things out for a couple more months, my fortunes will change. Things won't look so bleak when I'm no longer working to simply keep a roof over my head and service debts. I'm going as fast as I can, and yet it's somehow still not fast enough. I'm trying as hard as I can, and yet it's somehow still not good enough.

Sure, my bosses are pleased. Sure, my team members would tell you that I'm doing a great job. But it doesn't feel sustainable. I'm living too much of a lie. It's too much of a compromise on my identity and sense of wellbeing. It's too demanding, having to wear a mask all the time.

I'm bloody good at it: hiding my problems. That's really what this whole blog is about. I've spent so many years covering up my problems and maintaining a blemish-free CV, and making sure that I always get a good employment reference, that it was inevitable that I would one day decide to burn it all down. You just can't live a lie forever.

It's not like I'm hiding a drug habit or alcoholism. It's not like I actually have anything active in my life that I need to keep secret, unless you count having to appear like some kind of perfect corporate specimen of a man, who never gets sick and never has any personal problems.

Would it really help, going to my bosses and coming clean about my low mood, boredom, depression, suicidal thoughts? Of course not. Nobody wants to have to treat somebody with kid gloves. Fit in or fuck off is the mantra of corporate life.

Fit in or fuck off. It's fucking me up, living this double life, just to be able to fit in.

 

Tags:

 

Advent Calendar (Day Eighteen)

30 min read

This is a story about running out of ideas...

Let there be light

That's a light box. It's supposed to be a way of treating Seasonal Affective Disorder (SAD). It's the final thing I thought I could try, as a natural remedy for depression. The regimen that I have followed for 6 months is:

  • Varied diet, including plenty of fruit & veg
  • Sleep hygiene: strict bedtime and getting up after 7 or 8 hours, even on weekends
  • No caffeine
  • No alcohol (actually only 3 months)
  • No medication
  • No drugs
  • No legal highs
  • Amino acids
  • Vitamins
  • Minerals
  • Exercise
  • Making new friends
  • Trying to have a stable place to live
  • Trying to have a job
  • Reconnecting with old friends
  • Getting some professional help (only had a whole week in hospital)
  • Being disciplined and self controlled
  • Wearing blue-light filtering glasses after 4pm (for the last few months)
  • Using the light box for at least an hour every morning (for the last month)

Guess what happened? My mood was able to react to things, and I reacted to my mood. There was no stability. In fact there was no coping mechanism. Everything I used to do to regulate my mood was removed, so I did other things that were detrimental to my overall wellbeing.

Being hung over or drunk at work is quite good if you hate your job and think that the management are idiots. Because I was sober, I told the HSBC management team that their project didn't stand a chance in hell of being delivered, because it was being run by people who are terrible at Agile Project Management, and seem to be completely lacking any relevant software development experience. I said I didn't want to be any part of it unless some big changes were made. I said I wasn't comfortable doing the wrong thing.

Being hopped up on coffee is good if you want to rescue a project. I recoded Barclays entire Corporate Pingit system, in 30 hours, with no sleep. I kept the existing public API, but everything else was thrown away. Instead of spaghetti code, full of copy & paste, and buggy as hell, poor error handling, poor logging - unsupportable - I just rewrote nice clean code. Lots of coffee, 30 hour hackathon, all the bugs solved, code reduced by 80%, production grade error handling and logging. The team leader felt important because the old system barely worked, so he spent a lot of time understanding the spaghetti. There wasn't really anything for either me or him to do after I wrote a decent system. My boss was happy, the team leader wasn't, I got my contract terminated, Barclays customers were happy, I was happy that I'd delivered the software that meant I no longer had any work to do.

Corporate software is boring. The projects I'm asked to do are child's play. 48 million customer's metadata? That's only 48 terabytes, if we store a megabyte per customer. A low res scan of their passport and maybe a utility bill, plus a few thousand characters for their name, address, phone number etc. etc. At JPMorgan we stored about 3 petabytes of document scans. That's about the same amount of data in the entire Library of Congress.

AI, games, simulation, data analysis, physics & cosmology modelling, codebreaking... those are the hard problems. I remember I wrote a program that calculated every single possible checkmate. Then I wrote a program that found all the moves that led to those positions. It ran out of memory before it got back to the early moves. Then I wrote a program that could take the position of the pieces on the board, and find the moves to checkmate, where there is no opportunity for your opponent to win. Most of the time the program couldn't find a path where the opponent had no chance. In theory, with enough processing power and storage space, chess could be solved by a program. However there are 10 to the power 80 (10 + 80 zeros) atoms in the universe, and there are 10 to the power 123 (10 + 123 zeros) moves in the chess game tree. We should probably concentrate on modelling the cosmos at subatomic scale before wasting our time on a silly game.

So, that's my quandary. I'm not very challenged or interested by anything in the corporate world, and my solution of just being drunk all the time can't have been doing my liver much good. However, without alcohol/benzodiazepines I think too much, and without caffeine/bupropion/stimulants, I can't get motivated to keep solving the same easy problems that don't even need solving.

In fact, when I think about it, I must have made a lot of people redundant. I've automated a lot of stuff that people used to be employed to do. I've made corporations very rich, by allowing them to lay off loads of their workforce, but increase their productivity and profitability. My main specialism is Straight Through Processing (STP). I know how to get $1.16qn processed with just a few programmers, database administrators, infrastructure engineers, network specialists and system administrators. You don't need project managers, because they just put the lies you tell them into a spreadsheet and tell everybody that everything is going really well. You don't need testers, because good programmers write good automation tests, and they don't write bugs. There's no difficult logic or calculations in a corporate system. I do get spooked out when my code works first time, but it's quicker to do it that way.

Human workflow and user experience. Here's a better use of your time and money. Fill out paper forms and then set fire to them. Nobody gives a shit about having to go through your life story just to become a customer or get a government service. If I want broadband, just send somebody to install it and set up a direct debit. If I want to rent a flat, I'm going to pay you 6 weeks deposit plus a month's rent in advance, plus letting agent fees. Just give me the keys as soon as I've put the money in your account. Don't even bother with the contract. Burn it. The contract is simple: I pay you rent, I live in the flat.

You send a person to read the electricity meter. They can take my card payment for whatever I owe when they are in my home. You send a person to read the gas meter. They can work out my bill and I'll pay it on the spot. You send armies of traffic wardens. They can spend less time hiding in bushes and more time knocking on doors taking card payments for the rubbish collection, street lighting, police, fire service, libraries, schools and other things that I quite like rather than hovering near cars whose meter payment is about to expire.

My bank sends me a letter saying that they've paid a bill for me, but I didn't have quite enough money, so they're going to charge me even more money. My bank's only function, so far as I can see, is to make my problems worse. Rather than ringing me up and saying "Hello, Mr. Grant. We can see your income has suddenly stopped. We're not going to charge you any interest until you start earning again, because otherwise we are going to stress you out and make you bankrupt, and then we won't get our money back"

You see, everything trundles along fine when you play along with the game. Keep working doing that job you hate, at a company run by imbeciles, on a project that just needs 5 decent full stack developers to get on with what they do best, for 2 weeks, with no project managers who couldn't organise a piss up in a bar, and no 'architects' who just draw on whiteboards and produce documents that nobody reads, because they were rubbish at actually producing real working software.

The worst code I ever wrote was my first iPhone game. Games are awful as a single indie dev. You have to do all the graphics, sound effects, music, plus design the user interface, and then there's the game itself which has to run at at least 30 frames per second. The calculations are hard. Doing it in Objective-C was a nightmare. I've never know a language with such whacky syntax. I can probably write code in about 20 languages (BASIC, Pascal, Assembler, C, ADA, C++, Java, Javascript, C-shell, Korn-shell, Bash, Perl, PHP, C#, SQL, AWK, Batch, Google Apps Script, Logo, VBA, XSLT) and there's a bunch more I know enough of the syntax of to read and edit.

I can glance at some data and tell you if it's XML, JSON, Base-64, HEX, key-value pairs, fixed position, CSV. I can probably guess how the programmers of your favourite game store the high score table, and insert myself as the number one player with an unassailable score.

Yes, playing the games that everybody else does, competing... it seems a bit pointless when you know the game is rigged, and if I really wanted to, I could tweak my bank balance. Fraud is not hard, and banks make so much money they don't even go after the small fraudsters. It's easier to charge honest hard working people exorbitant rates of interest and fees rather than doing their actual legal & moral duty to Know Your Customer (KYC). I could buy a digital identity for about $100, open a bank account, get some loans, use the money to buy a real passport from a European country that's a bit more relaxed about staff members making identity documents in return for a cash bonus.

Once you're in Europe you can just keep heading east until you find a country where people don't read too many newspapers and watch too much TV. You can find somewhere you can afford to eat and sleep for a couple of years, while you wait out the storm. You can take some time out from the rat race, because you deserve it.

My iPhone app business was a hit, my first IT contracting company made loads of money, my electrician business was profitable, but the building trade is hard, my enterprise mobile apps business was too ahead of its time and never made much money, my Bitcoin trading and mining was hugely profitable, my second IT contracting company made loads of money. I don't really want to sell out and get another contract just yet. I've got some cool software ideas.  Instead of doing what I normally do and start with a profitable business model, I want to do something I'm passionate about.

I don't work at MIT or Stanford. I don't work at CERN or the UK Atomic Energy Authority, but I can tell you that the strong nuclear force is the energy that's released when a heavy element is split into two lighter elements. But what does "heavy" even mean when we haven't managed to get the Standard Model of Particle Physics to be unified with Special and General Relativity. Special Relativity tells us that energy and mass are two sides of the same coin, and General Relativity tells us how mass stretches the fabric of spacetime. Gravitational lensing has proven the theories predictions. The Standard Model had it's wartime and industrial applications. The transistor radio and faster computers. Every experiment discovers new weirdness though, rather than proving the model is complete. The particle zoo grows and grows, every time we smash protons together at higher and higher energies.

What does Quanta mean? It means "how much". A photon - a packet of light - comes in a specific frequency, which tells you how much energy it has. Let's imagine that a red photon is 2, green is 4 and blue is 6. We can also imagine that an X-ray might be 20 and a gamma ray 50. Do you notice that all the numbers are even? That's because you can't see anything odd numbered. A photon with the wrong energy won't interact with an atom that needs a higher energy to absorb it, and then emit a new photon. The only way you know anything exists is because of the photons that are emitted from atoms.

So we can only work with things we can see, and those things will only tell us about the photons that have the right energy. We can build a machine that measures microwaves, but what material should we use to listen to the frequencies that no known material interacts with. How would we even find elements that our eyes and our radios and our photographic chemicals can't detect?

Well, cosmologists reckon there's loads of it, whatever it is. They call it Dark Matter and Dark Energy. Nobody can see it, but they've done the math, and there just isn't enough visible matter to glue the galaxies together. Imagine if Dark Photons came in frequency 1, 3, 5, 7 etc. but our visible universe is governed by the Planck Constant, which means multiples of 2, in this  simplified example. If you can only see 2, 4, 6, 8, 10 etc. then you can't see the Dark Photons and the Dark Matter that can only be seen with the materials that we only hypothesise to exist.

General Relativity is normally right, and GR isn't fussy about the matter that it accelerates. It doesn't deal in packets of energy. GR doesn't do probabilities. Quantum Mechanics says that if we stop observing something it loses certainty and spreads out into a probability cloud. If you know the location of something, you can't know it's momentum. If you know something's momentum, you don't know where it's located. It's like saying that if everybody stops looking at the moon, it won't be where you predicted it to be when you look back. But GR doesn't care about that. GR has predicted the moon's orbit with incredible accuracy, and the moon always obeys the law of gravity.

If you ignore gravity in your subatomic world, you permit matter to behave unpredictably. If you ignore special relativity, you permit massive particles to fly around faster than the speed of light, in order to uphold the uncertainty principle.

If we think about the duality of light. Both a particle and a wave. We think of photons as massless, but they have energy and finite speed so General Relativity applies. The speed of light is too fast to get caught in orbit but light will bend around massive objects. Let's use the Pilot Wave Theory instead of all that Quantum weirdness. Imagine our photon being carried along by the gravitational waves that it's making. Gravity waves can travel as fast as they like and can even escape black holes. You can't detect them, because your ruler will stretch and compress as a wave passes. You can't take a timing of how long it takes for something to travel from A to B because time and space are different for different observers. Just by carrying my atomic clock to my fellow experimenter, to compare the time I measured and the time they measured, my clock will run slower because I'm moving in space. Time is not distance divided by speed.

Time measures how much slower you're moving than the speed of light. If you could travel at the speed of light, and tried to shine a torch forwards, no light would come out and your watch would be stopped. You wouldn't even be conscious, because you'd be frozen in time. If you slowed down to 99% of the speed of light and shone your torch, you'd see it beaming off just as fast as normal. That's because time is passing more slowly, so you don't notice that your light is moving at 1% of its normal speed. When you get back home, you'll probably find that everybody is dead, because time didn't slow down for them. Your clock is right, but so is theirs.

So what's going on at the subatomic scale then? Well, you can't really detect a single particle. When a photon hits the Charged Couple Device in your digital camera, it's absorbed. Enough photons have to be absorbed to trigger the discharge of a capacitor. Only the amplified signal is strong enough to be measured. The thing about amplification is that you get noise. You're trying to measure a signal, but a percentage of what you measure is noise. That's the signal to noise ratio. It gets worse. Because instruments are digital, they have limited precision. If you measure colour with 8 bits, you can only pick the closest of 256 colours. A CD can only store 16 bits of air pressure: 65,535 possible values. It does this 44,100 times a second. Pretty good, but only an approximation.

Because all digital equipment depends on an effect called Quantum Tunnelling, it's hard to know if the Quantum phenomena are being observed, or whether it's the instrument's noise that is being amplified. Early computers sent signals in parallel, but sometimes the data got 'skewed', with some bits arriving later than others. Now data is sent in serial, with very fast modulators and demodulators, but that means that a lot of buffering has to occur. If you imagine the time it takes for a detected signal to be amplified, that amplified value to be measured, the value stored in a buffer, a modulator to turn the value into electrical pulses, the time to travel down the wire, a demodulator to measure the pulses and store a value in another buffer, a memory controller to load that value into the computer processor's register, the processing instruction has to be loaded from the cache, and then the calculation is performed, the result is copied from the result register to memory, the I/O controller sends the result to the storage device.

Then, ages and ages and ages later, a scientist comes and looks at the values. According to Quantum Physics, every piece of measuring equipment, power source, data transmission cable, the computer and it's storage device, are all part of a quantum superposition, and the value is not determined until the scientist observes it, at which point the wavefunction collapses. Computers are great at doing calculations and for sharing research, but by their very nature as machines that exploit strange subatomic behaviour - semiconductors - they are also not very reliable when measuring the very properties of physics that they themself are built on.

It's useful to think of the Pilot Wave theory, because it explains observations like the double-slit experiment, in a nice deterministic way. Photons don't travel through both slits, but the wave does, and then the two waves interfere. Interference disappears as soon as you polarise the particle, because the peaks and troughs are no longer in phase. We really don't need to mess around with probability waves.

Yes I really hate probabilistic theories. Because subatomic things are smaller than the wavelength of light, we can only make statistical measurements. The size of the atomic nucleus was estimated by hammering a sheet of gold really thin and then firing electrons at it. Based on the number of electrons that bounced back and got detected, an estimate was made of how much empty space there is in an atom. However, you might know the weight of the gold, and the surface area, but you don't know how thick it is. It might be 5 atoms thick, it might be 50. Where did you get your measurement for the weight of a gold atom? How you know its density? How do you know how tightly packed the atoms are together?

At some point you're going to have to rely on some old science. The periodic table gives us the atomic weight, based on a presumed number of protons, neutrons and electrons. But what about the strong nuclear force that's holding the nucleus together? What about the energy of the electrons in the biggest orbits? Does a 1g diamond have as many atoms as 1g of Carbon dust? Prove it.

So we know that heavier elements are unstable, radioactive, and decay into lighter elements. We know what amount of what element, in a certain isotope, will give a self-sustaining fission reaction. We guess that fusion in stars creates all the elements up to iron, and all the elements after that we guess are created in supernovae. We haven't done much apart from a bunch of chemical reactions and some atom smashing yet though. We've done pretty well with electromagnetism and radio waves. Semiconductors and transistors are completely ubiquitous. It's all useless junk if the Van Allen belt blows away in a coronal mass ejection and we're all bombarded by cosmic rays and the radio waves are filled with static noise.

I can tell you something that's fairly easy to observe. Hotter air takes up more volume than colder air. Also, there's an altitude where Earth's gravity can no longer hang onto its Nitrogen, Oxygen, CO2 and noble gasses. Also, if you suck up dense polycarbons from deep underground, where they have been heavily compressed, and then set fire to them, the result is less Oxygen, more heat, and the expansion of liquid into a big volume of gas that's heavy, so it lies close to the ground, while the useful Oxygen is pushed into the upper atmosphere, where it thins out and drifts off into space.

If you have more CO2, you should plant more trees. However, we're doing the opposite. Deserts are spreading, rainforest is being cut down and fire sweeps through vegetation in California, Australia and Borneo.

So many people work in banking, insurance, accountancy, financial services, paper pushing jobs of such woeful uselessness that probably the bulk of humanity's job description is: sit at desk in front of computer, wear telephone headset, read the script on the screen to people on the phone and type their answers on the keyboard, drink tea & coffee, go home.

Why can't I do something to help feed some people, spread the wealth, speed up the conversion to clean energy, get more computers doing more useful calculations and modelling, rather than just massaging sales figures and marketing crap that nobody needs?

I'm going to risk running out of money for another few weeks at least, and that means I definitely will run out of money, because it's usually 60 days until I get paid. For the amount of money I'd get selling my depreciating electronics, and the time and hassle involved, I might as well get a job stacking shelves in a supermarket.

I'm just going to do the type of work that I'm passionate about and good at for a few weeks. I know HSBC are going to need a Customer Due Diligence system before February. I like my ex-colleagues, but my god nobody had the balls to just bin the junk and start again. It doesn't scale, it's not maintainable, it's so hard to roll out in-country, the pilot was a disaster, all the good people are leaving, and 85% of the work still has to be done.

I remember getting really angry at an all-day meeting with about 40 people. I didn't know at the time, but the CIO was there, and head honchos from Retail Bank & Wealth Management and Corporate Banking, plus the best in the software business trying to save Europe's biggest bank, on their number one project, money no object. It maddened me that we spent 2 and a half days estimating how much work there was to do in 3 weeks, but nobody knew what our productivity was. Nobody knew what the backlog was. Nobody knew what Minimum Viable Product was. Nobody was bothered about Continuous Deployment. Nobody had thought about the godforsaken task of pumping thousands of questions and rules and logic into a spreadsheet that you needed to know 3 programming languages to even make a stab in the dark.

I said I'd do half the questions on my own. I then had to spend an absolute age reprogramming the core system so that it would spit out meaningful syntax errors. There were about 500 things wrong before I even started. Then the architect admitted that he hadn't even thought about some fairly fundamental things and his solution took days to get right, while my suggestion was roundly ignored. Then the data architect started changing everything, even though it was tightly coupled throughout the entire system. I had to give loads of people lessons on Git and Maven artefact versioning. It was madness, and I had to call time out: I asked for a code freeze while we got everything stable. To everyone's credit, they listened to me, trusted me and supported me. I think it was only 5 straight days of midnight finishes. The work wasn't hard, but there were major bugs in every single component of the system. The pressure of knowing that hundreds of people are effectively twiddling their thumbs, and if you don't get it all working, you've damaged a huge amount of productivity.

A little cheer went up when everything integrated and the screens went green for the first time in weeks. It was also just in time for the CIO to announce that we'd achieved a significant milestone at the Town Hall. It was false optimism though. I had unearthed an absolute mountain of buggy code and dodgy config. My worst fears about performance were confirmed too. It took 5 minutes for the homepage to load.

I found a Scrum Master I liked and gave him a list of names that I wanted to work on a new version of the application. We picked good tech, designed a simple system and had something to demo in a week. They sacked my scrum master, me, and the longest serving member of the development team. People were getting jumpy and we were making management look pretty incompetent. I was also leaving a paper trail that was inconvenient. I was quite explicit about the urgency of the situation and what the simple remedies were. I didn't sugar coat it, because I'd been giving the same advice for 5 months.

I had plenty of warnings to keep my head down, and toe the line. I knew my days were numbered, and when I found out my old scrum master wanted me back because everything was tanking, I fired my parting shot. I knew I'd get terminated. Quicker than having to work a notice period. No need to lie about your reasons for leaving. No 4 weeks of hell working for a micromanaging idiot.

There's no challenge for me in corporate software. I ran the IT for a nice medium sized company. The board asked me for a data warehouse and a new phone system. Instead I gave them a new card payments processing system and an accurate set of accounts, with the correct ledger for all their customers. It's the only reason why the Office of Fair Trading didn't shut them down when they sent their forensic accountants to see why the books didn't really balance. Oh, and they were in breach of card data protection and were going to have a data theft until I tokenised all the card numbers. I had such a hard time in convincing the CEO of the right technology strategy that when he said "fit in or fuck off" I was more than happy to leave that rudderless captain.

When JPMorgan needed somebody to figure out why their FX system was running like a dog and they were going to cause a market liquidity disaster on International Money Markets Day, they'd had 10 Oracle consultants and none of them could find anything wrong. I found a DBA I liked in London, who didn't even work in my department, and we went through everything with a fine tooth comb. I also harassed the sysadmins until they got my disk I/O up to scratch and tweaked every kernel configuration value, applied every patch and generally wrung every bit of speed we could muster out of the hardware. I then had to take the vendor's code to bits and tell them where they had multithreading issues. They didn't believe me, but I kept sending them the measurements I'd made and pretty graphs, until they put a dev on the phone to me, and we talked through the code, and found a bug. Then the marvellous DBA found the setting that was causing the latency. With the new code and the much faster database, I could hardly believe the timings from the performance tests. When IMM day came, we blitzed it. We absolutely wiped the floor. Fastest FX platform in the world. There wasn't much appetite for developing our own in-house system anymore, I really didn't want to sit around looking busy. I liked my friends and the culture, but I still need interesting work.

And that's how it goes. Hire me to fix your technology problems, and I will, but then I'll want to leave if new challenges don't come along. I hate just keeping a seat warm. I guess that's Bipolar. I work like a son of a bitch for 3 or 4 months, then I'm really struggling to stay motivated for another month or two, and then I'll just stop coming to work.

I could try and pace myself, but invariably I find myself drawn to the impossible challenges. Normally you hire somebody who turns out to be rubbish, but refuses to leave. They literally stick to their chair like glue, because their main motivation is job security, not being good at their job. When you hire somebody who's really good, you can't let them know what a hideous stinking mess everything is in, and that they're going to be under relentless pressure to do horrible work. People who are really good will just go and find somewhere better to work.

I'm an idiot. I want to finish the job I've started and leave feeling proud of delivering stuff. I never ask for the poor performers to be fired. Most of the time I'm able to calmly filter out the new guy I'm training, when they're trying to impress me, but they don't know what they're talking about, and I've got an absolute bitch of a schedule to keep. I had to keep just saying "no" when 3 people were shadowing me, and they were all saying you forgot this or that, or you did that wrong... then I press a button and it all works first time and I can start to be more amenable again.

I'm absolutely not perfect. The first implementation is normally a dog. An ugly dog. But it works, and then the pressure is off so I can refactor for elegance. It's a bit of a thankless task though. When you start refactoring you then start looking at other code, and you end up having to change more and more and more and all the tests break because everything is so fragile, and then people start complaining that they can't find their bit of code anymore, and they have to merge their bit of work into an unrecognisable new world, because people don't pull, commit and push often enough.

I don't even write much code. Ask me for a bit of code that does something, and I'll give you a little bundle that you can plug in wherever you want it. When everybody is developing features but the application doesn't work, I'll concentrate on bug fixing and stabilising the build. When everybody is trampling on each other's toes, I'll concentrate on release management and versioning. When an important demo is coming up but people are committing code that doesn't work, I'll roll it back and tell them to put it on a branch until it integrates. When code starts getting promoted from DEV, to UAT, QA and PROD, somebody has to make sure the database is created with the latest schema, test data is loaded, Business Process Management tasks are cleared down, and all the little microservices are up to the right versions. That can take 3 hours on a bad day.

Software is not hard. Managing a huge team is hard. I haven't had a management role since 2013. However, I know that every untalented email forwarder who thinks they can manage a big project says "features, features, features, we're late, features, features, oh my god we are so late, let's just get it working, get it working, oh my god so many bugs, performance is terrible, let's try and go live anyway, oh my god it's hard doing a production rollout, and the users hate it even more than the testers, what do we do? what do we do? everybody panic, work 25 hours a day 8 days a week, 366 days a year, what do you mean we don't have any metrics? what do you mean we don't have any reporting? what do you mean it's not multilingual? why are all the good people leaving? why do things seem to get done a lot slower now we're supporting 3 or 4 more environments, instead of just one? who could have predicted such a thing? why didn't any highly paid consultants tell me? oh, they did? get me the mail server administrator immediately, there's some junk mail I don't seem to be able to delete permanently. Just get it done before the regulators come asking why we've failed to meet our timetable commitment".

And that's why I hate corporate bullshit.

It's the engineer's curse: we want to just solve problems, to make stuff that works, to make things better. I don't care that it hurts your feelings when I say your idea's rubbish. Your job is to listen to the experts, motivate people and sign the paychecks. My job is to come up with the ideas and make them a reality for you.

I don't really think I'm cut out for having a boss. I don't really think I'm employable anymore. I just completely ignore all the management, then they love me, then I tell them I'm not doing it again unless things change, then they hate me, then I get fired, then they get fired.

I probably need to figure out a way to get paid for more than 5 or 6 months of shouting and swearing at everybody and just doing whatever the hell I want. But it's so soul destroying to go to work and think that you made absolutely no difference. In fact you were complicit. Your day rate bought your silence. You were more worried about losing the stream of big invoices than your ethics. You put financial benefit ahead of professional, moral and legal obligations.

A bunch of white collars have got to get prosecuted soon.

Bankers have had their hand in the till for far too long.

 

Tags:

 

 

Advent Calendar (Day Two)

11 min read

This is a story about a split personality...

Barclays Churchill Place

This is 1 Churchill Place and this is Nick: the schoolboy who leads an exciting double life. For when Nick eats a banana, an amazing transformation takes place. Nick is BANANAMAN, ever alert for the call to action.

I'm not actually Bananaman, but I do eat porridge and a banana every morning. I'm also ever alert for the call to action. I wasn't born to follow.

In Silicon Valley, and with the top people in banks, there is an arms race. But it's not with weapons, it's with smart people. If you let good people go to your competitors, they will beat you. It's that simple. High performance teams make stuff happen.

There's no point in being part of a race to the bottom. I was really impressed by the way that Barclays have embraced the modern software development paradigm. They hired bright young people and allowed them to get on and make some damn high quality software. They let them run their projects with a risk-based approach and using Agile best practices.

I got a bit cross with a couple of people at Barclays, who were straddling the line. They were neither demanding quality and an old-school attention to detail, nor were they very talented or quick. However, the bulk of the developers were amazing and a pleasure to work with. There is always dead wood in any organisation. The problem comes when somebody gets promoted to a position of incompetency.

There's no sense in bluffing your way into a role you can't handle. If your skills aren't up to it, you can't handle the pressure or you just don't have relevant experience, stay away... you're just going to land you, your team and your company in trouble. I've never stepped away from a role in a particularly elegant way, but I haven't dug myself a hole either. I hate people who make themselves into a key man dependency when they're incompetent.

Fail fast. Move fast and break things. There's no sense in spending years and years doing something you're not very good at. I hate the way that we all need to push for promotions in order to get a pay rise and not be on the breadline, but people end up being promoted to positions they're hopelessly unqualified for, because all they're good at doing is kissing ass to clamber up the greasy pole.

Yes, if I had an hour to do some actual work or an hour to make myself more indispensable, or improve my promotion prospects, you can guess which one I'm more economically incentivised to do.

The way that corporations are run encourages people to delegate the things that they're supposed to do, and concentrate on things that only further their personal objectives, which are in direct conflict with the organisational needs. The most junior team members do all the work, while their managers concentrate on making themselves look good, and scrapping over the few promotions.

This adversarial system is flawed from the outset.

The Rat Race

Look at how compliant these suit wearing office workers are, patiently queuing to get on a packed tube train to take them back to their miserable tiny home that they hardly spend any time in. They spend all their time pushing paper around in order to service the mortgage, which is a millstone around their neck.

God forbid that you end up procreating. Then your nuts really are in the vice. You will be having to sprint along on that treadmill to service all your debt, working to worship angry bawling midgets that are hungry and have relentless needs for clothes that they will soon outgrow or be ruined by this decadent practice of 'playing'. Ha! F**k those little sh1ts! They get to 'play' all day... how nice for them. Bastards.

Well, there's a way to punish those little sh1ts for being born. Yes, they should have a taste of what it's like to have not kept your cock in your trousers. Yes, they should be forced to go to an office like environment. No play for them. I have to sit at a desk all day, bored out of my mind, so the fruit of my loins has to too.

That'll teach the kids for being so stupid as to give birth to themselves, without a care in the world for how they're going to pay the mortgage, dress themselves or feed themselves. There's a rumour that babies can't even forage for food or kill an antelope. Who the hell do this race of midgets think they are? Arrogantly expecting to be wheeled around in carriages, and getting to gorge themselves on milk swelled breasts all day. That looks like a jolly nice life to me. I don't get to suckle on any breasts at all in the office. Yes, I was sacked last time I did that.

View from Churchill Place

I'm rather patiently waiting for the day that I'm big enough to go to school. Mummy says that when I'm all grown up I will get to go and study with the other children. I will get to read books all day, and write poems and sh1t. Yes, that sounds like good fun. I would like to do that all day. At the moment all I do is follow grown ups around and get told off when they make mistakes. I do tests that they know the answers to, but they don't like my answers.

I see that the grown ups like to drink coffee and alcohol. I'm too young to have those things, but they look like a lot of fun. I would like to have those things. It looks like the coffee allows you to concentrate on doing your job, rather than having to deal with the existential angst of executing pointless tasks. It looks like the alcohol allows you to deal with the anxiety of never quite being able to break free from a system that is engineered to break the will of the sheep-like people, and force them into a system of meek compliance.

Yes, I think I will like it when I become a student, and I will get to lie around drinking booze and coffee, and pontificating about life the universe and everything. Reading books and writing is a lot more fun than being told what to do by grown ups. Mummy says I'm smart so I deserve to get to sit around and be complemented for coming up with the same answers to questions as the grown ups.

I can see now that the master plan is working very well. I can see now that studying history, politics and having mastery of the English language, has led us to this point of great enlightenment. Yes, I can see how amazing society has become since we started getting everybody to read the same books and work in the same offices doing the same kinds of things. I can see now that this kind of groupthink has been a very successful experiment. Life is so amazing now.

I'm so disappointed that I didn't come up with the very clever idea of studying other people's mistakes in order to be able to be an expert on mistakes. I'm clearly not very clever, because I'm not very good at making mistakes. Except the mistake of accidentally doing successful stuff. Yes, I should be like the grown ups who study mistakes and then copy them. I'm not very good at following their example. I'm not a very good student of failure.

Pitching

I stupidly keep building stuff that works. I stupidly keep making a profit. I stupidly keep succeeding. How silly of me. Yes, that's clearly not the way the world works. We need to have failure. We need to have fighting. We need to have war. Success is not an option in the modern, enlightened world.

Let's not listen to the successful people who are proven and are making things work without violence and conflict. No, let's glorify the bullies and the warmongers instead. We should definitely have a society run by failures, run by those who can't make things work, harbour ideas of violence and vengeance to compensate for their inadequacies. Those are the kinds of leaders I want.

I see now that we are choosing just the very kinds of leaders that we really need. The kinds of people who want to go into positions of authority, responsibility... they are invariably the kinds who are not on a total ego-trip and grinding an axe, have a chip on their shoulder. They definitely don't have micropenises and some kind of small-man syndrome.

Yes, all the warmongering. Getting your willies out, I mean getting your guns out. Yes, it's very macho. It's definitely not overcompensation for your inadequacies. I'm definitely full of much more admiration for leaders who advocate violence. I'm definitely in favour of a global society based on bashing each other over the head with clubs. I'm definitely not in favour of diplomacy and peace. War is the answer, but I've been too stupid to see it before.

How foolish of me not to see the brilliance in the idea that we can all have pointy sticks and we can just attack each other and take whatever we want. I'm really looking forward to living in a cave again and foraging for nuts and berries and trying not to be eaten by a tiger. It sounds a lot more exciting than working in an office.

Yes, working in an office is pretty boring. I'd much rather be bullying somebody with my pointy stick. Especially if I have a pointy stick but they don't. Yes if I get to poke them with my pointy stick with no fear them being able to poke me back, because I'm the only one with a pointy stick, then I'll feel like the king of the world, which is the whole reason for the existence of the Earth and humanity, right? The whole reason the entire planet and the human race was created was as a massive entertainment system for me, right? I'm entitled to go out poking whoever I want with my pointy stick because it's fun.

The whole reason the world exists is so that I can have fun. It's a playground, and I'm allowed to play. I'm bored in my job and I want the attention of the other children and I like playing games, so I'm going to sharpen a stick and go and poke the most vulnerable weak person I can find. That will make me feel good.

JPMorgan Christchurch Road

I have no words to describe just how boring it is moving money around for pointy stick manufacturers. I have no words to describe just how boring it is never getting to play with those pointy sticks. I have no words to describe just how boring it is to never get to poke anybody with a pointy stick.

I've studied the history of poking people with pointy sticks and it sounds like a lot of fun. There's a lot of hope & glory in poking people with pointy sticks. It sounds like a barrel of laughs. It sounds like a game of soldiers.

So what the hell am I doing flying a desk when I could be flying a drone. I'm good with computers. I used to like computer games. Poking people with pointy sticks makes you feel better about yourself. What's not to like? I think I've found my perfect career.

It must take a lot of bravery to sit behind a screen, pressing buttons, in the full knowledge that the remote system that you are controlling that is poking people with pointy sticks, completely protects you from any physical pain or risk of injury or death. Yes, that's a really brave thing, I think, to sit playing war games on a computer.

Whether the people being poked by your pointy stick are real or they're simulated, that doesn't really matter. It's just that the graphics are probably more realistic in the simulator. I like the way the heads explode when you shoot them in the simulator. I don't like the physics of reality. They say that the simulated people don't even have families. Where's the fun in killing some computer simulated person who doesn't even have a family?

It gets boring after a while, killing simulated people. Time to drop some real bombs. The physics in reality isn't as good, but at least you're killing real people with real families. At least there is real human suffering. We haven't figured out how to simulate human suffering yet, or maybe nobody is particularly interested in experiencing simulated human suffering. Maybe there's no money in simulated human suffering. Maybe there is only money in real human suffering, for the manufacturers of pointy sticks.

That is all.

File-o-Frank

Frankie is well trained. Look at him doing his filing. It's a File-o-Frank (April 2007)

 

Tags:

 

If You Read This I Will Have To Kill You

5 min read

This is a story of "greedy, lazy, incompetant people who got found out"...

Fear and Loathing in 8CS

Justice is a funny thing. So is Karma. Things will always catch up with you. "My name is Earl. I'm just trying to be a better person".

I might not particularly agree with the Patriot Act, but I agree with the punchy tagline that was used to sell a lie to the American people, who were still scared and reeling from the biggest terrorist attack on home soil: nothing to hide; nothing to fear

However, I have a job which I need to pay my rent, but someone who isn't me (Earl) was working with a colleague who had his/her contract terminated today. Here are some more words I heard from Earl:

"I had asked to be moved from one scrum team to another due to a difference in style and approach from the way I like to do things, which has always been quite successful for me. However, it's not in my remit to tell other people how to do their job, so I asked if I could work with the a person who seemed to be doing things more in line with my expectations.

There then followed a blissful two days of productivity. The business seemed happy. The product owner/CIO seemed happy. Us developers were overjoyed and we were high-fiving and walking around the office with big grins.

We decided to go out for lunch as a well bonded happy team, at the suggestion of our scrum master. But he/she never showed up. As we sat there at lunch, we all agreed what a great guy/girl he/she was, and that we wanted to support him/her from the inevevitable management pressure that was going to fall on his/her shoulders.

We were surprised that our colleague didn't join us for lunch, especially as it was his/her idea. We had left a note and tried phoning him/her.

Over lunch we discussed how 'damagement' (management) were not really interested in knowing the truth, and in fact didn't want to know it, as it would undermine plausible deniability.

I observed that a couple of people had been asked if they would like to consider other opportunities in light of the increasing and relentless pressure. I wondered whether I might have been guilty myself of precipitating one of the scrum masters' untimely departure. It was almost an open secret that I thought he/she was a micro-managing waste of space.

I had actually been one of the people who was asked to consider other opportunities. I nearly laughed in the face of the person asking me. The irony of it was beyond belief, given this person's dependence on me during the previous weeks. I stood my ground and asked him/her to resign instead.

This kind of brinksmanship must be going on all the time between these equally incompetant fools. Knowing that I was competant, it was not brinksmanship for me. Instead I felt confident that the project and the client needed me more than I needed the contract.

You can't bluff a poker player who is holding the nuts - the very best possible hand available from the cards that have been dealt. It's a simple matter of memorising the odds for all the possible hands, and then your play becomes automatic: you know almost immediately when you should fold.

When we got back from lunch, I went for a pooh. I sat on the toilet, looking at Facebook and taking my time. I was relaxed and enjoying my job again, for the first time in ages, after having been empowered to do my job and make things better.

I came back to my desk, and my team told me he/she was gone. Immediate effect. They had got rid of him/her while we were all at lunch, with that empty chair at the dining table.

We speculated during the afternoon that the reason for termination was a lack of fear. Our departed colleague was rumoured to have no mortgage. He/she was too honest. Too fearless. He/she wanted to do the right thing.

I liked him/her, even though many people didn't, seemingly for intangible reasons, unrelated to whether they could do their job well or not. His/her face didn't fit it seems."

Anyway, I'm not really able or willing to comment, given my position on a sensitive, high-profile project that I can't talk about, and would never talk about, given my professional duty to my client. I will say this though, of the attitude of me and my colleagues. We care very deeply about the needs of our client and customers, and we always put those needs first, often ahead of our families, our health. We are passionate and dedicated, and excel at our jobs, under the most intense pressure and stress.

We are all trying to be the very best we can possibly be. We need to be. The bank is "rotten as shit" as the Department of Justice will attest. $1.9bn fines don't get dished out every day. We are turning it around though. I really like the CIO. I really like my team. I really like my job. I really like trying to save hundreds of thousands of jobs. We don't get to do that in IT very often.

[Picture has been removed by IT Security]

Me in the office, wearing a rugby shirt, looking like I'm having a 'good time' despite having worked far too many 7-day weeks (September 2015)

Tags: