Dice the croissants into bite-sized pieces. Place half of the bread into a greased 9x13-inch baking dish. Add half of the diced ham and half of the cheddar cheese. Repeat with another layer.
In a large bowl, whisk the eggs until well beaten. Add the half and half, dijon mustard, Worcestershire sauce, salt, garlic powder, onion powder, and pepper, whisk to combine.
Pour over the bread slowly. With the back of a spatula, press down the bread pudding to help it absorb the custard.
Preheat the oven to 325°F. While the oven is heating, let bread pudding sit on the counter for 20 minutes, this step is necessary so the bread has time to absorb the custard, keep pressing the top down with a spatula to help.
Bake for 20 minutes, take the bread pudding out of the oven and sprinkle the parmesan cheese evenly on top.
Turn up the oven to 375°F and bake for an additional 20-25 minutes.
The bread pudding will be golden brown and toasted on top. The sides should slightly pull away from the baking dish.
Let cool for 15 minutes in the pan, garnish with scallions, optional.
Notes
This makes a nice large batch for the whole family.
This can be served for many different meals.
Other cheeses can be used, see above for ideas.
If you don't want to use croissants you can use another sturdier bread, see above for ideas.
Let the bread soak for at least 20 minutes to soak up the liquid.
Use a small dice on your ham, you can buy it this way or buy a block and chop up yourself.