I finally got in touch with the AL-language and VS Code in the spring of this year. My work is project-based and therefor, when a project ends, my next project should always include the latest Business Central version. In the time of Dynamics NAV the technological change was marginal compared to the latest changes with Business Central. Throughout the years, the .NET-framework was introduced, instead of "find(-)" it was possible (and recommended) to use "findfirst", and the code editor got some updates too (colored syntax highlighting, inspect definitions, collapse code blocks). All in all, they were nice additions but nothing groundbreaking ... ok, the introduction of .NET was a little bit groundbreaking.

Now with the AL-language and VS Code, Microsoft turns C/AL veterans into survivors of a car crash - they used to know how to walk and some things are still similar as before, but they have to learn key skills from scratch again.

Suddenly from the sleepwalking-like ability to support different version with a lifespan of more than 20 years, veterans have to know about version control, Docker, and which AL version you should use.

BUT I LOVE IT!

Finally, after all these Neanderthal-like years, the development of Business Central has been elevated to the level of modern programming languages with improvements like built-in capabilities to support the work of multiple developers in a single project, version control that allows a code history, and easy creation of Business Central instances.

I would also like to use this space to write about how much I love the new coding experience. Fully integrated IntelliSense, optimized to hack code into the editor - yes! But even with experience in Python before, I still forget that the parentheses are inserted automatically and I type them still every time by hand...

I think everyone with some experience in NAV development welcomes the recent changes like a long lost friend.

Going two steps back to go one step forward

It is a lesson of life - where the sun shines, there is a shadow. The possibilities that make working with AL and VS Code so great are a big hurdle for new talent.

I remember my first days with NAV. My manager at the time saw some potential in me, handed me a 120-page introduction into C/AL, and I was more or less ready to roll. The original concept did make it easy to produce quick results, which could be inspected on the screen. It was also very easy to get a glimpse of options within C/Side. It was possible to press CTRL + F4 nearly anywhere and the Properties Dialog showed all available options. Especially for beginners, this overview was very useful. In combination with the names of the options, it was possible to guess with a couple of tries which option needed to change to produce the desired result.

Also, the design of new tables or the creation of new fields was very easy. The graphical user interface made it possible to get a feeling of the possibilities with some clicks around the menu.

An empty canvas

Now, with AL and VS Code the experience is like going from Windows back to DOS.

There is a GUI, of course. But the GUI is standardized to cover the needs of programming languages in general. That is why everything related to AL in VS Code has to be controlled using the keyboard.

A person who starts a new project is greeted with an empty screen. All kind of options, properties, attributes, fields, and triggers have to be entered by hand. Unfortunately, VS Code does not provide an overview of which options are available. This means for new talent, that you either need a good relationship with your co-workers to ask a lot of questions or you must go through a lot of documentation until you know what is possible and what is not.

Unfortunately, the official documentation for the AL-language has still some gaps. For example, the easiest way to create a FlowField is by looking up how the property string is generated in C/Side and copy it into VS Code. Also, the new native integration of JSON is a headache because the official documentation does not contain a lot of examples.

This experience could cause frustration, especially for someone without prior knowledge about NAV or programming in general.

There is more to learn now

....Read More