As Delphi (Win32) developers we are used to the comfort of the VCL. And if the VCL isn’t good enough we can get some of the many 3rd libraries and party components (such as encryption libraries, better grids etc.) that are available on the market. Or we can, at least in theory, write our own. And that’s good; up to a certain point.
What is not so good is that in this way we are locking ourselves into various 3rd party products (and our own “2nd party products”) in a number of different ways. For example, when a next version of Delphi comes out, the decision to upgrade becomes a trade-off between the new features of the new version Delphi and the requirement to upgrade our 2nd and 3rd party toolset. It is possible that we may get stuck with an older version of Delphi because we are not in a position to upgrade our toolset. For example, a 3rd party tool supplier may have “moved on”.
But perhaps more importantly, in terms of collaboration this also makes it harder for us to transfer skills from one project to the next, even if we find another Delphi project to work on. Unless we are lone wolf developers who can pretty much do what we like, we are likely to encounter other developers using different toolsets. And if we want to join them on a project there will be an additional learning curve as a result of getting used to their toolset. Keep in mind that the larger and more complex a project becomes the more likely it is that it is heavily dependent on a toolset consisting of various libraries, 3rd party components, and perhaps frameworks. And because each project typically reinvents its own toolset this can put serious limitations on the reuse of our skills between projects.
The .NET frameworks address a significant part of this problem by pushing an enormous, standardised and ever expanding toolset into the operation system. The Framework Class Libraries in the various versions of the .NET framework (see picture) are like VCLs on steroids. They contain a lot of the functionality that you would otherwise get from 3rd party components and libraries. So by learning to use the .NET framework you will acquire skills that can be transferred much more easily to other (.NET) projects. For example, it is not uncommon to for a company to contract developers for a .NET project regardless of the programming languages with which the developer has experience: as long as one of them is a .NET language.
So the main reason to step into the .NET world (whether or not you want to keep that other foot in the Delphi world as well), is that the skills that you will acquire will provide you with more opportunities for future projects.
As Anders Hejlsberg, the (former) chief architect of both Delphi and C#, puts it:
“If you look at languages today, they live and die by whether they have good framework support, as the frameworks are so big and so huge and so rich that you just cannot afford to ignore them anymore. And that’s why you’re seeing so many languages being built on top of .NET or on top of Java as opposed to being built in their own little worlds.”
(http://www.computerworld.com.au/index.php/id;1149786074;pp;1)
Alex Fekken





