Monday, April 1, 2013

No Techies on the front page

I remember sometime in September 2009 when news filtered out that the London Stock Exchange had concluded arrangements to acquire Millennium IT, a Sri Lankan software firm that had just developed and deployed what was at the time the world's fastest financial trading platform with the ability to process about 1 million orders per second for about 18 million pounds ....Sterling.

My excitement knew no bounds. For the next few days it was practically all I could talk about.
So much so that it prompted my then colleague Sogo to ask me:
" O boy why this thing de trip you like this? , in fact....wetin de power you ?"
Which in plain English roughly translates to:
"My friend, why is this news exciting you so much? In fact...what drives you? What are you passionate about?"
At the time I really could not give him a straight answer. I just knew that I was very excited. At the time I told him that the reason for my excitement was manyfold.
One reason was that the company in question was from Sri Lanka, not the US, not Europe.... Not even India but Sri Lanka.
Another reason was that the platform was replacing another one that had been implemented by Accenture, the world renowned ICT consulting company.
This confirmed to me that it was possible to create world class products and services regardless of where you are and where you come from, all you need is the determination to follow standards and best practices regardless of all the obstacles presented by your environment.
Fast forward to this week, about 3 years later and I was chatting with a colleague in Uganda and it dawned on me the real reason I was excited back then and therein the answer to Sogo's question as to what drives me. I told my colleague that my main motivation in my current role was to make it possible for a  local tech driven company to make the front page news for the right reasons in Africa. Maybe this happens once in awhile in Asia, we know it happens every now and again in Europe and the United States but I have never seen it happen in Sub Saharan Africa.
Note that I did not say it has never happened.... I said I have never seen it happen.
And by front page I do not mean the front page of your neighborhood tech magazine or website. I mean front page of your everyday national daily. In Nigeria where I come from that would be the likes of Guardian, Punch and Thisday. In Kenya it would be a paper like the Daily Nation and in Uganda it would be Daily Monitor...or Red Pepper  (I joke!!! , I joke!!!)
Oh and what do I mean by tech driven company? I do not only mean software companies like Millennium IT who spend most of their time creating software for the use of others. I am casting a net wide enough to include all companies that have about 70% of their staff strength made up software engineers, system administrators, system integrators, network engineers, product managers, system analysts and business analysts. But NOT wide enough to include the major mobile telcos .  I would go on to include internet marketing companies and firms specializing in new media in this list.
How many times if ever have you seen any of these making the front page of your national daily in your country? I am not sure it has happened at all in mine.
Sure there are many locally grown and locally run tech driven companies that have created a lot of value and whose owners have done very well for themselves. But how many of them have ever made the front page of your national... Or even regional daily?  Take a look at the front pages today, you will see politicians, bankers, civil servants, religious clergy, top executives of manufacturing companies, the occasional sports man but hardly ever if at all...a techie.
So you ask: so what if a tech driven company makes the front pages for the right reasons? How will that change the price of snuff in Okigwe? may not directly change the price of snuff in Okigwe but I think it will be an indication that techies and tech entrepreneurs are finally be taken seriously and have been given their rightful place when it comes to contributing to the macro and micro economies of their respective countries. It would mean that the press, politicians, bankers, civil servants, "investors", business peeps and so on would have finally come to see techies as something more than tools....or "whiz kids" to be used and quickly discarded once the promised land is in sight.
What I am saying is very simple: Techies and tech driven companies have not made the front page simply because they have not attained the status worthy of making the front pages, at least in the eyes of the so called “people that matter”. As a technology expert in today’s Africa, when you attend a meeting where your expert opinion is required, and you give your views, you are at best given a sympathetic ear or at worst tolerated. And almost always when its time to discuss the main issues (e.g. the financial aspects) you will be politely excused. To my knowledge there are only two times when you will be given serious attention as a techie in these parts:

  • When there is a an emergency of a technical nature, and someone’s job/reputation is on the line
  • When someone needs someone with some technical expertise to take advantage of an opportunity that could potentially hand them a truckload of cash
