28. September 2017
Why I like where Dynamics NAV / 365 currently is
I usually write about specific technical problems and their solution but this will be a more general post. I was at Directions NA this year and saw the excitement – though not in a positive way – that the opening keynote generated. To be completely honest I wasn’t listening too closely as because of sheer stupidity I had just killed the demo environment for my session about Docker with Freddy Kristiansen right after the keynote. But the buzzing that Steve Mordue describes here got me back on topic.
A lot has been written about what Microsoft did there, why it does or doesn’t make sense and how it was changed. I completely understand why that must be frustrating to sales, marketing, business development and consulting. But I fortunately am working on the technical side of things and want to give my two cents on that area. If you think back only three or four years, we really were in a not so good place: A lot of customers were still using 2-tier, including those still on a native database. The plan for the future was sketchy at best with the huge change of switching to 3-tier, getting rid of forms and re-doing all reports. The editor and the whole dev environment was not state of the art, to put it mildly.
When some years earlier I first saw NAV development I really was dumbfounded. Coming from a Java / C++ environment with tools like Rational Application Developer or Eclipse and source code repos like SVN or CVS I couldn’t believe it. The first conversation went something like this:
I: “So, this is the development environment, right in the client. Neat. Why are you not using code completion?”
Colleague: “We don’t have code completion”
“Uh, ok, interesting. Why don’t you define variables?”
“They are defined, you have to open the menu and then click here for the local variables and then there are global variables and here are methods. You can also have code in actions, but you will only see that through the menu here”
“Oh my, isn’t that a bit confusing and leads to errors? You probably will use diffs with previous versions a lot?”
“Well, you see, there is no integrated versioning system, so we built our own solution based on SQL triggers that does something similar”
“You are kidding me, right?”
I wasn’t exactly thrilled, as you might imagine. Then the nice guy working on infrastructure came and told me that you had to manually grow the (native) database if it got near the capacity limit. And that all install and config tasks had to be done manually. I was ready to just turn around and run to my previous employer asking them to take me back, but fortunately I decided to still give it a try and it worked out quite well.
Look at where we are now: C/SIDE came quite a way, although it still obviously is not a modern dev environment. More importantly the road to VS Code is very clear and hopefully a lot of us will soon be able to use it for most of our work. This arguably is the hottest dev environment right now with more and more people switching to it. I couldn’t believe it when at MS TechDays Germany 2016 in Darmstadt the one and only Erich Gamma (read this if you don’t know who that is and even if you are a NAV developer, read the book!) came on stage and spoke as lead of the team developing VS Code (I think he said that, but am not sure. I was kind of starstruck for a moment). I was still living in Steve Ballmer’s “Linux is a cancer” world and now Microsoft created an Open Source editor for all languages, lean, powerful and easily extendable.
Even more importantly, for the NAV Service Tier the good old “eat your own dogfood” mantra is clearly working: Warning messages about blocked tables in the client no longer showed a meaningful error message when you switched to 3-tier, but as soon as Microsoft became hosters themselves, we got the very nice block analysis tooling we now have. Finding performance problems could be a huge pain because you almost always got the info only after the fact with no way to track it – now we have log entries for long running statements which at the very least give you a starting point. Compiling and loading the business application mitigates a lot of problems as it allows restarts without painfully slow performance afterwards. The whole delegation / SPN setup in 2009 and 2013 was an incredible mess, now almost all scenarios work out of the box.
Shared schema and instant upgrade are one more example of Microsoft moving in the perfectly right direction, even if probably only because they now feel the same pain that we felt for years. If you are at Directions EMEA I very much recommend going to Kennie Pontoppidan and Jens Moller-Pedersen with their sessions about database and platform improvements and about running NAV on Azure as well as Morten Jensen speaking about continuous upgrade. Talking about Azure, it would have been quite easy and not wholly surprising if Microsoft would have decided to split their code base, work mainly on the Cloud stuff and let On-Prem slowly (or not so slowly) die. But again they made the right decision and kept it one and the same. If you’ve read any of my blog posts in the last 12 months you will know that I also absolutely love Docker and how quickly the NAV team adopted and supported it, so I won’t write about that again.
Those are just my personal highlights from the last couple of releases, there definitely is more like administration with PowerShell, multi-tenancy or NST loadbalacing and probably also some things I forgot about, but that kind of isn’t the point. My point is that the NAV team did an incredible job moving forward, bringing the old NAV infrastructure into a much better shape. Not everything is perfect with e.g. still quite some uncovered scenarios for extensions or the not ideal implementation of events. If I had three wishes I would like to see at least some basic object orientation introduced, splitting up the NST in microservices and stateless user sessions to allow really dynamic scaling. But if you look at the progress NAV made over the last couple of years it is easy for me to accept the few problems as maybe growing pains and my wishes as topics for the future. On top of all that I see how the NAV team (and Microsoft in general) drives community engagement e.g. through GitHub repositories and I just love it. This is exactly how I personally want a vendor to behave: Stay on top of the game, move forward, eliminate problem areas one by one and open up for feedback and actual technical involvement of your users and partners.
Again, I get why the sales, business and product mangement people are angry and frustrated and I hope that Microsoft will clean that up soon. And obviously the world isn’t perfect from a technical standpoint as well, but overall and considering where we are coming from, I almost couldn’t be happier with where NAV currently is and where it very likely will go.