Preheat oven to 350°F and line two baking sheets with parchment paper.
In a large bowl, beat the softened butter with both sugars until light and fluffy, about 3 minutes. The mixture should look pale yellow and doubled in volume.
Beat in the eggs one at a time, then add vanilla extract. Mix until fully incorporated.
Whisk together flour, baking soda, and salt separately, then gradually fold into the wet ingredients. Mix just until combined — don't overwork the dough.
Using an ice cream scoop or about 1.5 tablespoons per cookie, drop dough onto prepared sheets, spacing 2 inches apart (cookies spread while baking).
Bake for 9-10 minutes, rotating pans halfway through. Cookies should be set but still pale — they'll firm up as they cool. Overbaking makes them crisp instead of soft.
Let cookies rest on the baking sheet for 5 minutes before transferring to a wire rack. Cool completely (about 30 minutes) before filling.
For the filling: beat butter until creamy, then add confectioners' sugar gradually. Add milk and vanilla, beating until smooth and spreadable. The frosting should hold its shape but still be soft enough to pipe.
Spread about 2 tablespoons of filling on the flat side of one cookie (not the rounded top), press another cookie gently on top. You'll get a little overflow — that's exactly where it should be.
Store in an airtight container at room temperature for up to 3 days, or freeze for up to 2 months (thaw before serving).