Wednesday, 7 February 2018

Where to start?

What is the state of the nation for software development in South Africa?

We have a big IT industry.

We have many people who are technically very capable
  • People who are highly skilled in deploying and configuring infrastructure
  • People who are highly capable in creating complex business requirement specifications
  • People who are highly experienced in installing and configuring packaged software solutions like ERPs, CRMs and manufacturing automation systems
  • People who are highly respected for their ability to compile elaborate and mathematically sound process maps
  • People who are exceptionally talented in designing beautiful mobile and web apps

But I have one concern: I'm not sure we have an abundance of people who have the ability to design and develop custom software solutions.

Of course, this concern of mine is based on my own experience. And that experience has taught me that we definitely HAVE expert software developers in South Africa. I'm just not sure if we have a great many of them. Too often I sit in boardrooms where solutions are discussed and technical details are glossed over: "Let's not get technical", they say, or "I'll discuss this with the development team and get back to you".

It seems to me that we have created an industry filled with sales people, account managers, business analysts, solution architects, user experience designers and more. These people are all amazing, and they have amazing ideas - ideas that could well change the world. But ideas need to be implemented.

And I suspect.

Based on some hard-won real-world experience:

That when the time arrives to implement ideas, we are a bit short on capacity in South Africa.

To be fair, I may be entirely incorrect, and in reality this blog is part of my research to investigate whether I am. But the anecdotal evidence all points in the same direction: When we see problems, we look for existing products that we can buy to take our problems away. We buy CRM systems and configure them according to our needs. We buy ERP systems and configure them to our needs. We buy content management systems and configure them to become our websites. And much, much more.

On the face of it, this is a perfectly logical approach. After all, it is definitely faster and cheaper to buy an existing product than to develop it from scratch. But unfortunately, this approach comes with a built-in assumption: That our problems have already been experienced by someone else, and someone else has already solved it.

Which means we have admitted defeat in the innovation race; even before the starting gun has been fired. Innovators are people and companies who create problems that nobody even knew they had. They design a car when others are still figuring out how to make a faster horse.

If Sergey Brin and Larry Page were followers, Google would've created just another Altavista, which in turn was just another electronic version of the Yellow Pages. But they were innovators, and in the process they created a brand new problem: How do we build a highly scalable index of the Internet where search requests return accurate results.

There was no existing product that they could buy and customise with their logo to create Google.


Today, Google is a world leader in many fields, well beyond just search technology. Interestingly, following the release of Elasticsearch v1.0 in 2014, any company could buy a product, configure it according to their needs, slap on their own logo and establish their own global search engine. In effect, ElasticSearch is the productised version of what Google was when it launched in 1998.

So that's the difference between a leader, and a follower: 16 years, and 744 Billion US dollars.

And the same applies to any other field of technology: If you can buy a product to solve your problem, then your problem is old and stale. Yes, solving your problem is necessary, but it is necessary in an effort to CATCH UP, not in an effort to GET AHEAD. If you want to GET AHEAD, you need to start with fresh ideas. You need to assume nothing. You need to create your own problems.

When Netflix wanted to create a streaming video service, the technology for scaling and load balancing such data volumes didn't exist. They couldn't approach IBM to purchase a packaged solution to their problem, because nobody ever had that problem before. So they built Ribbon and Eureka themselves, and that has made all the difference. Today, there are many streaming video services worldwide, but there's only one Netflix and Chill!

So innovation requires breaking boundaries. It requires opening your IDE and writing the first line of code for a new project that exists nowhere but in your mind.

If we want to foster innovation in South Africa, we need to ensure that more people are enabled to write that first line of code.

We need to ensure that more people are encouraged to write that first line of code.

And we need to ensure that more people choose to write that first line of code.

Don't get me wrong; I'm not saying configuration is a bad thing. Many problems that we face on a day to day basis have been solved already, and for those we need to leverage the collective minds of the past. We need to buy tools and configure them according to our needs.

But if we want to lead the way, we need to create new problems.

No comments:

Post a Comment

The Programmer's Oath - by Uncle Bob

I've been thinking about the fate of our profession a lot lately. That thinking has been focused on the reduction in professionalism I a...