One of the decisions you will be faced with when designing forms is the decision of whether to make certain fields picklists or lookups. To the purist, this may not sound like such a big deal; picklists are for predefined lists of options and lookups are for relating entities. In my mind the choice is not so clear.
Picklists are great, but what if you need to add or (more importantly) remove options from the list. At the very least, this involves opening up the customization and changing the available options for the list. Special care needs to be taken when removing options though, as existing records may refer to the value being removed. Best practice would then be to re-map any existing data to a valid value in the picklist before removing an option. As you can imagine, this can get a little cumbersome and even present problems with historical data if you really do want the value to stay, but want to “retire” the option and not allow it to be selected in the future.
So how can lookups help? Although they are a bit more work to set up in the first place (i.e. you need to actually create a new entity for the list of options), they are much easier to support and maintain over time. To remove a value from the list, you can Deactivate the value that is no longer needed. To add a new option, simply create a new record in the list. Another added benefit is that you are not limited to a single string of text. You can include additional supporting fields (such as description, abbreviation, code, etc.) for use in reports, merges, lookup dialogs, queries, etc.
I am not suggesting that all picklists should be implemented as lookups. There are some that legitimately make sense to be picklists because the value options are not expected to change (much) over time. The decision just needs to be made with eyes open to the implications of each choice.
Suggestion:
One approach that I have used is to create a generic “Picklist” entity and a related “Picklist Options” entity. The Picklist entity simply defines the name of the list and perhaps a description. Then Picklist Options can be added to the Picklist. I then use Stunnware Filtered Lookup to limit the options available for a particular lookup field. This provides the flexibility to use lookups in place of picklists, but without needing to create a new entity for each lookup.