In South Africa, the past few years have seen many companies move towards adopting agile software development. And even if it does not always align completely with the tenets of the Agile Manifesto, there has been an increased pace of development taking place in the country.
By Bill Braun, software developer at Dariel
From a Dariel perspective, we are deploying monthly or even quicker – a significant improvement from the traditional quarterly cycle. Another way the local environment is changing is how developers have become more open to various languages for projects. In the past, they relied almost exclusively on C++, C#, or Java. Today, there is an appetite to use emerging languages such as Python, Rust, Go, and even NodeJS for server-side back ends. Riding on these tailcoats is a concerted move by developers to start using micro-services wherever possible.
South African local developers have built a reputation for being innovative. However, the pandemic has put the spotlight on a few things. For instance, some developers have focused on data analytics to put a few unique twists on publicly available pandemic data sets. Several apps have been released that deal with any number of challenges related to Covid-19, for example, price trackers, contract tracers, and the like. Of course, we have also seen our fair share of locally developed games as well in recent times.
The country is fortunate that the development houses here are not only on par but, in some cases, even better than their international counterparts. I have worked on several projects for international clients where they sourced technical leads from here to oversee the massed coding houses from the likes of India and Ukraine.
Because there is such high demand for talent in South Africa, our developers get exposed to a broad range of requirements. Internationally, it is very much a case of a developer training for a single role and sticking to that for a long time. Here, we expect our developers to function in a multitude of roles across languages.
There are many examples of our development standards. The integrated banking sector is one of the most advanced in the world, with our apps helping spur innovation. SARS eFiling is also on par with the best Europe has to offer.
Challenges create opportunities
Despite all the improvements that have happened in this regard, we must never forget that there are still significant bandwidth constraints in the country. I have worked on many applications where we had to cater for limited and infrequent access to upstream servers. This results in instances where more data must be cached on the device level than what our international peers need to deal with. Synchronising this data once the connection is restored poses interesting obstacles. Even so, this forces us to think outside the box and devise unique ways to address these.
Another example is that most of the international biometric solutions available do not cater to African conditions. Trying to take ID photographs in a rural hut without electric lighting for facial recognition is interesting. We have also run into similar problems regarding fingerprint verification, with some cultures making liberal use of hand creams. This means we have had to develop our own technical innovations to address these concerns.
We are also seeing that with the likes of Microsoft, AWS, Google, and Huawei positioning their clouds in South Africa, there has been a boom of local data centre providers investing in infrastructure and services. These local cloud instances will only help in growing the development market here.
Big institutions are looking to save costs and increase reliability. This is what the cloud was initially designed for. That said, the smaller start-ups that previously could not access server-grade hardware would struggle to get off the ground due to cost and availability. Access to these cloud resources benefits them as they can now use resources on an as-needed basis.
A small company has a reduced start-up cost for testing the market for a product or service. They can also scale cost-effectively. This allows projects to ‘fail fast, fail often’ while not succumbing to the ‘sunk cost’ fallacy. The glue tying all this is access to local developers who are agile in their approach and who can iterate quickly to meet changing customer demand.