Configuration-over-coding is the new buzzword. You don't code, you just configure to make a system work as per your requirements. Sales folks repeat that ad nauseam to create a new reality where code is a distant entity. Customer expectations, because of the hype, sometimes go to extremes.

Once I had to face - rather encounter - an over-optimistic customer, who had added a new line in "config.ini" like this:

NO_OF_THREADS = 4

The product we had built had an automatic thread management system. We had not put any parameter of that name in the config.ini file. The customer invented it, added it to the configuration file, assigned a suitable value to it and expected the product to read his mind through those words and behave accordingly.

A configuration file with lots of pre-defined options is like the menu of a buffet. Even though all the dishes are available to you simultaneously, each one took a long time to prepare. The master chef synchronized it all.

Now imagine this. You walk into a restaurant. Ask for their buffet menu. Write "Chicken Pepper Fry" in the "Starters" section. Return it to a bewildered server. And you expect the dish to magically appear on the buffet counter.

Trust me, so-called non-technical people in the technology world keep doing such stupid things every day.

Anyway, we techies have our own burdens to carry. In this article, we will see how tedious it is to implement even a two simple configurations to a kindergarten program.

We have a program which prints "Hello World!"

In Python it is:

print("Hello World")

Just a line it takes; Fine?

Now you have a customer called Mr. Moron, who wants to pay for that program and wants to configuration options to be included in that "program".

What are those?

  1. CASE
  2. END
The first one would have the following options:

  1. LOWER
  2. UPPER
  3. PROPER
  4. SENTENCE
The second one would have the following options:

  1. PERIOD
  2. EXCLAMATION
  3. NOTHING
When put on a chart, it looks like this:

So, you might have 12 combinations. And for each of those you have to write code.

That is the tedious part of product engineering. Even if there is a slim chance of someone asking for strawberry chocolate ice cream, you need to stock that! In the chart above, we have one such example: "LOWER - PERIOD". Who wants to write something in all lowercase "with" period? Or, for example, "SENTENCE - NOTHING"? You take the pain to write something in sentence case only to leave it with no punctuation mark!

The point I am trying to make painstakingly is that when you design a product, you do not decide certain things. Customers have to be given the privilege of taking control with choice, option, and usability. After all, it is for them we take so much pain to build software products. When they did not exist, we used to turn to the black character mode terminal for everything.

Before I end this article, I would give a nice, little solution to the problem stated above.

Here you go: