Tuesday, 24 June 2014

How to become a great Microsoft Dynamics NAV developer? Getting started

I have seen quite a lot of questions from confused and frustrated new developers who simply don’t understand Navision. “Why isn’t NAV and C/AL like the development languages they know, why isn’t it more like Pascal, Basic, C++ or even C#?”. Today nobody asks about Pascal or Basic anymore, but 18 years ago they were both quite common. 

Navision always had its own IDE (integrated development environment) called C/SIDE (originally short for client/server integrated development environment) and didn’t use Visual Studio as the development platform. This environment was tightly integrated into the (classic) client and specially optimized for ERP development. With the release of NAV 2013 the classic client is “dead”, only the development part of the classic client remains – now called “Microsoft Dynamics NAV Development Environment”. And this is still where all NAV development is done, with the exception of reports, where the report layouts is developed in Visual Studio using RDL.

Do you want to become a NAV developer or a NAV programmer?

I know many people would say that a developer and a programmer is the same. But I don’t think so. You can rather easily turn a “classic” C programmer into a NAV programmer by learning them C/AL. But becoming a NAV developer takes more time. It requires that you besides knowing the actual programming (C/AL) also have a much broader understanding of NAV. That you know both how it works from the users point of view and more important why it works the way it does. A Dynamics NAV developer should also have a good knowledge of ERP/accounting and business management in general. All NAV developers needs to understand the concepts of debit/credit.

Without this knowledge, then you’re often not able to fully understand the requirements you receive from the customers and/or consultants and come up with the best way to solve this requirement. You not only have to fulfill their requirements in a good technically way, but also in a way so that it is easy to use and doesn’t conflict with existing functionality.  

The NAV developer needs to be able to say “No” to the client/consultant, if they come up with a requirement. They need to be able to come up with alternative solutions or work-a-rounds. Why spend 10 hours creating a new functionality, if you can simplify the requirement and use existing functionality? 

So if a NAV programmer is someone who is able to write NAV code based on a detailed design specification, then the developer someone who is also able write the design specification. Which one do you want to become?

How to start with NAV development?

I therefor always suggest a new NAV developer that they start by learning how to use Dynamics NAV. Install the demo database, and then start using it. If you’re a new NAV developer working for a partner and you have never worked with NAV before, then you should really follow one of the implementation consultants when he/she helps the customer setup a new database. Be a part of the test-group. Create g/l accounts, customers, orders, post invoices, register payments etc. And always ask your self “What if I did this?”.  

A good way is also to follow the basic NAV training like “Dynamics NAV Introduction” and “Dynamics NAV Financial Management” or similar. Taking the “Dynamics NAV Developer” training is of course also a good idea, especially if your plan is to get the NAV developer certification. I know many partners would say that your focus is to get the NAV developer certification. But in my opinion then the certification in it self doesn’t really say anything about the knowledge of the developer, except that he/she might have been able to remember the answer to some standard questions. Personally I would prefer a developer with 1-2 years actual experience, then someone with a certification and less experience.

The debugger

When you have started using the system and feel comfortable with it, then start turning on the debugger. This way you can see exactly what happens when you use the system. You can see which objects are accessed, which code it executes and in which order. 

You should see the debugger as your best friend and tutor into NAV development. And it doesn’t matter if you’re a new developer or an experienced developer. Don’t see it just as a tool to debug errors!

If you are developing to Dynamics NAV 2009 to the Role Tailored Client (RTC) then the debugger will not work here! With NAV 2009 you need to debug using the classic client. With Dynamics NAV 2013 Microsoft released a new debugger that works now with the RTC (now just called the Windows client).

The standard system

So the debugger helps you to get familiar the standard system. Because when you know which code is executed, then it’s also much easier to be able to customize the system. 

So if you’re asked to add a new field to the sales order and make sure that this field is transferred to the posted sales invoice, then you can use the debugger to see how the existing fields are transferred. And you will know exactly which objects to modify.

And the standard system is full of examples. When you are familiar with the standard functionality, then it’s easy to identify similar functionality to what your development task’s requirement. Debug this functionality and then browse the objects, check the code and properties of the standard functionality and then eventually copy whatever code you need. Like if you need a new a new field which is almost similar to a standard field, then it’s easier to copy an existing field and the code related to this field and modify it, than to create it from scratch.

How to optimize your use of the NAV developer forums & Blogs?

As a developer you can get a lot of help from the Forums and Blogs. Often seeing new NAV developers start using forums and blogs as soon as they get their first development assignment. And sometimes doing a full copy-paste from their development assignment, before they have taken the time to understand the assignment themselves. Whereas most of our members love to help you with your specific problems, then nobody really wants to do your job for you. So that’s not the way to use the forums. Often such question will not even be answered, at least not as fast as you want. 

Always understand your own question before asking it. 

When posting a question or searching in a google you should try to make the post or question as short as possible, but at the same time detailed and easy to read. And always mention the product version, as there might be big difference in how to solve a problem in Navision 3.70 or Dynamics NAV 2013. Don’t simply ask “How do I do this?” but write something like “I consider doing it this or that way. But I’m having a problem understanding how to do this (be specific). Is this a good way to do it, or is there a different way it could be done”. This is of course only an example. But the idea is for you to ask your questions so that they can be answered without taking too much time from your fellow member. In general then posts which requires too much time to answer are less likely to get a quick answer. 

This blog post is the first in a series of posts with the purpose of helping especially Dynamics NAV developer newbies with some of the most frequently asked questions. If you have a suggestion to topics I should write about, then please write it in the comments below. If it’s a general question then I will put it on the list to be included in a future post.

Mibuso.com is another great resource, with an online forum that is available to you just for signing up as a member, as well as downloadable code.  You can learn a lot just by searching the forums.  I’d encourage you, as a new NAV developer, to sign up and review the site often.  It’s rich with expert advice – and it’s free!

With a membership to the NAVUG user group, you have several training options, and events you can attend.  They also have a free forum onsite, with excellent community participation. Likewise Dynamics User Group, which covers the entire Microsoft Dynamics family, has many online resources, including a forum, and blogs.

CustomerSource is another resource filled with NAV application and development training and documentation.  Talk to your CustomerSource administrator or VAR to get a login to the site and gain access to the information there.

See Also : 


No comments:

Post a Comment