As people in technology I am sure you are all too familiar with the first scenario which usually provides the best opportunity to be in the limelight. That limelight usually lasts until shortly after the emergency has been solved and then you are relegated to the background once again.
The second scenario could also be familiar to many people (on both sides of the fence). It is the only time when people see techies as “partners” and treat them with a certain level of respect and appreciation. Its the same old story. The guy(s) with the business acumen and /or cash “partner” with the guy(s) who possess some technical skills to achieve certain goals, usually in a start up. The partnership works out well at the initial stages as both parties operate as a well oiled unit to make things happen. The problem usually starts when the intended goal is close at hand or a certain measure of success has been achieved. This is when you start hearing things like :
“After all I put $XXXX into this business and all he did was write some code ”
“How much did he contribute?”
“I can hire 3 more like him”
For me this proves that the partnership in many cases is just a way to get those technical skills at a cheaper rate and later on in the game turning those “partners” to employees. Do not get me wrong, very few entrepreneurs or investors go into a partnership with the intention of one day turning their partners to employees, but somewhere in the midst of wading through the minefield that is running a tech related business in the challenging African environment, it is very easy to forget who is a partner and who is an employee.
I once wrote about the fact that there are very few if any large scale software companies in Africa. A look at some of the more successful software companies in the United States will show you that they were made up of a combination of technical expertise , business acumen and in some cases some initial cash. Even though sometimes all these three things were present in one person, usually you needed at least two people to make it happen. An example is Apple Computers and the two Steves (Jobs and Wozniak). Now that I think about it, this could be one reason why the large scale software companies have not taken off yet in Africa.
When you treat your technical partner as an employee (as is the case in many parts of this continent) because you own a majority stake and you put in most of the initial funds, you run the risk of him leaving to go and become an employee somewhere else...where he will get paid a lot more. Sure you can hire 5 more people like him to do the job, but you will just be hiring employees, not partners who were willing to spend the night in the office to ensure that version 3.0 shipped on schedule. You will have employees and not partners who like you will lay awake at night thinking of that next differentiating innovation but unlike you have the expertise to implement them. Treating your tech partners like employees will probably not bring about the end of your fast growing startup. But I am willing to bet that it will destroy the chances of your firm ever making the front page news in any national daily.
So if we agree for the sake of argument that techies are not accorded the respect they deserve (sometimes even by their fellow techies who are now wearing the entrepreneurial hat), the next question is whether African techies have done enough on their own part to warrant an invitation to drink at the table of men ( a question that is asked by bankers, politicians, press etc). Have they really pulled off feats worthy of front page headlines?
In my heart i believe that hidden in this current generation of techies are the ones who will eventually find a place on the front pages for tech driven ventures. Discovering and encouraging people like these … is exactly what gets me out of bed in the morning (when i get out of bed in the morning).
I would love to hear what you think.....and oh....if you come across any front page headline that I might have missed...please do share!

Wednesday, February 20, 2013

I de find developers (Boiling The Ocean)

Forgive me reader for I have sinned, it's been like 10 months since my last blog post.
As usual so much water has passed under the bridge since we last had a chat. The tech ecosystem in Africa continues to make steady progress. While things are still a loooooooooong way from where they could be , there have been a number of positives to gloat about . For example more and more people are beginning to realize the value that tech hubs (or innovation spaces or shared spaces or whatever name you choose to give them) can bring to the ecosystem and have started to support them more. It is also heartening to see more events and competitions in the community ...organized by the community for the community such as the Africa Android Challenge and the Innovation Open Ideas event in Douala Cameroon. Interesting times ahead!!!

Anyways, now to today’s gist. I came across this this article some days back. Its a well written article with a lot of useful insights. I do feel however that it is not telling us anything new, that is unless of course you have been living under the proverbial rock for the past 2 years or so. Pretty much everyone has heard at sometime or the other that Africa is new frontier with the greatest growth prospects and all that jazz. The bit that caught my eye was a single sentence, that i know also caught the eyes of a couple of people.
Though skills are in short supply, they are becoming more abundant
I totally agree with the first phrase of the sentence, the second phrase , while true, is not happening at a fast enough rate to suit me . All over the continent, a number of smart men and women are coming up with wonderful ideas that could change Africa’s fate. From many of these ideas, a number of startup companies have been created and quite a few of these startup companies have been able to get to the market with the first implementation of their awesome idea. Some of them have even been able to go the extra mile and get the first round of funding from an angel investor or two and are now set to commence that long , arduous journey to play in the big league....with the big boys. But there is just one little challenge that they need to meet before the journey can start in earnest. They need to bring on board 2 or 3 new staff. In the software solution/service business, these would most likely be software developers, business analysts or marketers.
Not a month goes by when I do not hear someone say something that sounds like :
“I de find developers” which roughly translates to “I need to hire developers”
And the response to that is:
“What kind of developers?”
And our person replies:
“Java developers, I will send you the job description”

