Programming is most commonly about a software update. Other cases of programming could be flashing with different software in case of tuning, compatibility, retrofit. A software update is not completely necessary, but it's recommended. Sometimes BMW releases new software to fix issues. Retrofit is also often required software updates.