This week on Ship It! Gerhard talks with Ian Miell, author of Docker in Practice as well as Learn Git, Bash, and Terraform the Hard Way. They talk about being comfortable with the uncomfortable, focusing on the tech while keeping a holistic view of the business. Following the money flows is key. Ian explains this concept really well, and Gerhard feels fairly confident you will be better off if you pay attention. Let us know in the comments!
Ian Miell: Sure, yeah. So I was aware that when we called this “Follow the money”, that it would sound like I was saying “Hey, you should get all the money you can as an engineer.” And that’s very much not what I’m saying… Especially when I mentioned that I worked for banks, it really sounds like I was money-grabbing. So I wanna make that clear from the outset - what I’m talking about with “Follow the money” is that… So as I mentioned, I worked in a very narrow domain, and the economic model of it was really simple; so simple it was invisible to me. So customer wanted thing, customer had platform, customer paid licenses. Customer wanted thing, customer had time and materials, and customer paid for ongoing support and maintenance. That was the model.
I didn’t think about this too much as a significant thing, but then we tried to convert to being a product company, and failed. There were also reasons we could argue about, about why that failed… But I took that experience, I had my ideas about we used the wrong technologies, or we had the wrong culture, or whatever. I took that experience and then I went to Barclays. And I’ve found that there it was far less about the technology and far more about the organizational. So I became less interested in technology, because there were better and worse technologies for any given situation… But really, what causes success or failure in these organizations is the structure of the organization, and so on.
There was a common meme when we talk about DevOps and we talk about software engineering development, that when you’re young, you think about tools. “Should I use Go, or should I use Java, or should I use Ruby…?” And people really focus on that. Then the wise old person says “No, no, no. It’s not about that. It’s about team organization, and agility, and so on.” So you get to thinking about these things. And then the slightly older person says “No, it’s about culture.” And then I’d find the conversation just stops. Like, people just say it’s culture, and you go “Okay, it’s culture. Now what? How do I change a culture?” And this got me thinking – you know, I was one of those humanities students. I came to software when I was 25, when I wanted a different kind of career. And as a humanities student, I studied modern history; I obviously read about Marxian ideas, and one of the Marxist ideas was the material base, the kind of structure of material exchange in capitalism, and so on, ultimately determines the superstructure, which is culture. This is kind of where my mind’s been going recently, because I’ve been involved in various projects where we’re looking at why things are struggling to happen, and we uncovered that the business thinks of things in a completely different way than the engineers.
[28:04] The engineers think of a platform as this continuously engineered product, and it needs constant investment, and this investment is repaid over time, and the more you build it and the more you automate, the more you get as investment over time.
But some organizations are still in this very transactional “I pay for something and then I have a thing”, and then that’s it. So getting them to think in this kind of continuous investment way and selling something that isn’t just “Oh, we had ten engineers working for a month, and therefore it costs X”, we have this thing that is of value to you, and this is of this much value, and we have to invest in it to maintain it. This kind of way of thinking comes ultimately from the way companies run their accounts, is my hypothesis. And in order to really debug an organization and why it’s struggling to move to cloud-native, or DevOps, or whatever, you ultimately end up back with accounts.
I saw this in banks, to some extent, because we were building a platform that was consumed by the rest of the business, so it was like a product, but there was actually no way for us to be paid internally for that. So we had - I don’t know how many teams - many, many teams using this platform, but the ones who were using it more than others weren’t necessarily paying more. It was very opaque; we couldn’t actually get to the bottom of how the money was moving around. And actually, the whole business was structured around yearly review cycles, yearly accounting cycles. You couldn’t say like “Oh, we have a new version of this product and we need to invest in previous cycle.” It’s like, “Well, that wasn’t in the original budget for the year.” So you can’t be agile when you have to think in yearly cycles. You just think “What are we gonna do this year? We need to get the budget for this year.” It doesn’t work where every three months the number of people on our platform is doubling, but we had no more budget to support that, so we had to borrow, beg and steal money from other bits.
These are all questions that make me think “Oh, you know what’s at the bottom of this? It’s how money moves around in an organization, and why money moves around in an organization.” If you can sort that out, or at least get that aligned with the way you want to work, then suddenly things can move much faster. Organizations that are built from the ground up as microservices typically have a different cost structure. They allocate money to teams, and they’re responsible for products.
I spoke to my CFO where I work at Container Solutions and he said “Yeah, there’s this whole thing called agile accounting.” And he was a big fan of it. He turned me on to a couple of books on the subject… It tries to overthrow this yearly cycle in favor of continuous accounting… Because that’s familiar to us, right? Continuous accounting, continuous software.
So there must be a Conway’s Law type thing here, which says that the organizational structure determines the tools and technologies you use, but what determines the organization structure? Well, one way to look at it is the financial structure. How does money move around? So you get this thing of like – you’re always getting back to money. So this is why I say “Follow the money”, because if everything is working fine, you’re getting the resources you need to do your job properly, and then it’s invisible; you don’t care. But when things are going wrong, it’s like “Well, I’m debugging…” We did the Five Whys exercise with our customer recently. It was like “Well, why can’t you allocate someone full-time to this platform?” And they said “Well, we can’t do that because they get pulled away.” “Why do they get pulled away?” “Well, because we have other projects.” “Why do you have other projects?” And we kind of went around in circles, and then eventually we got to “Oh, because your time and materials company, and you think of things in terms of built, finished, done, and not in terms of “Oh, this needs to be continuously maintained.” So the senior management are saying “The platform is finished. Why are we still talking about it?” It’s like, “No, that’s the wrong way to think about it.” It’s in the accounts is the thing and now it’s depreciating. We finished it. It’s built.”
[32:06] Once we go back to that, someone else pointed out - someone very experienced pointed out and called it. Accounts are very used to the idea of investment. If you buy a warehouse, they understand that you buy the warehouse and you have to maintain the warehouse. Amazon don’t just buy a warehouse and then think it’s done. They buy a warehouse, big expense, and then they say “Right, there’s gonna be some ongoing expense here, as we need cleaners, we need janitors, we need security etc. Or we need to rebuild a part of it, because the products we store in them have changed.”
This is all not new to accountants, they understand it… But we don’t talk to them. As engineers, we’re scared of – maybe I speak for myself, but it’s a bit like when people talk to us, they suddenly get these jargon words, and we’re like “We have no idea what you’re talking about.” It’s like for us when we get to accountants. They start talking about tax deductions, and things we’re not that interested in necessarily… And it’s very technical. But if you get someone who wants to work with you, it can be completely eye-opening.
I remember learning about the difference between cap-ex and op-ex, and I was like – suddenly, it makes sense to me why the cloud has taken off, because it’s treated differently from a tax point of view and a spending point of view. Suddenly, cloud makes a lot more sense.
So I haven’t formed this into a coherent theory yet. There’s still some thoughts sort of flying around in my head, but it’s something that I’m super interested in exploring more.