By hand or mixer ( I use a KitchenAid stand mixer): In a large bowl, beat the eggs, milk, sugar and salt, then pour the flour and finally the yeast (best if it is fresh or diluted in a little bit of lukewarm milk but optional - the yeast does not need to be diluted to be activated). Knead for 7 minutes at slow speed then increase the speed for another 5-7 minutes. If you are kneading by hand, it will take you about 20 minutes of active kneading.
Add the soft butter, cut into pieces, and knead for about 7 minutes in the stand mixer, until a soft and homogeneous dough is obtained. Stop kneading as soon as the butter is well incorporated, do not go any further or you risk of overheating the butter and then find yourself with a compact brioche. The dough should be very smooth, soft and elastic. If it is sticky or too soft, don’t worry, it is the consistency you are looking for! Do not add flour! The more sticky the dough is, the more the brioche will be melting in your mouth!
Let dough rise for about 1 hour, covered with plastic wrap, at room temperature in a draft-free place (indoors).
Gently deflate the dough by stirring it with a rubber spatula and refrigerate overnight (about 8 hours), covered.
When the rising time is up, turn the dough out onto a well-floured surface and press or roll it into a rectangle, flouring the surface and dough as needed to keep it from sticking. Leave it covered again in a warm place for 30-45 minutes depending on the temperature of the room.
Preheat the oven to 350 degrees F (175 degrees C).
Glaze with the whole egg (avoid drips on the side of the pans as it will impede rising) and sprinkle with sugar or almonds (optional). Put in molds on a baking sheet and bake for about 25-30 minutes.
Remove the brioche from the oven and unmold onto a wire rack. Turn top side up and allow to cool until barely warm.