Something I joke about all the time with friends and family is that as a developer all you need to change the world is a brain and a laptop. In some ways that is what drew me into programming, the ability to create large things from scratch with just a few items. All things being equal, if you have a computer and the knowledge of programming, your imagination is your limit but that’s the point, not all things are equal.
In Nigeria and basically any developing country the lack of infrastructure is the most important hindrance to progress. This is nothing new and is no news to anyone in these countries, what I find interesting is how this lack of infrastructure affects developers and people learning to program in the in this system. The two main issues I once took for granted that I have seen become bottle necks in the growth and work of a typical developer is the consistency of electricity and the Internet.
In an IBM research paper published in 1982 says, when a command is executed by a programmer and she gets a response in 400ms or less it is said that the program has exceeded the Doherty Threshold and the use of such a program was said to be addictive. In the programming world this seems to be common practice today, we optimize programs to be as fast as they can be or simulate them to feel faster than they are. Programming techniques like AJAX gained popularity in developing web applications when user interface features like Google's auto-suggestions and google maps were released. The snappier a program feels, the more you perceive it as modern and reliable. The slower the program is the higher the probability we might lose users due to frustration. This also applies from the programmer’s perspective too. In programming, your ability to code smoothly without interruption the higher the probability the developer gets in flow, the higher her productivity.
So lets take a look at electricity in Nigeria, on a bad day you have none and if you do not have a generator you can do no work. This is especially bad for startups or individuals who are bootstrapping, bigger companies always have a generator that they are prepared to run for several days if need be. So besides capital, hiring, product market fit and all the other things a developer might need to figure out, her ability to produce is already in jeopardy on day one. On an average day you have electricity for half the day and the other half you do not. If you do not have a generator, all your plans have been thrown into the garbage and hopefully you save regularly and did not lose any work. But to be fair in todays Nigeria, if you have a computer and you even know what programming is and are even attempting to write stuff, there is a high probability you already have access to a generator, you would imagine all is good then, but no. A typical day in a big city, electricity comes and goes several times a day, so quickly you find yourself in a dance turning on an off your generator. Shifting between a developer and power manager. To me this is the worst situation of all. You are perpetually context switching and this is very costly to a developers productivity.
As for Internet this is a unique beast. The cost is just too damn high! For comparison, in America you will pay about $40 a month for unlimited Internet and the price moves up or down depending on the speed you want. Ranging from 5Mbps to 60Mbps depending on your ISP and location, in Nigeria Internet is priced differently, you pay for bandwidth as supposed to speed. So $40 will buy you about 20GB of bandwidth a month for variable speeds (2Mbps - 20Mbps) but to be honest if you are getting above 10Mbps know you are witnessing something akin to Moses parting the red sea. To put it into perspective in America you are given a highway and depending on how much you pay you can drive on this highway with a VW beetle or a Ferrari for as far as you can go in a month. In Nigeria you are also given a "highway", depending on how much you pay this restricts the distance you can travel and the car you travel in is a lottery. Besides the price being a problem, consistency is also a problem. Due to infrastructural issues the bulk of Nigeria that has access to the internet browses on 4G LTE, the probability of gaining access to hard lines (DSL/Fibre Optics) are as common as you running into Rihana at an airport, it happens but not that often. 4G service is susceptible to weather and sometimes these towers are just overloaded and people at the fringes of the coverage suffer. Unlike electricity there are many good days (If you live in a city) and much fewer bad days but then again nothing frustrates more than trying to upload something to a server and your Internet repeatedly cuts off or you are downloading a 4GB computer update and you lose your connection and you have to start again after paying for them expensive Gbs.
So yes like every other industry in Nigeria, a developer suffers from a lack of infrastructure problem but what I find unique to the developer problem is that in other industries once you throw money at the infrastructure problem (Get a generator, import your materials, build yourself a road, buy private security etc) your problem usually goes away, but for the developer this is not exactly true. The main problem a developer suffers in Nigeria is context switching (interruptions). Because you worry about the Internet and electricity, you think about if your batteries are charged or if your spectranet Mifi will work where you need to give a demo and contingency plans for these vulnerabilities. Basically as a developer you not only worry about the technical problem you need to solve but you also need to sustain the eco-system that will allow you to solve it. So my little joke about changing the world with a laptop and a brain is really a lie... you need the govenrment too. LOL