When he does send it, the job description reads something like this:

Job Description:
Work with the Research and Development team to complete the development of our web Enterprise Resource Planning (ERP) software as well as other web and mobile applications, using Java Technologies on NetbBeans IDE, Oracle Glassfish Server and MySQL Database.


  • Collaborate with the Development Team on software design
  • Implement designs created by other team members
  • Work with others to ensure a high level of quality within software
  • Participate in code reviews, design discussions and testing
  • Create technical documentation
  • Correct defects found within product
  • Handle escalated technical support calls

Qualifications and Requirements:

  • Minimum of OND in Computer Science or equivalent
  • At least 1 – 3 year’s experience in a similar role
  • Experience on a client/server, database application development
  • Experience in Web applications development using Java Platform, Enterprise Edition
  • Proficiency in JavaServer Faces Technology, CSS 3, HTML5, PrimeFaces and Richfaces
  • Experience in Mobile application development using Java Platform, Micro Edition
  • To be a highly energetic self-starter
  • Ability to work under tight deadlines
  • Good oral and written communication skills.

Mind you I scraped this JD off a real jobs website.
Looking at the JD , i would say that chances are that this company that put this out is looking to pay at most NGN 80K - NGN 100K (about $500 - $600) per month . Unless they happen to be one of those startups with deep pockets (and believe me they are very rare in this part of the world) then they may be able to up the stakes to NGN 100K to NGN 200K.

Now comes my question.
What do you expect will happen on the day the guys who put up this opening sit down to conduct interviews for the position?
Well let me put on my babalawo (native witch doctor) hat and attempt a prediction.
They are going to get at least 25 resumes out of which only about 6 will look anything like what they are looking for.  After 4 hours of interviewing people, they are going to end up frustrated and pissed off. If they are lucky they will be able to find 1 person that is close enough to what they set out for. They may end up hiring him for lack of a better option with the intention of training him to bring him up to speed. This developer will most likely know a bit of Java and has probably at some point or the other built a basic MVC application using one of the popular Java frameworks. I am almost willing to bet that he would never have used (or even heard of Oracle Glassfish, JavaSeverFaces, Richfaces, Primefaces, HappyFaces, SadFaces or UcheFaces). He will most likely be one or two years out of college having just finished his national youth service (or whatever it is called in your country).

Why do I think this will be the case? Well....I think its quite simple. The dream developer who knows and is proficient with all the things (Faces) listed in the above JD is probably already working happily in a firm where he is being well taken care of (more than 100K) and if you want to get him to move then you should be looking at upping his dough by at least 50% which i am willing to bet will be a tall order for such a startup.
So what happens? You hire this guy (lets call him James) and work hard to bring him up to speed on the frameworks that you use (all the ‘Faces and Glass Fishes) to build stuff in your sweat shop. Typically it takes an average of 60-90 days for a guy like James to become proficient to the point that he can start writing code that you can feel comfortable to ship to your customers (unless of course you are really desperate).  Of course during this time he is earning a salary :-D. And in some unfortunate cases you find out 3 months after hiring James that he just cannot cut it and you need to start thinking of hiring someone else.

