Place warm milk in the bowl of a stand mixer fitted with a dough hook OR a large bowl. Dissolve yeast in milk and let stand 5 minutes until foamy.
Mix honey, egg, and salt into yeast mixture until smooth. Add 3-1/2 cups flour to bowl and mix on low speed OR with a wooden spoon if making dough by hand until dough pulls away from sides of bowl, about 2 minutes of mixing (if dough seems a bit wet, add additional flour by the tablespoon until dough pulls away from sides of bowl)
Add softened butter while mixer is running or fold in by hand with a wooden spoon until butter is combined in the dough.
If making dough in stand mixer, knead dough in mixer on low speed 5-7 minutes until dough is stretchy and elastic. If making dough by hand, turn dough onto a lightly floured surface and knead by hand until dough is stretchy and elastic, about 10 minutes of kneading.
Place dough in a greased bowl, turning once to grease top. Cover bowl with plastic wrap and let rise in a warm place at room temperature 1 to 1-1/2 hours until dough is doubled in size.