Tagged: architecture

Not a decision

This article is a translation from the French original post on Arolla‘s blog.

Risky Business Insurance, IT silo, Friday 9pm, meeting room Bob Ross

— Pluto Krath: We won’t come back to this, we already decided we wouldn’t use a database.
— Nadia: We had no idea we would need to navigate data that don’t fit in memory. If we don’t have a database, we will need to re-implement everything we need to do that from the disk: indexing, relational queries, execution plans, serialization… If we hadn’t told we would use a database, you wouldn’t even have noticed.
— Pluto Krath: No, we decided we would only use the memory and the disk, and that’s what we’re gonna do. Implement everything you need. And don’t forget I need the minutes for this meeting by Monday morning.

Pluto Krath’s office, 9:45pm

In the last illuminated office, Pluto was sending the most urgent emails before the weekend. He suddenly realized David Hasselhoff was sitting in front of him. He looked at his Sharknado the 4th awakens poster, missing one character, then back at David.

— Shut you mouth, blink. 
— But how… 
— Don’t change subject. So you just kicked back Nadia. Are you proud at least?
— It’s not that simple. We needed to take a decision, and that’s what I did.
— Oh the dirty word. A decision. Don’t use vocabulary for grown-ups. What options did you have?
— What do you mean? Oh, well, use a database or re-implement everything from scratch.
— That’s it? Wasn’t it you, plastering and quoting Virginia Satir’s rule of three: to have one choice is no choice, to have two choices is a dilemma, and to have three choices offers new possibilities. Where’s the third choice? I can easily think of a dozen.
— OK, I can find more. But what for? We can’t use anything we wouldn’t build ourselves.
— You’re right, let’s tackle your assumptions. What makes you think you should build everything by yourself?
— Because we can’t afford a license for an Oracle database. If we go there, I’ll have to deal with Mickey and his team of DBAs, and he really wants me out of his career.
— Well that was something. Unverified assumptions, not even shared with your team. Starting with your first assumption, once again: you only have two options. Aren’t there free databases? Is the relational model the best option for your context? Can’t you find indexing libraries that could prevent you from reinventing some square wheel? Would these solutions force you to deal with Mickey?
— I got it, there were other options, and we didn’t explore all of them. Whatever. We don’t have the time, the decision is taken, we’re moving forward.
— Oh yeah, I almost forgot the master of all options: waiting. Why take that decision now?
— That’s the way it works! We move forward with decisions, action plans, concrete stuff. How do you want to build a house without foundations?
— And you call these foundations. You’re doing meetings! You haven’t invested or implemented anything. You have nothing to modify. That’s what thinking is good for: as long as it’s ideas, it doesn’t cost a cent to change your mind. “Foundations”… You work at a company managing risk. Can’t you find someone who can explain you the value of an option? There is nothing more valuable for your product right now. You should cherish your options. Not kill them without reasons.
— So you want our specs to be bundles of dead ends. How do you want us to synchronize with the rest of the company if you don’t freeze anything?
— I don’t want anything. Let me remind you I’m only in your mind. You might even be sleeping. You’d better spend time with your family. Instead, you’re wasting your youth arguing about specs. Another way of saying you want to freeze reality inside your fantasies. For now you only need to generate options and explore them, and you’re doing the exact opposite. You can be sure the best solution is not the ones you see today. And it’s definitely not to cut other options today.
— Should we code disposable prototypes? Throw code away?
— Here you are, you’re considering options. You’re even thinking about ways to limit the cost and blast radius of experiments. We’re getting somewhere. Of course it’s time to cope with real constraints. Have you ever seen a product developed in meeting rooms? When I see you try to look like pros in stock photos, you look like your kid playing at tea parties.
— But how will we know which solution to choose?
— And here is the light. Congratulations Pluto! You’re wondering what all this is good for. You’re on the right track. Some paths will be dead ends, others will spawn new ideas or new problems to solve. However, the solution you will adopt will probably be none of the ones you’re considering today. It will be a mix of what you know now and the knowledge you’ll gather along the way. You already made the main progress you needed, by wondering why. Once you understand the problem, you’ll be able to consider conditions of success or failure for your experiments. Did you feel the click? Your might have aches between your ears tomorrow morning. It happens when you use new muscles.
— Fine, we’ll talk about that again.

Pluto was so impatient to send his mail to Nadia, he didn’t even notice his poster got all his characters back, and his neighbor was gone.

Random comments

Let’s show empathy. If people like Pluto fantasize about Capital Decisions, it’s probably because they’re not equipped for uncertainty. We never learned models helping us be comfortable with uncertainty. We always had to know. And a good way to predict the future is to force it, even in arbitrary ways. Thus the need for decisions. Decisions allow us to take further decisions. Therefore, the best way to get out of that spiral would be to help everyone understand little bit less deterministic models, like cynefin.

Many teams suggest to maintain a decision log. Because of a bad lazite, I never had the occasion to practice this, but I think it can really help organizations, by offering an objective knowledge base to workaround cognitive biases. You need to find a common format for your decisions, for example by stating the problem to solve, options, assumptions, reasons to choose, expected results, anticipated risks, etc. A decision log allows evaluating past decisions, and improving decision taking. Internet is full of templates and articles. Go on and discover the topic, like I would discover it if I started implementing it.

Judging a decision is independent of its results. You can take a great decision leading to disastrous results, or stupid ones and have great results. Every decision is made in an evolving context.

There are several tactics for taking decisions, like:

  • HiPPO (Highest Paid Person Opinion), where the boss decides. You’d better have a boss who is smart all day long, and who has all the information.
  • Consensus, where decisions are not taken until everyone agrees. It requires more time and energy, and decisions tend to be more, well, consensual.
  • Consent, where you only need nobody against the decision. In this mode, you’d better limit the blast radius of your decisions.
  • Anarchy, where everyone does what they want. To keep some coherence, you need the system to be clear enough to align everyone.
  • These methods can be applied by representative minorities. Representatives should really be representative, and information must flow well and massively in all directions.
  • I almost forgot voting. Voting engages all participants, and frustrates losers. By merging reasons to vote against a decision, a pure vote hides those reasons. You can manipulate elections by choosing a voting method.

I prefer the consent by default. Other people have other preferences. Anyway, just be aware that your preference, or your organization’s, are not the only options. And of course, it depends. To get deeper, have a look at David Market’s delegation scale, Management 3.0 by Jurgen Appelo, or holacracy.

Take a step back and look at your decisions, you won’t regret it. What decisions did you take recently? What decisions were taken for you? What were the options? Couldn’t it be postponed? Do that exercise, and you’ll discover possibilities your weren’t aware of.