So what option do you have?
You could go and poach a guy with all the skills from another company and pay him an armed robber’s salary and of course run the risk of him running off at the first sight of another armed robber’s salary in another company (like guys who move for the sake of armed robber’s salaries usually do)
or you could consider a concept i have been advocating for a while now:
Invest some resources (time or money or both) in training the ecosystem .. yes....attempt to boil the ocean!
This idea came to me in my first job. It was a startup that grew to become a decent company at the time. We got to the stage when we needed to hire developers like every software startup has to. It was not long before we ran into the issues I hinted at above. The reason was simple. At the time we were one of the few software companies in Nigeria that was doing serious J2EE development, utilizing the full J2EE stack. At that time most of the developers around were either PHP or .NET developers. The ones that could really do J2EE were of course working in the then higher paying telcos and the like and would not dream of leaving their relatively cushy jobs to come and sweat it out in a Naija software company. So when the Java team wanted to hire it was always a problem (the PHP and .NET team had it easier at least in my opinion). We ended up with some school leavers whose only contact with Java was a very basic command line app they had written in university but who could code in PHP or in some cases C++ :-D.
So what to do?
Did we hire them anyways and start training them on J2EE? No! We could not afford to do that.
Did we give up on the whole thing, pack up and go home? No!
I’ll tell you what we did, we developed a whole new hiring process that integrated training and recruitment. The process went something like this:

We did a standard interview, which basically consisted of trying to confirm that everything on their resume was true and that they were smart and could think for themselves

After that came the main part: A mini project. At that time it was very simple. Build a simple J2EE Student or Employee Data management system (Basically a CRUD app) for those of us who do not know what a CRUD app is, it is an app that allows you to carry out basic operations on a database: CReate, Update, Delete. In our case we also insisted on a search functionality. This app was to be built from scratch , with no code wizards and no generated code.  You also had to use a particular application server and database management system that just happened to be the same one that we used in-house. In short you had to build it on the same stack that we used in-house. and then the best part....there was NO time limit, you could take as long as you pleased, a day, a week, a month? Have fun! the guarantee was that once you finished the app and were satisfied with it, you could come back and take us through you app. Run it, and walk us through the source code step by step. The moment we were satisfied, you got the job. Simple.
Someone (usually me) was put at the disposal of the candidate in case he had any questions or ran into any issues (I am not sure that stackoverflow existed then) . The candidate was also given URLs to various online resources and tutorials that we felt could help.

The results were interesting.
About 40% of the people who took through this process never came back to defend their project.
About 10% of the candidates dropped off at various stages.
The remaining 50% usually ended up getting hired. They did whatever it took because they wanted the job. They borrowed laptops, worked out of cybercafes and made serious sacrifices to make sure that their projects were completed. On average it took them slightly more than a month to complete the project and come and defend it. Many of them showed up in between to ask for help in troubleshooting thorny issues and finding bugs which was duly given.
With this approach we found that :
  • The ramp up time from when they were hired to when they could start creating shippable code was about a month as against the 60 - 90 days that i mentioned before
  • They understood the basics of J2EE development from the ground up
  • Their loyalty level was AWESOME
  • With time it came to be known far and wide (even in some universities ) that if you wanted to be hired by the place where i worked, you needed to know J2EE, with special attention on the stack that we used and with time, people showed up from school with their app in hand, pretty much ready to be hired
  • I dare say that every single one of them is amongst the top Java developers in Nigeria today. Infact if there is any company that has used Java extensively and has ever had a Java team with more than 7 developers, that company has most likely housed one of our alumni :-)

I would highly recommend this approach for startups out there that are looking to hire young developer talent. Do not take it for granted that you will find fresh developers who have a deep knowledge of you coding methodology especially when you have never taken time to impart this knowledge to them. You should even take it a step further and reach out to the developers in the community before they come to you to ask for a job. Offer to hold free trainings to introduce people to how you do what you do. Teach them your frameworks (Richfaces, PoorFaces and Dullfaces :-D) and all the stuff that you are crazy about . Not only will you be giving back but also you never know, the company you save may be your own.
One question that always comes up is : what happens if I invest all of this energy and the guy leaves for another company? or he gets hired by someone else before i can hire him? guy thats the same risk that you run if you hire and train people except in this case that the rewards are far greater.

I have already seen a few people who adopt this approach and I want to take this opportunity to applaud them. The likes of Chuka of MircoSmart and Ehi of Rancard who take out time from their busy schedules to enrich the community with skills that could make the difference in the real world. This approach also goes beyond software or technical skills, it applies to pretty much any field of endeavor.
The Industry MUST play a greater role in educating the community for us to reach our full potential and by industry I do not mean the big boys....even the small startups and growth stage companies have a lot to offer.

