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.

Responsibilities:

  • 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? Well...my 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 grammar.....as usual I was half asleep when i wrote this :-D will probably spend the next few days correcting them.

21 comments:

  1. We were beginning to wonder if it was something we said in comments on previous posts that chased you away. Welcome back!!! This is another excellent post as usual and I agree withy your approach as we do basically the same thing in the services and consulting end of the game. We are a very specialized shop but we have been able to hold our ouwn against the onslaught of the big guns for a very simple reason, we build up own team and do not hire mercenaries. I actually shared a quote from Machiavelli with a colleague yesterday when she wanted to find out why I ruled against bringing in an "armed robber" :

    "- Mercenaries and auxiliaries are useless and dangerous. If a prince bases the defense of his state on mercenaries he will never achieve stability or security. For mercenaries are disunited, thirsty for power, undisciplined, and disloyal; they are brave among their friends and cowards before the enemy; they have no fear of God, they do not keep faith with their fellow men; they avoid defeat just so long as they avoid battle; in peacetime you are despoiled by them, and in wartime by the enemy. The reason for all this is that there is no loyalty or inducement to keep them on the field apart from the little they are paid; and this is not enough to make them want to die for you. They are only too ready to serve in your army when you are not at war; but when war comes they either desert or disperse. ----

    Mercenary commanders are either skilled in warfare or they are not: if they are, you cannot trust them, because they are anxious to advance their own greatness, either by coercing you, their employer, or by coercing others against your own wishes. If, however the commender is lacking in prowess,in the normal way he brings about your ruin. If anyone argues that this is true of any other armed force, mercenary or not, I reply that armed forces must be under the control of either a prince or a republic: a prince should assume personal command and captain his troops himself; a republic must appoint its own citizens, and when a commander so appointed turns out incompetent, should change him, and if he is competent, it should limit his authority by statute. Experience has shown that only princes and armed republics achieve solid success, and that mercenaries bring nothing but loss; and a republic which has its own citizen army is far less likely to be subjugated by one of its own citizens than a republic whose forces are not its own."

    We will all keep boiling our part of the ocean and maybe eventually the warmth will spread around.

    ReplyDelete
  2. Very engaging read. Your previous employer's hiring strategy is truly inspired.

    ReplyDelete
  3. As God is my witness, this is the best hiring practice for Africa I've heard about. Amazing amazing stuff!

    ReplyDelete
  4. Wonderful! The exact same approach I used in hiring for my startup recently. I became frustrated at the level of mediocrity in today's job-seekers and decided to organise a hackathon to separate the wheat from the chaff. Thankfully it paid off handsomely and we got two young developers that are very smart and open to new knowledge. I'll recommend this approach anyday. Thumbs up!
    Steve

    ReplyDelete
  5. It all makes sense now, that's how u guys did it eh? Wonderful!

    ReplyDelete
  6. Deep lines garnished with wisdom and truth, great piece sire!
    You should write more often, the ecosystem needs this...

    ReplyDelete
  7. I'm both happy and impressed that this article not only came from a Nigerian, but also that it directly solves a problem in Nigeria and Africa at large!

    The hiring problem.
    But again, my advice to companies, do not wait till you are desperate to look for developers. Follow the writer's advice and contribute to the society and develop people now while the sun is still up. You never know if it would save your company true true :)

    Nice one!

    ReplyDelete
  8. I appreciate this post from the perspective of an individual running a web service business. I have tried without success to hire a permanent developer and when I have, its the mercenary types I have ended up with and usually on a part time basis. Now I'm basically at their mercy and to make matters worse, I cannot code if my life depended on it.

    Your approach has given a clue about the best method available to a start up in our clime to recruit and retain if only for a short period, talented and loyal developers.

    My question thus is, as a an individual who is not able to code therefore unable to impart the required level of supervision, knowledge in the necessary programming codes and more, what is the best way to implement boiling our own ocean in our corner of the web services space, in the absence of knowledgeable supervision?

    ReplyDelete
    Replies
    1. Hi Morakinyo, Thank you for your kind words. While I may not know much about your particular situation, you may be better off looking for a slightly more senior techie that shares your vision for the business. That way you can leave him/her in charge of most of the technical details including the search for more talent. Of course this could open up discussions around equity and stuff like that, but I think its one way to go. There are of course other possibilities.

      Delete
  9. Right on point!
    I'll combine this with the other program we are putting together and see how well we do.
    There's an ocean of eager but clueless developers badly looking for experience and a pay-check at the same time.
    Some will be good ... and this method will be helpful in finding them.

    ReplyDelete
  10. This comment has been removed by the author.

    ReplyDelete
  11. Oga, thank you for this post...

    This is the message we've been preaching to those looking for ready-made talent. You have to invest in creating it.

    And if the person is a correct person, when they leave you, they are leaving as emissaries and allies which you now have in the companies where they now work.

    I wonder if there is a way we can formalise this approach and run it for a pool of startups who may not have the capacity to run it individually. Let's talk...

    ReplyDelete
    Replies
    1. "I wonder if there is a way we can formalise this approach and run it for a pool of startups who may not have the capacity to run it individually. Let's talk... "

      AWESOME.... totally awesome

      Delete
  12. Nice approach, but i have seen companies who do this mainly to get cheap labor. They know they can hire the new guys at lower rates, and basically place less value on the guys they have because, well, they can hire fresh graduates for much less.

    What we have not being saying with all this talk of developers is that many companies do not put adequate value on their developer resources. Their view of value is very myopic, and quite frankly very demeaning at times. As i told someone earlier today, if it comes down to simple mathematics, what decision do you expect a logical being to make?

    If i am learning new technologies left, right and center to improve myself and by extension the business, there should be without question a commensurate value increase. Developers loose loyalty once they get screwed and usually the first time is enough to cement that.

    So before i get branded condottiere, i have never jumped ship! but it has been very tempting at times, although never for money. Even though i fully embrace the mercenary philosophy that is preached by Stephen M. Pollan in his book Live Rich.

    ReplyDelete
  13. Great post. I believe the Nigerian software companies need to go hunting in our universities. They need to develop a system that tells Nigerian students "If you develop your software development skills in this and that technology, you can be assured of a job once you leave school". As this article suggests, the results can be quite rewarding.

    I can mention several successful start ups here in Lagos - SeamFix, Parkway, C2G and SocketWorks just to name a few - who came up as a result of this strategy. So it works and should be exploited vigorously by our IT sector in partnership with the Ivory Towers.

    ReplyDelete
  14. Narrowing this boiling the ocean strategy to just techy isn't enough, it is the best human resource development strategy ever for a continent that has educated graduates who lack essential skills that can get the job done.

    Nice post!



    Adama blogs at www.ajanotes.wordpress.com

    ReplyDelete
  15. This comment has been removed by the author.

    ReplyDelete
  16. Fantastic Approach!. I only wish people aren't so desperate to hire developers and be more focused on making them into what they want. Its no surprise many people want "ready-made" developers, who end up calling the shots and dictating the terms for their employers or rather would work freelance as a result of some form of limited foresight (in my own opinion).

    This approach needs to be standardized! :) + We need write-ups like this every once in a while

    Thanks

    ReplyDelete
  17. Lovely article.
    But in my own case, these employers cannot afford to pay the Super-coders or Super-programmers that they need.

    -Darmie Akinlaja

    ReplyDelete