Putting strings into databases and then taking them back out again

The title of this article is a phrase I’ve been saying in my professional life for quite some years now, and it feels like it’s become more relevant as time has gone on. It’s got to the point where it’s one of the main philosophies to my working life, so today feels like a good day to explain it a bit.

“So what do you do?”

I like the phrase as it’s an accurate description of what the software that I work on does, and by extension what I do. Of course this isn’t a very human description. It doesn’t make sense to most non-technical people. Who calls ‘bits of text’ ‘strings’? Nerds. That’s who. There’s no mention of what putting strings into databases (and taking them back out again) actually achieves for anyone. No mention of user needs, wealth creation or political consequences.

But while it’s a phrase that is a bit too technical to explain the actual human consequences of my work, it’s also a very clumsy human description of the technical side of my work. It’s almost belittling to the years of experience I and my colleagues have. There’s no mention of code as a craft, no mention of Ruby, Rails, HTML, CSS or HTTP, no mention of test driven development, agile, continuous integration or distributed version control.

But I think that the interaction of these together is why I like the phrase so much. It pokes at the space between those two worlds. And that is what I do.

Plumbers of the internet

Here’s an analogy I use when trying to give some vague understanding to non technical people about how hard it is to do the technical parts of my job: it’s similar to becoming a plumber. I didn’t go to university, I learnt on the job. This shouldn’t undervalue my skills, I have put in my 10,000 hours to get good at what I do, and my day rate reflects that. In fact, I’m good enough at my job to be able to do this for large, complicated and important projects for big clients. But I’m not a bedroom hiding prodigy, with a set of skills any more alien to humanity than a black cab driver who has learned The Knowledge.

I would like it if both software developers behaved similar to, and the world treated us, more like we are plumbers. Annoyingly expensive and hard to get hold of, but not special and not scary.

We’re (mostly) not Computer Scientists

First I want to talk to the development community.

I mainly use “putting strings into databases and then taking them back out again” at work when I’m trying to stop programmers I’m working with from being so damn clever.

A poster made by a client of mine (full of very smart people) to memorialise my favourite phrase of that contract. You can read more about why on Tommy’s brilliant technical blog post.

CGI has been around since 1993 (according to Wikipedia, I was 5 at the time), and Ruby on Rails 1.0 and Django were both released in 2005. This stuff isn’t new any more, and by-and-large it’s a solved technical problem. But culturally we seem to be struggling to come to terms with that.

Inside the software development industry, we’re full of autodidacts, with a thirst for new knowledge and challenges. And as the market has inflated our salaries, so have our egos and imposter syndromes in equal measures.

You can see it best in our job interviews. The above comic puts it perfectly. I have regularly been asked technical interview questions which are more like a computer science degree question.

I am now much more likely to discontinue in a hiring process if I’m asked something like this, not because I don’t think I’ll be able to figure it out, or even that I won’t have fun doing it (I probably will), but because I’ve found it says something about the development culture in the organisation.

Far from making me think that they are competent developers who are comfortable in their skills, I’ll expect to find a team drenched in imposter syndrome, comforting themselves with some special tricks they can do.

I’ve also composed hiring processes, and at MOJ Digital I had a couple of people criticising how “easy” my technical questions were. The problem with this was that they were good examples of the kind of technical work I expected we would be asking them to do. If they were able to complete them, quickly and cleanly, and were able to explain what they were doing, then we can move on to the many other skills a good developer should have. If it’s a helpful marker, we still had plenty of people who failed.

In both of these scenarios I view being comfortable with your skills and not trying to show off how clever you are all the time demonstrates considerably greater competence.

Important, not interesting

This thinking also began leading my career in a different direction. Like most other programmers, I had been thirsty for the most challenging and interesting technical challenges. The pinnacle of this was the work I did at BERG, helping design and build near future products. In a tiny team, we got to build publishing platforms and apps for the iPad which hadn’t launched yet. We got to build end to end Internet of Things products and platforms, from scratch, back in 2010–12.

But as I decided to move into the digital transformation of the civil service I’ve become considerably less interested in technically interesting problems to solve as I’ve learnt about increasingly important things that can be achieved with just putting strings into databases and taking them back out again.

Learning of the huge impact on real people’s lives of building services like Prison Visit Booking and Lasting Power of Attorney, both of which are firmly within the putting strings into databases and taking them out again camp, validated this.

After 3 years of doing that, I spent a few months working on the Jeremy Corbyn campaign, and while the power of digital tools completely transformed that campaign and allows us to do things that hadn’t been done before, I maybe spent half a day doing anything even remotely technically interesting or challenging.

The flip side of this is that since I’ve been avoiding ‘interesting’ work for ‘important’, I’ve ended up doing work that has been the most interesting of all. I’d recommend it.

This isn’t scary

But perhaps more importantly than all of the above is non-technical people’s perception of putting strings into databases and taking them back out again.

Sometimes it feels that non software developers can see us having a slightly ‘magic’ skill, one to be admired and feared. As much as I like to be admired, I find being feared very unhelpful.

You know… this.

In my teens I was excluded from school and had the police phoned because I had cloned the school website on to my own server, as I was annoyed it wasn’t being updated and wanted to run my own version that was. Rather than being seen as an adorably nerdy thing to do, I was viewed as a threat. They didn’t understand what I had done, suspecting that I had ‘hacked’ into the school website.

The headteacher told me they were taking this so seriously because “bad people, like terrorists, could use your skills to do bad things” and I had to learn right from wrong. “I’ve seen it in the movies” she said.

This is an extreme, but real, example of viewing technical skills as mysteriously powerful that I still to this day come up against to varying degrees. And one I think, as discussed above, I think we perpetuate.

This helps no-one when we need to work with institutions to adapt to the digital world. The answers to these problems aren’t complicated computer science problems like AI, bitcoin or whatever is currently at the top of the hype cycle. It isn’t as ‘interesting’, nor is it as scary as that. It’s working together to find new ways of putting strings into databases and take them back out again, and understanding the fundamental effects of this to society. The power of this will astound us all.