The Essence of ERP Solution Design and How To Get There
When I started developing in Microsoft Dynamics 365 Business Central there wasn’t much training material available. Who remembers the Application Designer’s Guide? In today’s world, we’re not talking about design in the sense of features and functionality, rather the design and structure of our actual code, and the amount of information out there has grown exponentially over the last decade.
With so many resources, what is the essence of Enterprise Resource Planning (ERP) Solution Design and what’s the roadmap to get there?
To start, there are so many amazing people out there who want to pass on their wisdom about how to write code with videos, diagrams, design patterns, talks, conferences, and more. It’s great, but it can be overwhelming.
Too often messages around development are: “This is the right way to code this part and, of course, it’s my way.” This approach ignores the fact that things may be coded completely differently depending on what characteristics are needed for the application.
This is my favorite example, albeit overly simplified. Which one is designed better?
|MyArray := 0; |
MyArray := 1;
MyArray := 2;
MyArray := 3;
MyArray := 4;
|for index := 1 TO 5 do MyArray[index] := index – 1;|
Most would developers would say that the first example is horrendous and the second approach is correct. This type feedback is likely emphasizing code readability in their evaluation: “This looks like what I’m used to.” They may also think that the developer who wrote the first example needs more education on the programming language and would surmise that “they must not know about loops yet.”
What they would miss is the first example runs at least 3x faster and perhaps emphasizing performance was the reason for writing their code this way.
The Pragmatic Programmer
In today’s fast-moving world of development, we should take a moment and revisit how we think about design. The essence of good design is simple: Good Design is Easier to Change Than Bad Design. Simple, right? Extrapolating that a bit further to code, we can ask ourselves, “Will the code be easier to change in the future?”
This is the “Easier to Change” (ETC) principle and is far away the simplest way to evaluate the design structure of your code.
So how do you integrate this newfound value into your development process? This ETC approach does take some continuous reinforcement and post-it notes on the side of a desk aren’t going to do the trick. One way to transition to ETC is by using a VS Code extension tool and then search for “pragmatic programmer. The the first extension in this list is the correct one.
When using the extension tool, a message appears every time code is changed and provides a reminder if the new changes adhere to ETC principles. Going forward, this process will always make code easier to replace if new requirements appear and doesn’t get in the way of future progress!