Melt the butter in a large pot over medium heat. Add the diced onion, carrots, kosher salt, and black pepper, stirring well. Cook for 10–12 minutes, or until the onions and carrots begin to soften.
Stir in the minced garlic and cook for about 30 seconds until fragrant. Sprinkle the flour over the vegetables and stir thoroughly to coat. Cook for 1 minute, stirring frequently.
Slowly pour in the chicken broth, whole milk, and Worcestershire sauce, stirring constantly to avoid lumps.
Add the diced ham and rinsed beans, stirring to combine. Reduce the heat to medium-low and simmer, stirring occasionally, for 15–20 minutes or until the soup thickens slightly.
Remove the pot from the heat and stir in the shredded cheddar cheese until completely melted and the soup is smooth.
Serve warm, garnished with chopped parsley and additional shredded cheddar cheese if desired.