Cook the Potatoes: Place the cubed potatoes into a large pot and cover them with water. Add a pinch of salt and bring everything to a boil. Cook until the potatoes feel tender when pierced with a fork. Drain well and return them to the pot so excess moisture cooks off.
Mash Until Smooth: Add butter, milk, salt, and pepper to the hot potatoes. Mash until smooth and fluffy. Taste and adjust seasoning if needed. Set the mashed potatoes aside while you prepare the filling.
Start the Creamy Sauce: Melt butter in a large pan over medium heat. Stir in flour and cook for about a minute until it smells lightly toasted. Slowly pour in the milk while stirring so the sauce stays smooth. Cook until it thickens gently.
Build the Filling: Stir Dijon mustard, garlic, carrots, green onions, salt, and pepper into the sauce. Let everything simmer for a few minutes so the vegetables soften slightly. Add fish pieces and frozen peas, then stir gently to coat everything.
Add Cheese and Herbs: Sprinkle shredded white cheddar into the pan and stir until melted. Fold in fresh dill for a clean, herby finish. The filling should look creamy and well mixed.
Assemble the Pie: Spoon the fish filling into a baking dish and spread it evenly. Gently layer the mashed potatoes over the top, smoothing it with a spoon. Add soft peaks for extra texture during baking.
Bake Until Golden: Place the dish into a preheated oven at 375°F. Bake for about 30 to 35 minutes until the top looks lightly golden and the filling bubbles around the edges. Let it rest for a few minutes before serving.