Be honest with your customers. Give them their code.
After my last post, my colleague (thx Kris) and myself had a small talk about what we can and what we cannot do in the database. That made me thinking about an ethical aspect of the development and where we should store the code which we do for our customers.
No problem in the old days
In the days when we did a development in C/AL there was no problem. Everything was stored in the customer’s database – that was great for the partners and the customer. So when the customer wanted, he was able to change the code by himself (of course with the proper license). Was able to change a partner whenever wanted – yes such situations happen (let’s face it no one is perfect) or was able easily to have more than one implementing company (I was in such situation while ago).
It makes a difference now
Although I think that extensions 2.0 and developing in AL is great (yes – really great) there is one thing which needs our decision before starting the project.
Where should we store our code repository?
There is really a difference if you store all modification on your own laptop, git repository on your own server or you give full control to your customer.
And now I will give you few options to finish reading this post, all depends who you are. But if you really curious then read all – you will see the problem from the different angles.
I am a customer – why I should care?
I put you at first point because I really think that you should read this blog in the first place. And let’s answer this way:
you should not care if you do not care about money and time.
But if you do, then if the code will not be on your server (or in your repository) you can end up bound only to one partner. No one will be able to help you if you would decide to change a partner because no one will be able to look and modify any of your code – means you will pay double to fix it.
Did I scare you? Great! It was my goal – if you want to have flexibility always demand to have your own GIT repository where you store all changes and whole code.
I am a partner and want to take over the customer – no code no take over
If one day your sales manager will come and will say:
hey I have a great customer. He is not happy now let’s make him happy.
Then be aware – first what you should ask this person is:
can we do an audit of the code?
If you cannot because there is no repository for changes at the customer side: do not go this way! Why? I bet that you do not want to end with customer saying:
why I should pay one more time for the report if I only want to add one very very very small field on it?
Try then explain that it is because we cannot modify the report – there is no code which you can use.
I am a project manager and have only one developer – I trust him
Good! I would also trust him – ok maybe not more than my four years daughter trying to sneak behind my back to steal a cookie, but I would trust. But I would not trust the machine which he is using. Everything can happened with it – and if it can then for sure it will happened. Trust me (more than my four years daughter in this case). So imagine the situation that this developer store the whole extension code only at his own laptop and in a moment you are left without anything – no code. First of all you have a problem but in second place you start thinking my customer has a problem. Moreover, even if all is fine, your developer is still working, the laptop is fine, there will be no history of changes – that also can be a problem.
I am a partner and store code on my server – I do not want to share it with other customer’s partner
I must say this is not perfect situation but it is better that any from above. But my first question is: Do you do the backup? If no then start… please. If yes that is great. You don’t want to share the code? I am not as happy as can be but ok – your decision. However please make one thing for me please mark show your code in the extension. It will help both of us – and I will do the same for you.
Whoever you are – be honest
I think the best option is to give the code to the customers. Also inform them that now the code is stored outside the system and that they need to do some investments (even small ones) that the modifications are secured and can be in future easily access by anyone they want. At the end they paid for it so they should own it.
As I wrote this is also ethical problem – not telling your customer that, makes him bounded only to you or your company. That is not ok – and makes him in future, not only angry with you, but also not happy of using Business Central.
Not showing the code, if you doing the customer’s specific modification, is not ok for me as well. Let’s make our life and cooperation between partners easier (the different story is not showing code of your own registered module – let’s not mix those two).
To be honest, I don’t understand the matter of the discussion (when I read the start of article) – we do code for customer and customer pay for it => This code belongs to this customer (because customer hires “you” to do this code).
And you should transfer code (does not matter either FOB or TXT files). And you no need to care how this code will be handled in the future. But if you are the customer (does not matter do you have 1 or 100 developers) you need to care about your assets. And you can use any ways to save it.
Second, if you think about ” ..can we do an audit of the code?..” – just think WHY do you need to do it? What is the matter for the task which the customer expects from you? If this task – to normalize the database – it is OK. But if it is just 1 report or function? You need to be a consultant and be in customer’s shoes a little.
P.S. I think the ethic problems are linked with people and business processes inside company, but not with a usage of sub-type of systems (like Business Central or no Business Central) 🙂