1) Preheat the oven to 400°F. Lightly grease (or line with parchment) two baking sheets.
2) Combine the water, butter, and salt in a medium-sized saucepan, heat until the butter has melted, and bring to a rolling boil.
3) Add the flour all at once, stirring vigorously until the mixture smoothes out and follows the spoon around the pan; this should take less than 30 seconds.
4) Remove the pan from the heat, and let the mixture cool for 5 to 10 minutes. It'll still feel hot, but you should be able to hold a finger in it for a few seconds.
5) Transfer the dough to a mixer. Beat in the eggs one at a time; the mixture will look curdled at first, but when you add the last egg it should become smooth. Beat for 1 minute after adding the last egg. You'll have a stiff, smooth batter.
6) Drop the dough by teaspoonfuls onto the prepared sheets (a teaspoon cookie scoop works well here). Leave about 1 ½" to 2" between them; they're going to expand to about the size of a golf ball.
7) Bake for about 20 minutes, till they've puffed, they're a medium golden-brown, and they look dry.
8) Remove baked puffs from the oven, and use a sharp knife to cut a slit into the side of each puff, for steam to escape; this will help prevent them from becoming soggy. Return the puffs to the oven for 5 minutes, then remove from the oven, and transfer to a rack to cool. While the puffs are cooling, prepare the filling.
9) To make the filling: Combine the pudding mix, milk, and vanilla, whisking or beating till the mixture starts to thicken. Refrigerate until set.
10) Slit each puff in half around the circumference, and fill with a heaping tablespoon of pudding. Replace the top. It's best to do this within an hour of when you'll be serving the puffs, otherwise they get soggy.
11) Sift confectioners' sugar atop the puffs, if desired.