How to read the formal multiplication rule? I have no problem understanding the question at Statistics Show How To

Question 3: A wedding caterer gives you three choices for the main
course, six starter choices and five options for dessert. How many
different meals (made up of starter, dinner and dessert) are there?

as giving me 3x6x5=90 meal combos.
However I get lost trying to read the formal definition given to me as

Let n, $k_1,...., k_n$ be fixed integers. 
Suppose the set $S$ of sequences $(x_1,...., x_n)$ is such that, 
for each $j$, the number of choices for $x_j$ is equal to $k_j$ 
(regardless of what we chose for $x_1,\ldots,x_{j-1}$). 
Then $|S| = \prod_{j=1}^n k_j$
If we can represent our enumeration problem as counting such sequences
then the Multiplication Rule applies.

What strategies can I use to "get" the formal definition?
As s software programmer I have added line breaks to assist me.
[Update]
After reading Tim's answer, my pseudo code example would be

Select count of distinct starter,main,desert from WeddingMenu

So I wrote in C#
var Starters = new[] { "oysters", "bread", "soup", "fish", "pakoras", "samosas" }.ToList();
var Mains = new[] { "Pasta", "Rice", "Roast" }.ToList();
var Deserts = new[] { "Fruit", "Jelly", "Cheese", "Tart", "Cake" }.ToList();

var mealCombos = new List<MealCombo>();
foreach (var starter in Starters)
    foreach (var main in Mains)
        foreach (var desert in Deserts)
        {
            mealCombos.Add( new MealCombo(starter, main, desert));
        }

Console.WriteLine($"There are {mealCombos.Count()} meal combos");

class MealCombo
{
    public MealCombo(string starter, string main, string desert)
    {
        Starter = starter;
        Main = main;
        Desert = desert;
    }
    String Starter { get; set; }
    String Main { get; set; }
    String Desert { get; set; }
}

I recognise that the formal maths form is more abstract (and thus better?) in that the food choices are unspecified. I guess it is that extra piece of abstractness that I am finding to be a hurdle.

[Update]
After reading Tim's further comment I updated my own words to

Given a set $S$ of sequences  $(x_1,....,x_n)$
Where the number of choices for each sequence $x_j$ is given by an integer $k_j$
Then the number of possible combinations in S is given by multiplying together each $k_j$
That is $|S| = \prod_{j=1}^n k_j$

Is that "formal" enough?

There's no single strategy, but people often use things like:

*

*Take a pen and a piece of paper and write down some simple examples. How do elements of the examples map to the definition? How do they behave if you make small modifications in the examples (change one element)?

*If you're a visual person, sometimes examples can be drawn. In case of things like combinations, you can draw all the possible ones for small examples.

*You said that you have a programming background, so the thing that might work for you is to translate the definition to the code. The definitions are written in formal language, so it is often the case that while you might not understand them at first, you still will be able to translate them to code. Play around with the code, observe results for different inputs, plot them, and write unit tests to check if everything works as you would expect.

There are probably many other strategies that work for different people.
