How to simplify your technical organization, and accidentally ruin it
Normalization isn't just for databases
Your software and organization should be beautiful inside and out. Like an Apple computer, you should see a mix of solid engineering and design at every layer. These computers are famous for being beautiful even after you open them to look inside, which voids the warranty, and good luck getting someone to help you after that, and don’t read biographies of the former CEO, and don’t look too closely into human rights concerns related to how that computer was created. I guess their software isn’t exactly known for being stable or easy to work with either.
Anyway, something can be beautiful at all levels.
As your organization grows from a small group of people into a large group, adding staff and even buying smaller companies, you will reach a size where you start to see odd differences. It starts to feel like a house with multiple families living in it, and as you walk from room to room, you see decorating differences and furniture that you wouldn’t expect.
But within a software company, these differences can cost money. One group uses all Unix-based tools, and all the developers are running Linux. Another group is a Microsoft shop that uses Wintel Lenovos (people at a Microsoft shop always love to say Microsoft shop, other shops do not). Your production infrastructure is all over the place, as you might imagine, and you can’t even look at the deployment pipelines without starting to sweat.
This starts to bother you a bit, but you aren’t sure you want to force everyone to use common tools, as this seems like a large amount of rework to keep things simple. But one day, someone from accounting, very well-dressed, sends you an email (you can hear the wardrobe in the word choices). The email talks about cost reduction and points out these differences. They ask questions:
Why are we paying for four different types of this type of tool?
We bought them; why are they still doing things their way?
Wouldn’t it be easier if we were all on the same page, reading the same sheet of music?
And you think about it. Then think about it some more. You find out this person is Very Important and reports to the CFO, and that cost reduction is not just a phrase but a Company Goal for This Quarter Which Affects Your Bonus. So you think about it until you think it is a good idea, even though you know that perhaps it is not.
And then you get to work to search for what you have two or three of that maybe you could get away with only one. Like database management tools - people are using a long list of them. Or file comparison tools. Or sprint management systems. Or computers. Why do some developers get Macbook Airs and other Macbook Pros? Why do some get Lenovos and some these old-ass Thinkpads they purchase off eBay and then expense? Aren’t they all running those Docker containers anyway? Or WSL on Windows and VMWare on Macs? What about that one group that all have frame.work laptops, beards, and really strong opinions?
There are some large savings to be had from just normalizing things. You can hear your bonus growing.
So you talk to a trusted staff member about these changes, and they get a look on their face that normally means they have just realized they have food poisoning while on vacation. But you tell them all the reasons you came up with that this is a good idea (you wrote them down on a notecard so you would remember). Then you tell them the CFO wants it, which might alter their bonus, so they get on board.
Starting next quarter, all developers will get one laptop picked by an accountant and use one tool they found that connects to SQL Server, MySQL, and some of the NoSQL things. All work is now tracked in JIRA; you can convert your backlog if you want, but make sure to use this standard form when doing it because all the same required fields need to exist for each card. This is so the Global Process can be followed by all teams so that we can all be on the same page and save money.
Now it feels like just one family is living in the house. Consistency is beautiful. Life is simple; you save money, and things feel normal again. The computer is beautiful inside and out. At least until the resignations start.
Paid subscribers view additional commentary about this post, with links to useful resources on this topic. If you are reading this and thinking, “well it depends,” or “this is a gross oversimplification,” or “what an idiot,” then you might be interested in Additional Commentary for this post.
First!