Albert Einstein once said that the definition of insanity is doing the same thing over and over again and expecting a different result. With that idea top of mind, let's talk about software rewrites. What the EFF is up with software rewrites! Our industry is insane.
Let me tell you a story. About five years ago, I worked for an e-commerce outfit that relied on a boxed storefront product. For reasons that I never fully understood, the leadership of the company decided to rewrite the system from scratch. Leadership recruited a crack team of elite techies for this important work. They toiled away for over a year. It seemed like a lot of work was being done with very little to show for it. But they were an elite unit, and we were assured that all would be well, eventually.
During that year, feature work slowed to a trickle and the business grew anxious. The non-elite team members, myself included, anxiously waited on the sidelines for deliverance. At long last, the new platform was unveiled and there was rejoicing in the land. Well, I left that company shortly after to work at a mar-tech startup. After a couple of years of putting out dumpster fires, I returned like a prodigal son to the company where elite techies rewrite software from the ground up. And guess what? Remember that software that the company spent millions to rewrite? Well, when I returned, they had just kicked off another rewrite of the same system. Yes, this company rewrote the same system twice in three years.
Remember, the definition of insanity is doing the same thing over and over and expecting a different result. Sadly, this particular form of insanity is very common in tech. Imagine if you redesigned a new car from the ground up every time your current car got a flat tire. That's how crazy things are. The question is why? Why is it thus? We're supposed to be smart. Why do we do such dumb things? Well, remember back in episode five, I talked about the latticework of mental models. Well, I'm about to lattice some mental models up in here so hold on to your hats.
Sociology. Techies can learn a lot from sociologists. Maybe you've heard of the Broken Windows theory, this sociological theory was first advanced in an Atlantic article by James Q. Wilson and George L. Kelling. Here's an extract from the article. Social psychologists and police officers tend to agree that if a window in a building is broken and is left un-repaired, all the rest of the windows will soon be broken. This is as true in nice neighborhoods as in rundown ones. Window breaking does not necessarily occur on a large scale because some areas are inhabited by determined window breakers, whereas others are populated by window lovers. Rather, one un-repaired broken window is a signal that no one cares and so breaking more windows costs nothing.
And that, my friends explain why the industry is plagued by so many software rewrites. Think of all the companies in the industry as neighborhoods. Some neighborhoods are occupied by people who can't walk by a broken window without fixing it. Why do they fix the window? Because they care. Well, why do they care? Because everyone else in the neighborhood cares. Intact windows are a social norm in these neighborhoods. And every time a broken window is repaired, the norm is enforced and perpetuated.
Well, what happens if you walk by a broken window without stopping to fix it? Well, that sends a signal that you don't care. And if you don't care, then why should anyone care? And if nobody cares, then pretty soon the entire neighborhood is marred by broken windows. Eventually, the neighborhood becomes unsafe, property values plummet, and the people who do care move out, leaving the neighborhood bereft of the only people who could actually save it.
Rewrites are the norm in our industry. Despite the waste expense, anxiety and massive opportunity cost, rewrites happen all the time. The question is why? Well, the broken windows theory provides the answer. Here's the deal. If you rewrite your tech, but you don't upgrade your people, you will have to rewrite your tech again and again. Because you don't actually have a tech problem, you have a people problem. And until you confront that, nothing will change. That was the mistake my former employer made, they invested millions in new tech but invested nothing in the people or the culture. It doesn't matter how shiny and new the tech is, If the people in the neighborhood think it's okay to walk by a broken window, well, then that tech isn't going to be shiny and new for long. Nothing lasts where no one cares.
Companies and teams that won't tolerate broken windows are few and far between, but they exist. This type of company rarely falls into the rewrite trap. They don't have to because they never let things get so out of hand. That sounds awesome. What's the secret? How's this for a start? I've witnessed or been part of many rewrites in multiple contexts, SaaS startups, Fortune 100 companies, banking, insurance, healthcare. The common thread is that companies that do rewrites invariably also have caste systems. Remember that elite squad of techies tasked with rewriting the e-comm platform? If you can only trust important work to a small group within your overall team, well, you have a caste system. And in a caste system, the low caste people are disenfranchised. They're not part of the thought leadership. They're forcibly marginalized. They know that they are perceived as liabilities. So they don't care about broken windows. Why should they? All intellectual property belongs to the upper caste. If you belong to a low caste, you're basically a renter, and a broken window is someone else's responsibility.
So let's take stock. Are you burdened by crap code? Allow me to suggest that you don't have a tech problem, you have a people problem. Rather than undertake a costly, distracting, and expensive rewrite, perhaps it makes sense to work on your culture. What would it be like if everyone in your neighborhood could be relied upon to stop and fix a broken window? Well, the biggest benefit is intangible but enormous. Neighborhoods without broken windows attract and retain the kind of people who can't stand broken windows. Imagine what you could do with a team like that.
I've been grappling with a provocative question, and I'd like to close this episode by sharing it with you. The question is, does it ever make sense to build a shiny new building in a bad neighborhood? The cynic in me believes that it does make sense...only if you don't have to live there.
I'm hiring software engineers! Check out the jobs page to see my open positions.