Melt butter in a stockpot over medium heat until golden brown. Stir in carrot, celery, onion, ham, and garlic; cook and stir for 5-6 minutes, until the vegetables soften and the onions are translucent.
Stir in flour; cook for about 3 minutes. Stir in chicken broth, 1 cup at a time.
Add water and stir to combine. Turn the heat to high and bring to a simmer. Simmer on medium-low for 15 minutes, stirring occasionally.
Taste the soup for salt and add more if necessary. Stir in potatoes; cook for 15 minutes, until potatoes are tender. Skim fat if desired.
With a potato masher, mash the soup a few times, leaving plenty of whole chunks of potato. Season with salt and pepper to taste, add cayenne if desired, and add cream. Stir to combine and heat through.