In a large dutch oven or pot, cook the bacon until desired crispness, remove the bacon from the pot and set aside, keep 2 tbsp of grease, drain any excess.
Add the diced onion and cook until softened and translucent. Add the garlic and cook an additional 30 seconds.
Stir in the flour, allow this to cook for 1-2 minutes.
Stir in the salt, pepper, and paprika. Pour in the chicken broth. Stir to combine.
Add in the diced potatoes. Bring to a low simmer. Cover and cook for 10-15 minutes over medium heat.
Remove the lid, add in the corn and continue to cook for an additional 10 minutes until the corn is heated through and the potatoes are fork tender.
Turn off the heat and using an immersion blender blend up the soup to desired consistency. Be sure to leave some chunks of potato and corn in the soup. The more you blend the thicker the soup will be. IF you don't have an immersion blender, remove a portion of the soup carefully and blend in a blender or food processor. Then return to the pot.
Optional: sear the ham in a skillet over medium high heat for 5 minutes, turning to ensure all sides are seared.
Add the ham to the pot and the cooked diced bacon, setting some aside for garnishing. Stir to combine. If you skipped searing the ham, you will need to turn the heat back on under the soup pot to give the ham time to warm in the soup before moving on.
With the heat still off the pot, stir in the half and half.
Serve soup warm with a garnish of fresh chives or parsley, fresh ground pepper, and cooked bacon.