How to Start BMW Coding/Programming

For a beginner who get starts on coding, programming, creating keys, tuning for BMW, what hardware and software should I start learning and working with?

Here are genera conclusion:

For diagnosis you can start with Inpa and ISTA.
For coding you can use NCS expert (for E series) and Esys (for F and G series).
For BMW programming start with Ista P and WinKFP (for E series) and Ista D and Esys (for F and G series).
For BMW ECU tuning you first need to read/write files – use mpps, Kess, Ktag, Galleto, MMC, PCM, Bitbox, Autotuner …etc.
For manipulating files you need Winols, Bitedit, swiftec..etc
For BMW key programming try Xhorse VVDI, Tango, Lonsdor, CGDI BMW, AutoHex, BMW explorer and many other.

For BMW diagnosis and programming:

How-to-Start-BMW-Coding-Programming-1

For BMW ECU tuning:

How-to-Start-BMW-Coding-Programming-2

For BMW key programming:

How-to-Start-BMW-Coding-Programming-3