Abeg forgive any typos or horrible usual I was half asleep when i wrote this :-D will probably spend the next few days correcting them.

Monday, April 9, 2012

No Old, Bold Developers....

So its been a long time!
So long that i had to use a search engine (guess which one!) to find the URL for my own blog!
My last post was like more than 5 months ago and i apologize….sincerely. 
Rest assured that the reason i have not posted anything in a while is not because nothing has been happening…..rather it is because too much has been happening.
In the past 5 months i have:
  • Had lunch on the roof of the Co Creation Hub in downtown Yaba with a host of enthusiastic Naija coders and 4 other people almost as crazy as i am
  • Met some awesome developers across the continent , one of whom i have christened "The Black DJ" after a remarkable product he built on the West coast of Africa to another who developed an Android keyboard for Amharic on the east side
  • Carried out some eye opening cross-continent-research with my man Ato 
  • Watched two Ethiopian girls put Willow Smith to shame :-)
  • Twice bumped into ladies rushing out of the same men's room (yes men's room) i was walking into….in two different countries!!! (it is not a small something!)
As i am sure you would agree each of these items is worth a full blog post …or two but i would crave your indulgence to let me postpone all the gist to a later date.

The issue i would like to broach today if you have a few minutes is something that has come up in a few discussions i have been privileged to be part of in the last few weeks, an issue that even yours truly could be guilty of.

A popular saying goes: There are old pilots and there are bold pilots…but there are no  old, bold pilots. I totally agree .
Another saying goes: There are old software developers and there are bold software developers, but there are no old, bold software developers …or at least very few of them….in Africa. I am also almost tempted to agree.

What do you think?

To make things a bit clearer, I will use a scenario I have encountered in Nigeria and which i think is replicated in many African countries:
Okeke is a young software developer who started off as a .NET developer , straight after he left school, he got a job in a small software company where he now works developing what will one day become their flagship product.
The product gains maturity and is deployed for a few paying customers and then a few more. After two years, Okeke is now recognized as a veteran .NET developer in the firm where he works and leads a team of 3 other developers working on the same product.
At some point he leaves that company for another one that offers him a position with more pay and this time leading a team of 4 developers working on another similar product. He does this stint for another 3 years before leaving for yet another company (a start up this time) where he is offered a position as lead software architect or CTO. It is at this point that things change. 
Why? Well,  you see the thing is, as lead software architect, Okeke believes that his days of immersing himself in code are over. Its time for him to start managing projects ,meeting clients and making all the tough decisions on whether to use Microsoft MVC Cake PHP or WebApp2 for the next project while he leaves the day to day coding duties to the developers working under him. Indeed ask any developer in these parts where he or she sees themselves in the next 5 years and you will hear things like :

"i want to be a consultant"  or
"I want to be a software architect"

for many of them the thinking is that at that stage you will be calling the shots, telling people how to do stuff instead of having to do it yourself.
Contrast this to other parts of the world where you see a lot of "mature" software developers who have been in the game for 15 to 20 years and are still going strong like Clarence Seedorf. If you do not believe me, you can take a look at this list of programmers who have affected our lives in one way or another and you will see that a good number of them are still very active developers and do not look tired at all….not by a long shot.
I wonder if this could also be a contributor to the small software company syndrome i hinted at in my other post. 
Maybe this is why not many earth shaking achievements in the field of computer science have come out of our neck of the woods because by the time we are getting to the stage where we know enough to do anything enduring , we loose interest and start hustling to move up to "management".
But then again maybe its because developers are not well compensated for their efforts and feel that the only way they can get the compensation and respect they deserve is to make it to "management"….but could it be that the reason that developers are not well paid or respected is the very same issue we are discussing? 
Maybe thats also why software developers around here do not get the respect they feel they deserve from the non-techie community because when you think about it, its difficult to have a lot of respect for people in a field who are all trying to get out of that field. For example imagine an argument on a software solution deployment between a software engineer with 4 years experience and a project manager on the client side with 15 years experience who has seen software developers like the one he is arguing with come and go like soldiers through an army barracks. Who do you think will win? Now imagine the same argument but this time with a software developer with 15 years under his belt, what are the chances that the outcome will be the same?
Who knows right? Food for thought. 
Its time for bed, i am beginning to ramble and also i need to catch up with a few YouTube videos before i hit the sack as my link seems unusually fast tonight.

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 :-)

