Pragmatic meaning
Before discussing about pragmatic programmers, we must understand what is meant by pragmatics. Anyone can google to find out what is meant by the word “pragmatic”. But I’m trying to demonstrate what pragmatics really means.
Let’s just say someone asks us “What time is it?”.
Literally, the person is actually asking what time it is. So our response is to tell what time it is by answering “it is seven o’clock at night”.
However, pragmatically, the person may ask “why are you late?”. So instead of telling us what time it is, we explain the reason why we came late.
Or suppose someone asks us “can you give me that the bottle of sweet soy sauce?”.
Literally, the person is asking is it possible for us to pass the sweet soy sauce that is in front of us to him. So our response is literally to answer with “yes” or “no”.
But if we are pragmatic, we understand that what it really means is “shall we give him some sweet soy sauce?”. So instead of answering “yes” or “no”, we immediately give the sweet soy sauce to the person who asked the question.
So, what makes a pragmatic programmer?
Every developer is unique. They each have their own strengths and weaknesses. They each have their own preferences and dislikes. Over time, they create their own personal environment.
That environment will reflect the developer’s personality as strongly as his hobbies, clothes, and haircuts. However, if we are a pragmatic programmer, we will appear to have the following characteristics:
Early adopter/fast adapter
We have an instinct for technology and like to try things. When given something new, we can pick it up quickly and integrate it with all the insights we have. Our confidence is born of experience.
Have a very high curiosity
We tend to ask “wow your code is so clean. how do you do it? Do you have problems using the library? Then, how to implement it?”. You are a pack rat for little facts, each of which may affect some decision years from now.
Critical thinker
We rarely accept a task without being given a purpose for what to do first. When we get a task, then our boss says “this work must be done because it will provide solutions to many people”, we start to smell the task as a challenge.
Realistic
We try to understand the root cause of every problem we face. This realistic characteristic gives us a good sense of how difficult things are, and how long they will take. Understanding that a process must be difficult or will take a while to complete, gives us the power and the right calculations to keep it going.
Generalist
We strive to be familiar with various technologies and environments, and we strive to keep up with new technological trends. Although our current job requires being a specialist, we will always be able to move into new fields and challenges.
In addition to the four characteristics above, there are two basic types that make us pragmatic programmers:
-
Care about your craft
There is no point in developing software or applications, unless we do it with care and caution.
-
Think! about your work
Instead of thinking about being a pragmatic programmer, think about what we are doing today. Focus on the projects we are working on now. Never run on autopilot. Keep thinking, always critical of our work. Indirectly, we have applied the mantra of a pragmatic programmer: THINK.
Pragmatic individual in a big team
Some people feel that there is no room for individuality in large teams or on complex projects. They say “software construction is an engineering discipline. It breaks down if one of the team makes the decision for themselves.”.
This is simply not true.
The construction of software should be an engineering discipline. However, this does not hinder the expertise of each individual. Just imagine a museum that was built hundreds of years ago. The construction work was carried out by tens, if not hundreds of people, spread over several decades. Then the work is passed on to a different person each decade. The science in building the museum also develops every decade, so the workers who continue the construction have developed knowledge. Each individual of these workers can contribute with their individual abilities, without having to put aside their abilities as part of the team that built the museum.
The point is a continuous process
A tourist visiting the Bogor Botanical Gardens asked the gardener how he made the grass in the garden so beautiful. “It’s easy,” said the gardener. “You just water it every day, mow it every afternoon, and clean the dirt around the grass once a week.”
“That’s all?” said the tourist.
“Of course,” replied the gardener casually. “Do ten years and you will have a great garden"
To make beautiful grass in the yard like the grass in the Bogor Botanical Gardens, it requires quite a bit of maintenance that is carried out consistently every day. So it is with great programmers.
Consulting companies in Japan often use the word kaizen in their conversations. “Kaizen” in Japanese terms is a concept of constantly making small improvements. This is considered as one of the main reasons why the manufacturing industry in Japan has experienced a drastic increase in productivity. So the concept was widely copied all over the world.
Kaizen also applies to individuals.
Every day, we intend to work to increase the skills we have continuously, even though on a small scale. Unlike the grass in the Bogor Botanical Gardens which takes decades, we will see the results in a matter of days. Over the years, we will be amazed how our experience has improved and our skills have also improved so much from before.