Perhaps the bits I find most difficult right now will feel mundane once solved, but apart from reverse engineering the code which is easier because there is more information available for German ECUs than the Japanese ECUs I did for 10 years (you'll find quite a bit of my code in many Evos and GT-R for things like speed density, map switching, realtime tuning, faster datalogging, increased limits, alternative boost control etc), but more difficult because the German stuff is far more complicated, the biggest challenge has been automation of patching to allow increases in features/complexity, reduction in bugs, make it maintainable.
For example, some BMW ECUs use three different methods to access 3d maps, depending on their inheritance from N54 models, Bosch, or for some unknown reason, a new BMW method that is worse than the other two. Just trying to work out where the code is that uses a 3d map can be really difficult, and of course if you want to make that map realtime and flex fuel, you not only have to understand it, but then alter it, and automate that alteration to do it on any scale whilst covering all the side effects and edge cases.
Once that was solved, I had to find some PC software to run it all... that had numerous boring setbacks and disappointments, for example, buying rights to source and distribution for a package that should have almost "just worked" back in April, but finding that it took 40 seconds to do something my own code did in 3 seconds and for which the author didn't want to acknowledge a problem as they inhabited a world of simulation instead of real hardware.
Then it all needed protecting, which has cross fertilised the N54 MHD work.
So this year I've learned: C, C#, IDA Python, Win32 API, J2534, CCP to get to where this now is.
With the future of MHD F series looking very bright indeed, it seems that my niche modifications that were never going to justify the effort on just the E series N55 could reach a wider audience.