what are some considerations to help me decide whether I should configure through the UI, when to configure programmatically
You should make configuration changes in code as much as possible, in particular it helps with


Ease of deployment
Consistency across deployment environments
Consistency across developer team environments
Configuration changes are tracked in version control.
The required configuration for the application is in the code base.


If you haven't already, checkout the Features module for a good approach to exporting and synchronizing configuration between environments.

For example, you can build a Feature module for your 


Views
Panels
Content Types
Fields
etc..


and synchronize the changes in code by rebuilding the relevant feature module on dev, deploying it and reverting the feature module on the deployed environment.