Consider a lead nurturing program for people who love basset hounds. (Anyone who knows me knows I would be the first person on this list.) Your sales team has given you a .csv file of customers that they would like you include in this nurturing program. So you import them into a static list within your engagement program. But they don't show up as members in your engagement program. What gives?
Something that often slips up even the most experienced Marketo user is the idea of what makes someone a member of a program. Many of us use static or smart lists as local assets within a program to identify whom we are going to include within the program. But just populating those local lists with leads doesn't make those leads members of that program. Marketo doesn't assume list inclusion alone makes someone a member of a program, as you might have any number of reasons for creating a list within it and end up not using some or all of the leads within that list in the program. The Marketo program must take action on the leads in the local list in a way that tell it these leads are members of the program.
In this case, the easiest way to tell your engagement program that yes, these leads belong to this program as members, is to use a Lead Action to add the members to one of your program's engagement streams. Now Marketo understands that these leads in your list are members of your program – they are in one of its streams.
For other programs, like Default and Email Send, where you are using local lists, you’ll need to tell Marketo the leads are members by changing their program status. It’s that action that tells Marketo the members of the list are members of the program, regardless of whatever other action you may take on them.
You can also use the Members tab of your program and import members directly into your program and set their status as members of the program - though in the case of engagement programs, you'll still have to take an additional action step via flow action or smart campaign to eventually put those members into streams.
Why use lists as local assets instead of importing directly into the program via the Members tab? It depends on the scenario. Sometimes using separate lists allows you to differentiate within the program between different sources of the members (sales-provided list versus people who attended a particular marketing event) or you'd like to keep a simple "snapshot in time" of who you originally brought into the program versus those who may come in later. What other scenarios do you use local lists for?