In a large bowl, place the egg yolks, cornstarch and about ¼ cup of the milk. Whisk to form a smooth paste. Set aside.
In a medium saucepan, place the rest of the milk, milk powder (if using), sugar and salt. Heat over medium heat and whisk to dissolve the sugar and salt. Heat until the milk starts to steam.
Remove the milk from the heat.
Place the bowl with the egg yolk mixture on a non-slip surface (e.g. on a cloth napkin or non-slip mat).
Take about ½ cup of the hot milk and slowly pour it into the egg yolk mixture, while whisking the egg yolk mixture constantly. Here you're only adding enough milk to warm the egg yolk mixture.
Add the warmed egg yolk mixture back into the saucepan with the hot milk.
Heat the pudding mixture while whisking constantly until it starts to thicken. Make sure you reach the edges and the bottom of the saucepan as well while whisking. Otherwise the pudding will catch at the bottom of the pan and become lumpy and burnt.
Whisk and heat the pudding mixture until a few bubbles break the surface.
Remove the pudding from the heat and add the vanilla extract and softened butter. Whisk until the butter completely melts and mixes in with the pudding, along with the vanilla.
Transfer the pudding into a large bowl and cover with plastic wrap, making sure the plastic wrap touches the whole surface of the pudding (this is to prevent a skin from forming on the surface).
Let it chill in the fridge for at least a few hours, or until the pudding is completely chilled.