Pitfalls of a polymath programmer

I’ve talked about how a polymath programmer can greatly benefit any software development team. So, what’s the number one advantage of being a polymath programmer?

Polymath programmers are skilled at many programming related tasks.

But do you know the number one disadvantage of being a polymath programmer?

Polymath programmers are skilled at many programming related tasks.

The story of that fateful day…

It was a morning like any other. The sky was a soft blue, the morning air crisp with a hint of the Singapore afternoon heat, and I was friggin’ tired from the programming frenzy the night before.

I reached the office, greeting people along the way, and sat down in my office chair. The subtle difference? There’s no one in a 5 metre radius from my seat for the entire morning.

By a fluke of coincidences and emergencies, all the members of my team were not around. I would be the lone contact, the singular representative for matters directed to my team for two whole days. Some of you might think, “Wow! Power! Command!”.

No such thing.

My team was already small in size, so each member begun to take on more specialised areas of the team’s effort. I’m primarily in charge of most web application development, as well as a few complete systems, a few servers, software installation… anyway, I’m in charge of a lot.

What happened? Like a uncanny manifestation of Murphy’s Law, things started falling apart rapidly on my first day alone in the office. Users started to barrage me with requests and queries. Programs started to fail for the most unfathomable reasons.

Being the sole point of contact for my team members, the users who usually bug them, now bug me. They started with the innocently enough “Hi Vincent. I sent an email to so-and-so, but he’s not around. His out-of-office autoresponder email says to look for you. Can you help me?”, which escalated to the “You. Clear data. Now”

For the entire day, I did everything that my other team members would be reasonably expected to do on a normal work day (serendipities, misfortunes and all). This was in addition to what I would do on my normal work day. Programs failed, files weren’t sent, so I debugged C programs and shell scripts. A user asked for web application assistance, so I helped. Some users got new computers four times better (hard disk and RAM) than mine, and they’d be positively unproductive without the software programs developed by my team, so I went to install the programs.

Because I knew enough of my team members’ work, I filled in their shoes and covered for them. It didn’t make it right or wrong. It was just unfortunate. I was plug-and-playable, and that day pushed that quality to the limit.

It was a very tired and dejected man who stepped out of that office in the evening. That man used every ounce of whatever energy’s left to write this post too…

Just because you can do everything, doesn’t mean you should.

Path of a Polymath Programmer Part 1

What is a polymath programmer? First, you need to know Merriam-Webster’s definition of a polymath, who is

a person of encyclopedic learning

Wikipedia says a polymath

may be a person who knows a great deal about several fields of study, a person who has proficiency and competence in multiple fields, or even a person who has excelled in multiple fields.

And to answer the very first question:

A polymath programmer is a person who has proficiency and competence in many programming related activities or tasks. More importantly, a polymath programmer can apply knowledge and expertise from non-programming fields to programming.

After reading the above definitions, your first thought might be, “Oh, a jack of all trades”, followed by “and a master of none”. There’s actually a third line to the phrase, and is particularly important to programming.

A jack of all trades
And a master of none
Though ofttimes better than master of one

In fact, being a master of only one programming skill will get you fired faster than you can say “Sacrebleu“. Technology moves fast, and by the time you understand a new language or technique or concept, another one is invented. If you can’t keep up, you’ll be left behind. Doing one thing well isn’t enough anymore. And this is particularly true in our programming field.

What you need is a broad and stable base of knowledge and skills to support you when you travel the shifting sands of the IT landscape. This base of knowledge must be relatively impervious to change, so you need minimal learning time when a new change is invented. And this is why a polymath programmer will thrive, while the average programmer strives to survive.

So how do you become a polymath programmer? I don’t believe there’s one true path to becoming one, but I can guess. Let me start by asking a question. Have you noticed how some physicists and mathematicians make better programmers? They aren’t any better at programming than regular programmers. In fact, some mathematicians write code that’s an abomination to even look at.

So what’s the secret? They can think. And they have an insatiable curiosity about the world around them, whether it’s related to their field of study or not.

Now let me tell you my journey of becoming a polymath programmer. I have to tell you that it didn’t happen overnight. In fact, it took years. And I didn’t even realise I was slowly becoming one.

It started when I was maybe 9 years old. I remember learning and memorising the multiplication tables. I also learned to play chess, Chinese chess and checkers.

I read voraciously. I adventured with Tin Tin, met characters of Enid Blyton, sleuthed with the Hardy Boys and solved mysteries with Encyclopedia Brown. My parents bought me an encyclopedia set, and hours passed by as I browsed through the books, particularly the ones on science and mathematics. The Norse and Greek gods also provided me with tons of legends about heroes and villains.

I also remember this fascinating story explaining why the earth was bountiful for about 6 months only, because Persephone ate 6 pomegranate seeds given by Hades, so she’s forced to stay in the underworld for 6 months. Persephone’s mother, Demeter, the goddess controlling seasons, wept whenever her daughter went underground, and thus the unfruitful and harsh seasons of fall and winter.

Great, but what does all this mean for you? It fires up the imagination, and as Albert Einstein says, “Imagination is more important than knowledge“. You’ve got to be able to imagine and visualise a problem before you could solve it. Then you’ve got to imagine and visualise a solution before you could distill it into programming logic, and subsequently into code.

Then came the part that might interest you more. I got a toy computer. Yes, it was a toy, because my parents bought it from Toys R Us. The other programmer geniuses I read about usually had some ancient artifact of a computer like an XT86 or something. I still got an XT86, but that was later on.

Oh yes, back to my toy computer. It had the standard keyboard. No mouse. And a one line output screen. No graphics. Its play functions included

  • questions and answers about general knowledge, math and science (amongst others)
  • games like hangman
  • typing practice

And the most significant one of all? It included a BASIC compiler! Not that I knew what a compiler was then. I was just ecstatic that I could print a “Hello World!“. I pored over the instruction manual, learning all the BASIC commands listed. I learned the concept of commenting by starting a line of code with REM. I learned that numbering the lines of code makes the code run in sequential order. I questioned the practice of numbering in multiples of ten, even though BASIC code ran perfectly fine so long as the numbers were in increasing order.

Then something happened that jump-started my learning process. There was a book fair in my school, and as I browsed through the offerings, I found and bought two distinct sets of books. The first set included 3 (I think) books called Dragon Warriors, a series of role playing games (RPG) with instructions on playing and game mastering. The second set included a few books from the micro adventure series, where you play Orion, an adolescent secret spy whose area of expertise was programming!

How did those two sets of books propel me towards being a polymath programmer? I’ll tell you more in the next part of this series of posts. … Alright, fine, I’ll give you a preview. Both sets of books wove story plots, game problem mechanics and code tuning/tinkering together.

See you on our path to becoming polymath programmers!

Continue to part 2