Sunday, October 16, 2011

The African Programmer and the Sun

I thought of calling this blog post "The Software developer and the Sun" but i feel that "programmer" fits better.
Ah ah ah ah….if you are one of the uninitiated and want to ask me what the difference between a programmer (also known as a coder) and a software developer is, you may want to look at this post
The essence of that post is captured in excerpt below:

"Therefore a programmer is a person who produces code, usually after some sort of specification. This is focused on a specific functionality.
A software developer is producing a solution for the customer, with a big focus on customer satisfaction."
My own way of saying the same thing is that the difference between the two is that while one fears the hot sun, the other more or less embraces it.
Picture this:
Emeka is a young hustling guy with above average programming skills who has hit upon this great idea. A web application that allows hungry customers place orders for food over the internet and have their food delivered to them by any one of the restaurants that are subscribed to use the system. Emeka gets to work putting the application together, after all he is an above average PHP hitman. After a month or two of Keyboard pounding, brain grinding and hustling around on stackoverflow, the app is finally ready. A customer can place an order, by filling a very intelligent form, submit and have his order pop up on the admin end where it can be serviced by the logged in staff from the eatery. Emeka pays up his hosting subscription and uploads his code, its time to start making money right?
Enter Onye Uta (the hater).
Onye Uta: em Emeka…not quite. There is that little issue of how the we are going to make money from this little caper of ours ,I think the white man calls it monetizing
Emeka: Duh! Customers pay for their orders and we skim off a transaction fee, the rest goes to the restaurant
Onye Uta:  Of course you are right…but what i actually wanted to know is how will they pay
Emeka: with their debit cards of course!
Onye Uta: Ah, most def. So let me get this straight, when the customer pays, the money goes to the restaurant and then they slice you your cut right?
Emeka: Hell to the Nizzle! The money goes to me and then i will settle them regularly , like weekly?
Onye Uta: Let me get this right, you are going to hold on to Tantalizers's cash and settle them when you (Emeka) will settle them? Who do you think you are? Nelson Mandela
Emeka: Well…..ok, the customer pays and then the money is split in realtime into our separate accounts, how does that sound?
Onye Uta: Hmmm that could work, but who would do the splitting? 
Emeka: The switch of course or the bank.
Onye Uta: Cool, will they do it for free? have you spoken with them?
Emeka: I don't know, haven't spoken with them yet but i….
Onye Uta: Which reminds me have you spoken with any eateries yet? How many of them have have internet connections in all their branches?
Emeka: No, well i haven't spoken with them yet, but come on, its a no brainer right? this is a one in a million opportunity. They should be able to get internet for it…..right?
Onye Uta: I can't see any reports on this system, if i am an eatery, how can i tell how many orders that have been serviced by my restaurant and for which month?
Emeka: (sulking) Its not there yet, but the data is in the database, i can always get it out…look why are you trying to discourage me ? you must be a hater
Onye Uta: (with a huge smile on his face) Of course i am hater…my name is Onye Uta, the hater

OK ok ok…i might have gone a bit overboard and been a bit too hard on Emeka after all he just built the app….right? 
But think about it. Our man has built an app that has all the basic functionality which in its own is no mean feat but has left out a few little things like nailing down the payment system, finding out how the restaurants (a key part of his value chain ) would prefer to engage and i am willing to bet that if you ask Emeka if he has built in a module to aid first level customer support his answer would be No or at best Not yet.
Why is this?
There could be a million and one reasons but the one i am willing to bet on is that Emeka has not stepped out of his cubicle to attend to some of these issues. Note that solving these issues is far from the most exciting part of Software Engineering ( if you are a software developer that is).
Take requirements gathering stage for example, it often involves endless meetings with lots of people who know everything about everything except software development. These people are usually located everywhere except your comfort zone and usually this means long hours in traffic ….under the hot blazing African sun…or rain.
One also has to leave the comfort of his cubicle when the time comes for you to run a pilot. Because the best feedback you can get comes from being out in the field (many times under the HOT SUN)
And even after you have built your wunder-product, there are partnerships to be built, most times if you are still relatively a small fry,  these partnerships will not be with men in suits, they will be with people in short sleeve shirts who sit by the cash register of their respective businesses and only check their emails the way they used to check their postal mails (once a week) if at all. So again you need to get out there and meet them on their home turf.
And when you finally get someone brave and/or foolish enough to subscribe to your product or service, its time to go back to your cubicle and watch the cash roll in right?….WRONG!!!  Thats when you should be out in the field, side by side with your users, feeling their pain and doing everything you can to alleviate it, especially if it is your first customer. Its not a time to use funky words like "Service Level Agreement", "Requirement Specs" etc etc. Its a time to listen to what the issue is and finding a solution as quickly as possible, many times that solution may have more to do with process than code. In some extreme cases thats when the real software gets written.
Now if you are part of a team or a small software company , your team mates could help take a lot of the load (maybe if you guys are nice to me i will do a post on the different roles in this game) but i am still an advocate of developers taking out time to visit the field as often as they can. If we are to agree with Eric Raymond  that a lot of the best software ever developed is the one that the developer built for himself or herself then I would add that the next best software is that which was developed with the user in mind
Guys, the sun is our friend, we need to get out more :-)


  1. Pretty true, no... it's the ugly truth

  2. Should I feel bad that I'm usually "onye uta?"

  3. Nice post Emeka. That is one problem I have seen with many Nigerian coders, they can code, but that is all they don't know business or anything apart from coding. There is nothing wrong in knowing just how to code as long as you are ready to work in a team. But most Nigerian coders work alone unlike in smarter ecosystems like Kenya where people work together and produce wonderful results.

  4. Thanks for a really good post. Sharing wide!

  5. @Nmachi: "Onye Uta"s are always needed. I think in Obodo Oyibo they are called the Devils Advocate. We always need people that will make use see things from all sides
    @Kingsley : That is the mentality that we should strive to break not just for Nigerians but for African coders as a whole

  6. Awesome post. That's the C++ truth. #hardCore

  7. A very good piece man, i could relate to the gist very well, and yes i play the role of Onye Uta many times cos i interface with the customers mostly...hahaha, waiting for your next article.

  8. Critics are most definitely necessary, not only to make you feel your idea is s**t, but also to make you know if its worth it or not! I'll rather work with an "onye uta" than with a "Jerry Gana" who will always be on my side!
    Nice post! So worth it!