After having been a high school teacher for a short decade I stepped into the world of software development again at the end of last century. And it was not just plain software development, but a very specific one. It was the world of Navision. A Danish ERP solution that had started to take of and spread around the world. A development platform and an application in one. Being a former high school teacher and C programmer I was hired to set up a new and more structured development curriculum for the fast growing Navision eco system in the Netherlands.
Like yesterday I can recall my first weeks at the office of Navision Software NL in Barneveld where I got my introduction into C/SIDE, the integrated development environment (Client/Server IDE). It was big fun to experience how easily I could customize the existing application or build something a new and at the same time, as I can clearly recollect, I also felt confined. Navision was setting clear boundaries to what I as a programmer could achieve. Feeling restricted at first, however, I soon learned that this was exactly the strength of Navision. Setting clear boundaries and thus making it quite easy to add new features to the standard application. Or as Michael Nielsen describes it in his nice write-up From AL to C/AL to AL on Linked in:
The goal of the language was that it should be possible for people with an accounting background to use it to write business logic in an intuitive way, without any computer science background or knowledge.
C/SIDE allowed me to almost effortlessly define tables to store data in, windows, called forms, to display these data and let the user modify them, reports to print out and share data, codeunits to implement processes, and so called dataports to interchange data with the outside world.
I think these boundaries where a vast part of the success of Navision, or Dynamics NAV as it was baptized not long after Microsoft acquired Navision. But gradually the C/SIDE development environment was holding us back more and more. Newer techniques were harder to incorporate in this IDE, and the various designers and editors looked like stone age for the younger generation that was raised with modern tools like Visual Studio. With the introduction of the new development paradigm of extensions Microsoft’s Dynamics NAV development team, as it was still called at that time, took the wise decision to let go of C/SIDE and joined, by means of the AL Language extension, the wider development eco system that already started to make use of VS Code (Visual Studio Code). And that’s just a little over 4 years ago.
I reckon like me, many developers have been very happy doing their daily work in C/SIDE, but I cannot imagine to work without VS Code anymore. It has become my one-stop-shop. I can manipulate any text file, I can build and deploy my AL extension straight from VS Code, I can include all my PowerShell scripts in my project, commit my code changes to my local repo and push them to the central repo, I can run my automated tests from VS Code and gather their results, I can manage my docker images and containers from it, access my on-prem SQL database with SQL transact, I can … I can … I can … I can adjust VS Code in many ways so it works best for me.
And you know, what is not yet possible will soon be available by the growing number of AL development related VS Code extensions. It’s impressive to see what peer developers have come to add to the power of VS Code. For those of you that are not (yet) AL developers and have never ever used VS Code and then probably also haven’t had a look at the Visual Studio Marketplace, please go there and type AL in the search box and see what is listed.
Gold in the glitter?
But of course, not everything is gold that glitters. Any step into the new has its flip side. The extension technology is still evolving. As it is extending the standard application it prohibits us to make the intrusive changes we could implement in C/SIDE like adding, removing or modifying fields in any table. As such it puts more stress on better thought out implementations. If you are using Business Central (the last rename of Navision/Dynamics NAV) in the Cloud you no longer have direct access to the database. Any performance tuning is in the hand of Microsoft and is unfortunately, in some cases, not always a guarantee for a good experience.
Very likely it highly depends on your personal nature to see gold in the glitter. Having taught over time a lot of developers, dinosaurs like me and youngsters fresh from college or university, it’s clear to me that VS Code is way more supportive to their development work than C/SIDE ever has been. And it clearly supports the move of Business Central development to formal software development, a long road uphill we have been on ever since Michael Nielsen and Niels Dybdahl conceived C/AL.
Programming Business Central is clearly no longer for “people with an accounting background”. C/AL is gone, long live AL!