Dino Esposito: "There is no silver bullet"

Dino Esposito on hypes & realities around business applications, and his view on Wisej.NET as a game-changer in enterprise modernization.

Dino, you are one of the most prolific and experienced authors and professionals in the .NET landscape. What’s your view on trends in software development for business applications?

We must first agree on what’s intended by business applications. My definition of a “business application” is: a critical software application that executes vital tasks for the everyday operations of an enterprise. Such applications are for the most part “legacy” in the sense that they are so critical that replacing them with fancy newer clones is a serious matter. So they stay there, year after year, run 24x7, and technologically speaking get older every day.

However, at some point there’s the unavoidable need to rewrite existing applications or build new ones to serve new needs. Nobody could realistically afford years of design and coding – not much for the costs but for the time to market. Today, business apps are almost all web applications writing to some database, calling into some API and exposing a few endpoints for others to call. They need a robust authorization layer, tens of forms, validation rules and quick CRUD code. In the folds of this, there might be room for some nice algorithms, coding of freaky business rules but the core is one: Web UI and CRUD.

The question boils down to “can current trends in web development satisfy the need of having quick-dirty-and-working business apps?” With all the hype on low-code, my answer is a sounding NO. A plain web monolith, ideally sliced into logical layers, is good as long as the team has a strict policy for coding - common architectural patterns, common writing style, shared library of tools, and plenty of ready-made private Nuget packages to reuse logic. It’s not about web trends and fancy libraries. It’s all about having powerful tools for the job and the people.

If I was to develop a new enterprise-scale software solution, which base technologies and architecture should I choose?

I currently work in sport-tech and our company developed and maintains software platforms for running everyday operations in worldwide professional tennis and padel tournaments. If something goes wrong about on-court operations, player bookings or scoring, it’s likely on us. Our systems are not rocket science and do not rely on an infinite workforce.

Our business applications are ASP.NET web applications with Azure SQL database underneath written as modular monoliths. Altogether, the topology of all our platforms makes for a rather intertwined graph of independent services. Each node, though, is a monolith according to the principles of layered clean architecture. No micro services, no server-less, no buses (if not for syncing purposes when needed): just a bit of cache and optimal SQL commands. It’s easy for everyone to pick up and all of our newbies feel home in days. By the way, we are 15 people and except me all of them joined with zero practical software experience. Only the youngest two come from a computer academic background.

Our goal is having a working set of technologies and a clear architectural pattern and stick to that. In this way, we teach how to do things right, letting developers figure out whether (and why) it was also the right thing.

How does Wisej.NET fit into this picture?

When I started my career it was the season of Windows Forms that Microsoft turned into Web Forms for the web. That moved thousands of developers from the client/server space to the Windows and Web space. Following the sirens of frontenders we lost pragmatism and grew up a generation of technology purists. Technology serves us – not the other way around.

Wisej.NET takes the client/server old-but-terribly-effective programming style to the next (and modern) level. It really shields you from most of the weirdness of HTML and CSS and JavaScript (many may remember that was the same slogan of ASP.NET Web Forms 20+ years ago) and at the same it sits in between your frontend and your backend. Wisej.NET doesn't require you to touch your very valuable pieces of business logic and databases but puts on top of everything a modern user experience. Magically enough, this applies whether you are keen to build a new business app or renew/restyle an existing critical one.

In one of your recent talks you mentioned “unpopular opinions about software architectures”. With all your experience as a long-term developer and consultant, which approaches and trends in recent years do you question?

I specifically question two points: blind fidelity in what others (big companies) have done and the religion of unit testing. It’s OK for Netflix or Amazon to have “invented” a highly fragmented architecture someone called microservices. But what worked for them (and was a matter of survival) may not necessarily work for you, especially if you’re a startup.

Start simple and grow with your business. When I say this, someone typically replies that such a crazy level of micro development helps reach a viable product sooner. If your startup has to do with software, it’s a clear issue to have unstable products. If it just needs software to support other types of business, it’s another business built on fragile foundations. Blind adoption of technologies is something I really condemn.

Nearly the same for unit tests. Not because you have code coverage of 100% you’re safe. The religion of unit tests is crazy. At the same time, it’s “mandatory” to think of software so that it can be testable. But design for testability is a completely different thing.

How would you tackle the transition from a conventional Windows client/server application to a web-based application?

Overall simple question and a foregone answer. There’s no silver bullet and it’s just a way of rewriting from scratch: starting with an empty appropriate container to fill up with as many reusable pieces you can have or identify.

There are not many approaches to migrate a legacy app. And Wisej.NET does help significantly in doing so. It lets you quickly create an empty modern web container to fill up and link to isolated pieces of the legacy backend logic.

What are typical challenges and pitfalls when migrating and modernizing legacy applications?

Isolating sore points – that is, wrapping relevant blocks of code everybody scares to touch into black boxes hidden behind publicly contracted interfaces. Once you have a clear list of connection points to readymade (safeguarded) business logic, you can easily build any UI and interaction paradigm on top of it. Including the next big thing of conversational programming.

How do you see the application modernization options with Wisej.NET?

We keep an eye on Wisej.NET as a platform for quick development of new applications. Our sport-tech company is not probably the ideal adopter of Wisej.NET because we have–in some way–our own internal platform that gives the same services. But we applied most of the same principles. On the other hand, I have recommended Wisej.NET to a client company needing to migrate to the web a huge Windows application managing operations in a large hospital and that was a blast. Smoother than in your sweetest dreams.

Thank you, Dino!

The interview was conducted by Thomas Althammer.

Last updated


© Ice Tea Group LLC, All Rights Reserved.