In the second episode of our Talking Software podcast series, Senior Developer Lead Matt Arnold discusses the social side of programming, discovering prime numbers and the Hitchhiker’s Guide to the Galaxy.
When you get asked what you do for a living, what do you say?
I tell people that I’m a software developer and that I manage software developers.
And does that always answer their question?
Often people want to know a bit more about what software development means.
So what do you tell them if they do ask that question?
I tell them that I write code for a living and that involves planning features for products. Thinking about how it’s going to look and how it’s going to work. Then being able to communicate that to a computer so that it’s able to reproduce it in software form.
So instead of talking to the animals, you talk to the machines?
Something like that.
What do you think they most commonly misunderstand about how software gets made?
One thing I think people very commonly misunderstand is how social software development is. I think there’s a misconception that software developers are locked up in a lightless basement and that they sit on their own and churn out ones and zeros all day. But that couldn’t be much further from the truth really.
Programming requires lots of interactions, not just with other software developers in your team, but also other teams in the wider business who are heavily involved in the development process.
Developers read each other’s work all the time, review each other’s work and it can be quite a high pressure job. Everything’s laid out on the table. When you write code and put it up for review there’s nowhere to hide. It’s all there.
So every single thing that you do is going to be inspected by others?
When you’re given a problem to solve as a developer, there are a million ways that you can go about solving it and there’s no concept of right or wrong. There are just approaches and some are better than others, and some are more conventional or mainstream than others, but every time a developer solves a problem, they’ll bring their own unique approach to it.
That approach will then be reviewed and criticised by one or more other developers who will of course have their own opinions about how it should be done and so on. That’s a challenge of the job that means we have to work really well together.
Then the output, that code, the finished product is going to be looked at by a tester in the team. They’re going to make sure that it’s working correctly and as expected. Then of course, the ultimate goal is that it serves the business. So you can do the best stuff in the world and the final check is that it adds value. Sometimes this is outside of your control, sometimes it’s not.
But yes, there are lots of things in play.
And in this process that you’ve talked about for you personally, where does the satisfaction come from?
I think for me, the satisfaction comes from solving all of the little problems along the way. We have to break things down because even small problems can be complex and have many moving parts.
And there are always lots of little challenges to get over along the way. And when you break through each one of those, that’s what keeps you going. I think the end result is always really nice and is a great part of the process, but as a developer, you are constantly coming up against the wall of errors and being shot down.
You think you’ve got something, you hit the play button and you find out that everything you thought was right wasn’t. And so when you get past all of those little bumps it’s really rewarding.
Tell me about something that you’ve worked on either at BaseKit or earlier in your development career that just turned out to be way more complex than it first looked?
We added an analytics tool to eCommerce and on paper, it was quite simple. We had to get some values from the database and present them in a graph in a nice way. We were using an off the shelf graph tool, which should have just done everything we wanted. It was free and a lot of the other options were quite expensive, so that was our primary choice.
It should have been a pretty quick and simple job. Get the data, put it in a graph, show it on the page. But as you know Gordon, the product is responsive and we need this to work across a variety of devices. It turned out that the graph solution that we had, and after doing some research, all of the others too, we’re lacking one feature, which is that when you resize the browser, all of the labels along the bottom should evenly space out and respond to the size of the page.
It became clear that I had to write a solution for this, and it turned into a very difficult problem. I don’t have much of a mathematics background, but I spent quite a long time that evening working on it. I accidentally discovered prime numbers and ultimately had to write quite a complex algorithm, which detected the number of items that could fit within the space that was provided, decide whether or not it was a prime number and then do a different conversion based on the outcome of that operation.
This took hours and hours to work out because I was starting from scratch. I just had this strange problem that was presenting itself in the data that was coming back and that’s one of many really.
What got you into software development in the first place?
I played the text game for Hitchhiker’s Guide to the Galaxy when I was quite young and I thought it was really cool. It was one of the coolest games I’d played and I decided I wanted to create my own version of it.
A family friend showed me a programming language called basic and that just opened my eyes, really. The idea that you could create something out of nothing and you didn’t need expensive materials or lots of training. All you needed was a computer and lots of people had them even then. So it was a world of opportunity and possibilities at your fingertips and quite empowering to be able to do.