The Dutch levied taxes, extended credit through banks and tradied the first securities on the Amsterdam Bourse a full fifty years before the Cape of Good Hope became a naval resupply point. And, in 1983, the Bank of Scotland rolled out the first Internet banking facility some 13 years before Absa bank did the same in South Africa.
More than mere historical curiosities, the age of Dutch industries and the comparatively early adoption of digitisation have formed a software development landscape that differs markedly from South Africa.
Simply put, the Dutch have no shortage of legacy systems. Disproportionally so in comparison to South Africa. And as all developers know... those old dinosaurs need maintenance - something most of us dread. Conversely this is also where opportunity presents itself, as modern tech stacks get to replace, integrate with or sometimes run alongside legacy code. Your newly minted AWS Lambda might very well end up integrating with a service that exposes an old COBOL API. A colleague of mine was recently involved in a complete rewrite of an insurance company's premium calculation engine (originally written in Turbo Pascal) in C# and Azure.
Tech stack for Java developers
Tech stacks for Java developers are distributed along a wide spectrum of technologies. I've come accross JBoss, WebSphere, Spring MVC and Spring Boot being used by two teams sitting next to one another. Much more prominent here also, is the adoption of containerisation (ie Docker) and microservice architectures. Given the scale of online services and products here, there is a far greater emphasis on scalability.
With a greater demand for scalability comes a commensurate demand for light-weight solutions. There seems to be an unwritten consensus here: Java EE is going to be around for a long time still, but the focus is shifting away from heavy-duty EE implementations onto lightweight solutions that makes opportunistic use of EE APIs.