Wednesday 11 May 2022

Ten Pieces Of African Wisdom In Software Development

In May of 2021, I got onto the Clubhouse app and encountered many interesting communities. One of these were the Africans. I went into a room under the club African Father in America, where they were discussing African proverbs, and I was hooked ever since.

What can I say? Cultural exchange is my thing, yo.

For real, though, some of the African proverbs discussed could fit very well in a software development context. It is a professional hazard on my part; everything I hear almost always gets fitted in a software development context.

Today, I have put together ten of these, for your reading pleasure.

1. The best way to eat an elephant in your path is to cut him up into little pieces.

Divide and conquer. That is almost all of software development these days. Software projects are too large and complex to be handled at one go. They have to be broken down into multiple parts so that multiple developers can work on them concurrently.

Elephant for lunch, anyone?

Even if not for that, this is still the default way software developers are trained - to break up a problem into smaller parts so that each part can be completed in isolation from the rest. This makes it much easier to measure progress.

In software development, projects are the elephant and software developers are the diners.

2. He who does not know one thing knows another.

This has never been truer in the world of software development, where what used to be different skills in one large discipline, have each evolved into their own discipline. Front-end, back-end, database management, DevOps - all these require a certain expertise that certain people have dedicated their lives to.

It is true for almost certainly all developers, that expertise in one discipline requires an equal lack of expertise in others. That is right and natural, and nothing to be embarrassed about. After all, who can lay claim to all knowledge, past present and future, in the rapidly evolving arena of software development?

A union of various experts.

Therefore, developer teams are made up of people who each are a master of their own discipline, yet know enough about other disciplines to form a viable cohesive unit with one another.


3. The hunter in pursuit of the elephant does not stop to throw stones at birds.

This Ugandan proverb speaks to the power of focus, and is one of my personal favorites. Developers work best when they are not distracted, when they are given space to focus all their attention on any given task.

Get that elephant.

Any interruption, professional or otherwise, results in the developer losing his or her train of thought, and having to pick up where they left off after the interruption. And often, this is easier said than done.

When a developer is in the zone, they should not be disturbed if at all possible.


4. It is best to bind the finger before it is cut.

This saying comes from Lesotho, and it reminds me of all the preemptive efforts made by software developers - in the form of defensive programming - to forestall any mishaps that might occur in the code.

Preemptively
binding that finger.

Null values are checked for. Zero values as well, in case one has to perform a division operation. The upper and lower limits of a piece of functionality are defined. Assumptions are documented and later confirmed.

All this seems like a major pain in the ass. But it is a necessary pain in the ass. Because being caught out by elementary errors can be more costly than if they were nipped in the bud from the get-go. Every software developer knows this.

5. A person who has not secured a place on the floor should not look for a mat.

Nigeria gave birth to this proverb, and it is a reminder to software developers, especially recent graduates with little experience, to pay their dues.

If you want to sit here,
earn the right.

You cannot march into a project which you have little knowledge of, without understanding the intricacies of the interconnected parts or the problem statement, and assume you know better than those that have been working on it.

You cannot be freshly graduated from school and expect seasoned developers to give you the same deference they would give their peers. If you want to be treated as a peer, you have to be a peer. And that involves doing the work, staying humble, and learning as much as you can.

Hubris is often touted as a virtue of great programmers, but it can also be a fatal flaw.

6. You learn how to cut down trees by cutting them down.

As a software developer, I discovered the essence of this Bateke proverb the hard way. You learn by reading, by listening, and most by doing.

Mastery of cutting trees.

The willingness to pick up a book or watch a tutorial cannot be discounted. It is a step in the right direction. But these things take you only so far, and in order to truly learn software development, nothing beats having actual hands-on experience. Tinkling with the database. Writing the code. Configuring the platform.

This applies not just to software development, of course. Almost every skill you wish to pick up should involve actually doing them.

7. Don't think there are no crocodiles just because the water is calm.

This piece of wisdom from Malawi tells us that hidden threats are rife and plenty. Bugs in software are not always readily apparent. Just because the system performs as expected now does not mean that it will perform as expected in another environment.

Some bugs are terrifying in the sense that they do not truly manifest until the software is in actual use. And by that time, fixing the problem can be expensive in terms of both time and effort.

Terrifyingly calm waters.

Therefore, when writing software, we should treat our product as the water, and potential bugs as the crocodiles. Always assume the worst, and prepare for it.


8. You have little power over what's not yours.

From Zimbwabwe, we have a reminder not to worry overmuch about things that are out of our control.

Software developers are obsessed about control in our working environment. Control over the environment is what is required for things to run smoothly. Within the systems, certain variables can be nailed down. Limits are imposed. Checks are carried out. The final product is functional and efficient, at least from our point of view.

You can't control
everything.

Outside of the system, however, users act in unpredictable ways. And it is a constant source of frustration if a developer has not come to terms with this fact of life.

Thus, exercise control over what you can control, but learn to live with what you cannot.

9. The axe forgets but the tree remembers.

More wisdom from Zimbwabwe. The purpose of this saying is to remind us to be careful of how we treat people, because casual cruelty on our part may be forgotten by ourselves, but the scars will stay on in the memory of the victim. This, at first glance, has nothing to do with software development.

However, if we take the tree to symbolize the code base and our code commits to symbolize the axe, it is now easy to see the parallel. Sloppy code may be written in a hurry and is soon forgotten among the numerous things we have to accomplish within time constraints, but the code base bears the scars. And sooner or later, that technical debt has to be repaid.

The tree won't
forget this.

It is dangerous because whatever we do to the code base, given enough time, will be forgotten. And when the time comes for us to revisit what we have done, it could be very difficult to remember the thought process behind that particular "axing".


10. Don't be so in love that you can't tell when it's raining.

This proverb hails from Madagascar, and it is about the dangers of blind passion - when one is so in love that they cannot tell when the situation is dire.

Be careful; it's raining.

In software development, one can have a case of tunnel vision from working too long on a project. This can lead to blind spots, especially if we are so enamored of an idea that we refuse to consider sensible alternatives, or acknowledge glaring flaws in the plan.

One minor example would be being so attached to a certain framework or programming language that you are unable to see that it is unsuitable for the work at hand. A good software developer is not enslaved by his tools.

Conclusion

African proverbs are fascinating, aren't they? Especially when you consider that, once translated, they really are not all that different from the proverbs we hear in our own languages. Our ancestors may have come from different places, but they appear to have had very similar ideas.

Pursue that elephant, and don't forget to cut it up into little pieces!
T___T

No comments:

Post a Comment