Malcolm Groves' recent webinar, “Converting a 20-Year-Old Legacy Application to Microservices and Containers,” along with many discussions with our customers and technology partners, specifically Oren Aviram from Delphi Parser, inspired me to write a quick piece on modernization. One of the largest challenges our community faces today is motivating teams to upgrade large legacy applications. There are so many critical applications created with Delphi, powering hospitals, large corporations, police departments, military departments, banks, and more. Many of these are old (and sometimes ugly) but work reliably and fast. Many even choose to keep Delphi a secret and are reluctant to make upgrade decisions.
Over the years, I have heard many horror stories about companies trying to rewrite a Delphi application with other languages. I've shared some, so I won't repeat them, but I'm sure you've heard (or even experienced) similar ones where millions of dollars were spent without success. As a result, people are far more wary about such projects today. But instead of moving forward, they are waiting. It is easier to just run an application that works, postponing expenses and more importantly the effort to organize and manage such projects. We have similar dilemmas on our end with Embarcadero, which still has a lot of legacy, Borland-era technology that usually works fine (until it doesn't).
The time to modernize is now! We have the technology, the alternatives are increasingly less attractive, and Delphi is here to stay.
RAD Studio continues to evolve, getting better and better. There is always more to do, but most agree we are making progress. Our IDE looks more modern and its quality is improving. We have unmatched visual frameworks, especially for Windows. We are updating important areas that affect large and complex projects, which is necessary to stay on top of the evolving technical landscape—all while gradually introducing new language features.
Delphi is highly performant. There will always be situations in which others are faster, but generally speaking it is very fast for common use cases. We do a poor job highlighting that. It benchmarks equal with lower-level compiled languages, such as C or C++, and on par with the Java family of languages. The main contenders for rewrites have been Java and .NET, which both face uncertainty. The crazy race to the Cloud may impact greatly both architecture and cost decisions for these.
One relatively new alternative is a low-code solution. That market is booming for exactly the same reason that Delphi gained its popularity: productivity. One might argue that most low-code IDEs are modeled after RAD Studio. We love low code and think that the space will continue to expand rapidly. Embarcadero’s sister company, LANSA, has an awesome product. Low code is great for some use cases but also comes with limitations. RAD Studio with Delphi combines the best of both worlds. Developers can be highly productive and deliver high performance applications with infinite flexibility of architectures. There may be fewer Delphi developers than there are for other popular languages, but low-code platforms generally have far fewer developers! The Delphi community is a giant compared to low-code ecosystems.
Anyone who looks at the Delphi community today will see that it is strong, vibrant, and growing, with many interesting projects. The “look and feel” of Delphi is more modern, and we have a lot of initiatives to energize Delphi further.
These initiatives take time. The reality is that there are fewer Delphi developers compared to other popular languages, which can be a huge constraint in starting a large Delphi project. Most companies have a small “ninja” team of Delphi developers, but they do not know how to scale. It is easier to go to an outsourcing partner to request 20 C# developers, knowing they will get 40 resumes the next day. There is no magic bullet to solve this. At least with Delphi, you usually don’t need 20 developers but only five, which is a huge difference.
One solution is hiring well-rounded developers and teaching them Delphi. I recently spoke to the owner of a midsize Delphi ISV who told me that after on-boarding six developers with no Delphi experience, they were productive within two months. They used a combination of Embarcadero Academy and in-house training. His team builds highly sophisticated projects too. The skills that make someone a good developer with other languages and frameworks quickly transfer, partly because Delphi is powerful and enjoyable.
We need more specialized training for upgrade projects, as these are a big hurdle. “It takes a special skill to shift through a million lines of code,” according to Oren from Delphi Parser. “It is not for everyone.” We will collaborate with our tech partners and MVPs to get more success stories and guides for our customers.
Al Mannarino, our Lead Software Consultant, says, “Upgrades are not that difficult, just time-consuming. There are tools that automate the bulk of tasks and you get the extra benefit that you also clean the code, making it more future proof.” When you have a project that hasn't been maintained in a long time, it needs cleaning up and maintenance beyond updating it to the latest version. The best way to future proof your projects and minimize the technical debt is to keep your projects updated and maintained. Don't fall more than a version or two behind.
This is different for every customer. It is important that you do not underestimate the effort; instead, put it in perspective of alternatives. When you and your management team have a full appreciation of the business case that modernization is better and cheaper than the alternatives, the decision is easy. The ROI is almost guaranteed to be exceptional. A smart Delphi developer told me that any prudent Delphi team should work to update user experience (UX) and in the process clean up architecture, getting ready for microservices. They can and should be doing this continuously. We have many experts, including partners and ISVs, such as Code Partners in Australia, KER-Soft Kft in Hungary, and BitTime in Italy. All have developed methodologies that modernize Delphi applications and make them ready for the future. Marco did a great blog on this as well: Application Architecture Modernization with 10.3. Version 10.3 is great, with multiple valuable updates. Specifically, 10.3.2 is our largest point release to date and is aligned with our vision of steady, incremental development with every update. Let’s get more amazing Delphi applications out there. The time is now!
Don't forget C++ Builder.