One thing to keep in mind when coding is that if your car goes in for service, and they need to do anything with the software to fix it, it will come back with the stock, default functionality, so you'll have to redo things. For this reason, it's probably easier to have the ability to do it yourself. Some of the people that do it for you will redo it for free, but not always, and then, you may have to wait rather than doing it yourself. There haven't been many recent software fixes, but if you need to replace a module for some reason, they will probably need to redo the software to complete the repair and you'll be back at square one.
2011 535i x-drive GT, 2014 i3 BEV