Tuesday, October 4, 2011


So he steps out of the shower in the hotel this morning, 20 minutes before pick up and picks up the tube from the hotel complimentary cosmetics bowl. And starts to apply the lotion all over his body, however midway through he notices that the lotion is kind of sticky and greasey and does not dry off like its supposed to, oh well...maybe its a new type of lotion, its not like he uses lotion a lot anyways. He has always been a vaseline kind of guy (old skool) but since the lotion is there and its free....why not ? right?
So he keeps applying the lotion, legs, arms, torso and a voice keeps saying:

Bros....this thing is greasy and sticky o! sure say no be butter you rub? Better check yourself!

He is about to apply it to his face and then he decides to listen to the voice in his head....(the voice of reason?) and picks up the tube and looks to see what kind of lotion this is, (so that he can avoid it in future) and carefully he reads the label and three words jump out at him:
Conditioning Hair Shampoo
First thought:
 Come on man...its are running late, its only shampoo...and besides it smells nice
Second thought:
Are you nuts!!!??? Do you know what deadly chemicals could be in that thing? what if you go outside and it will have soap suds coming out of your backside!

Where is that shower?????!!!!!!
10 minutes to pick up.....
The moral of the story is always RTFL (Read The **Bleeping** Label!!!!)

Saturday, September 24, 2011

Flying East….and Back

If you are a jazz fan then i am sorry to tell you that you may not be on the right page. You may be looking for this link (i also love the jazz band Fourplay so i could not resist pulling this one on you)

Anyways …a few days ago i returned from  a brief sojourn in East Africa. 
I had a fun time in Uganda and Kenya attending G-Uganda and G-Kenya. Its always great and eye opening hanging out with software developers, especially when those developers are from other parts of our great continent.
First off let me say that East Africa is a great place to visit. From the landscape and wildlife to the people. If you are single and need a place where you can run away to have a good time on vacation (responsibly of course) , you should consider East Africa, If you are newly wed and need a place for that romantic honeymoon, you should also consider East Africa. If you have been married for like 10-15 years and are looking for a place for that second honeymoon to rekindle all rekindle-ables….again include East Africa in your plans. A note of warning to my friends from West Africa. If you ever intend to visit East Africa, either you pack your own personal stash of pepper from home, or you remember these two words : "green chilli"  and repeat them several times to the waiter whenever you order food (for some reason pepper is not a standard part of east african cuisine). The life you save may be your own.
Personally i had a number of take aways from my interaction with attendees who came for the programs in both countries. I guess it confirmed to me that Sub Saharan Africa has a lot in common in terms of people who have an interest in technology. 
My greatest take away was that there is a need for developers in Africa to be more internet aware. Yes the internet is great for checking emails, chatting and hooking up on social networks, but then there is more to it than that. The internet is actually a great repository of searchable information. Information that can be used to change one's circumstances in every way imaginable. For the African software developer, this means that the internet is a great repository of invaluable information on software, how it is built, what it is built with and also information on how to get in on the action and make money from building it. Developers in this part of the globe should be taught to take greater advantage of all the open resources out there (and believe me there are so many of them that its unbelievable ).  Google Code, Source Forge, Stack Overflow are just a few.  For those who want to understand the theory behind some of the wonderful technologies that exist out there, there are lots of information available on sites like MIT Open Courseware and Khan Academy
So why are we not using them like we are supposed to? I know the first thing you would say is that  internet connectivity is a challenge in this part of the world and how are developers expected to use online resources when they cannot get online? While that is a valid question and i would agree that there is indeed a serious problem with internet connectivity in Sub Saharan Africa, i would make the following argument bearing in mind that we are talking software developers here not normal human beings (there is a school of thought that says that geeks are not human):
lets assume that there were 100 sub saharan African developers, i would be willing to bet that they all have email accounts and that 60 of them have Facebook and/or Twitter accounts. Of that number i would say that at least 30 of them either tweet, update their social network status or read other people's updates and chat with other people on the internet at least once everyday, be it using their mobile devices or desktops/laptops. But then ask these developers how many of them have heard of the websites i listed above and you would be amazed that only about 3 in 5 have ever heard of any of them , 2 in 5 know what they do and about only 1 in 5 has ever used any of them.  You would find that the problem is not necessarily one of access, but one of awareness.
Why is this?
It beats me because these days almost every university has a computer science department and there are a large number of computer institutes scattered all over the place, charging an arm and a leg for a diploma or certification in one thing or another. 
Could it be another clear case of these institutions handing out fish instead of teaching our budding developers how to fish for themselves in the vast ocean of knowledge that is the internet? 
I wonder how many people agree with me ( i know many would disagree) i am always willing to hear arguments for or against.
But i believe i have stated my case: 
It's time we took maximum advantage of the internet….that's what it's there for.
Excuse me while i reach for my sachet of pure water….typing this stuff is hot work….

