Being a Pragmatic Programmer: The Pragmatic Philosophy

Part II

Saumya Rastogi
4 min readNov 25, 2019

This is the second part (Part I) of my articles related to what makes a programmer pragmatic. This article will focus on these 2 characteristics —

  1. Stone Soup & Boiled Frog: They tend to be a catalyst for a change
  2. Good-Enough Software: They understand the context in which they are working so that they can measure the goodness of the software they are building.

Stone Soup & Boiled Frogs

This is one of the most interesting stories I’ve ever read about in the field of programming.

Just to start with let me go you through the story quickly:

There were 3 soldiers, who are returning their home after a war. They were quite hungry so they reached a village in search of something to eat and kill their hunger.

But soldiers found the doors locked & windows closed because villagers are short of food and they want to hoard what they had.

Undeterred, the soldiers got an idea, they boiled a pot of water and placed 3 stones into it. Amazed villagers came out to watch what soldiers are doing.

Soldiers explained to villagers that this is a “Stone Soup”. One of the villagers asked soldiers that “Is that all you put in?”. Soldiers said — Absolutely, but some say that it tastes even better if we put in few carrots into it. After listening to this a villager rushed away returning with a basket of carrots.

Image Credits

A couple of minutes later, again a villager asked, “Is that it?”

Soldiers said — “Well, some couple of potatoes can further enhance the taste.” Again a villager rushed to return with some potatoes, to be added to the soup.

Over the next couple of hours, soldiers listed more ingredients that would enhance the soup, which makes different villagers ran off returning with an ingredient.

At last soldiers removed the stones from the soup, and they sat down with the villagers to enjoy the steamy soup.

Image Credits

Morals of Stone Soup Story —

  • Be like soldiers, act as a catalyst, bring people together to jointly produce something that couldn’t be achieved by you alone.
  • Try to generate curiosity in your team, to achieve a certain output like soldiers have done to villagers.
  • In the end, everyone wins. (A win-win situation)

Be a Catalyst for Change

But always remember the big picture — The Boiled Frogs

Its a metaphor for the inability of the people to react to significant changes/events that occur gradually. The Boiled Frog has 2 scenarios —

  1. Drop a frog into the boiling water, it will jump immediately.
  2. Place a frog in a pan of cold water, then gradually heat it up, the frog won’t notice the change in temperature and will stay there until cooked.

Moral — Don’t be like a frog. Keep an eye on the big picture. Constantly review what’s happening around you, not just what you personally are doing.

Good-Enough Software

The phrase good-enough doesn’t mean sloppy or poorly implemented code. All systems must meet their system requirements to be successful.

Normally while writing software for other people one should remember to get requirements from them. We should keep in mind that we’ve to ship software that satisfies the need for everyone involved in the system (end-to-end). We’re not advocating panic: it is equally unprofessional to promise impossible time scales & to cut basic engineering corners to meet the deadline. Rather the scope and the quality of the system are going to build should be specified as a part of that system’s requirements.

Make Quality a Requirements Issue

As an artist, if you paint a sketch and keep on adding details to the painting every now and then, then one day you’ll end up ruining the painting which you’ve started from scratch. So keep in mind that you shouldn’t end up spoiling a perfectly good program by overembellishment and over-refinement.

There are some more key aspects of a Pragmatic Programmer, which I’ve discussed in the following articles:

The Cat Ate My Source Code (Part I)
Software Entropy (Part I)
Knowledge Portfolio (Part III)
Communicate (Part III)

Inspired By: The Pragmatic Programmer — by Andrew Hunt, David Thomas

--

--