Monday, September 12, 2011

…a small software company

I remember a phrase that kept on reoccurring when i visited India several times in between 2008 and 2010. 
Whats that phrase you may ask?
The phrase is the same as the title of this post: 
"…a small software company"
It occurred in so many different times in so many different ways for example:
"There is this friend of mine who works in a small software company in Gurgoan"
"I used to work at XYZ, a small company that built and sold project management software "
"He founded a small software company that handles outsourced projects for banks in America"
….and so on and so forth.
and every once in a while during these conversations i would ask:
"How many software developers worked in this company?" 
and the answer i got was almost always the same range:
"about 40 developers"
"…oh maybe 30 developers"
"…like 50 people "
..and in some rare cases:
"…about 5 or 7 developers"

and i am like …."Wow….50 developers? 40 developers? "
Why am i surprised?
Well …think about it, i am a Naija boy….bred and buttered. I have worked in one or two of the top software firms in the country ..and possibly the West African sub region (i am biased i know) and to the best of my limited knowledge, when you say that you run a large software firm in Nigeria or anywhere in sub-saharan Africa for that matter, you are talking of at most (yes …at most) 30 software developers. I even believe i am exaggerating here because i have never seen (ever) a sub saharan software company that has more than 20 software developers. Now…i am not talking staff here (hr, admin, business development, analysts etc). I am talking software developers: Java, C++, PHP, Python whatever…even QBasic.
So you can now understand how i felt when i found out that the biggest software company in my neck of the woods….is a small company in India…and that a small company in these parts… at best 2 developers and a front end designer ...very humbling.

There is the school of thought that argues that the era of the large software company is behind us. These days with mobile computing ,Web 2.0 , cloud computing ,agile methods and so on that there is no need to have such large teams and so on . Well…they could have a point.
There is also the school of thought that believes that a developer can only turn out a fixed number of quality / debugged lines of code in a day for complex software projects(i believe 10 lines of code is current average). What this means is that you can have a team of 5 Ninja developers turn out 500 lines of code per day, but in the long run….after all the trouble shooting and debugging has been done, you find that in the end, the effective incremental output will be 10 -20 lines of code per day…if they are lucky.
I don't know why…but i tend to lean more towards the second school of thought. I have always believed that no matter how much you try to rush and muscle through a software project…it will take as long as it will take. Software project timelines are like air, you can compress it all it want, but there comes a point when it liquifies and you cannot compress it anymore without either changing its chemical composition or busting something, so no matter how talented your team is , there is a level of output per developer that cannot be surpassed without breaking something. A look at any successful open source project will probably confirm what i am saying.

So if you also lean towards the second team like me…you will agree that to build software of a particular quality within a particular timeframe, you need a particular number of developers of a particular quality. So if your software company has a certain number of developers (say 10), who output say 10-20 lines of debugged code per day, it would take them between 1.5 to 3 years to develop an application that has about 100,000 lines of code (thats about the size of Ruby On Rails or SugarCRM in 2007). 
This back of the envelope analysis probably explains why there is little or no software from this part of the world that has the same quality and depth that Ruby on Rails had as at 2007. I stand to be corrected.

I know the next question you will ask me is :
"So why are there only small software companies in Sub Saharan Africa?"

And to that i can only reply: