compose is a traditional operation. Its order was decided by mathematicians. However, like a lot of things originally decided by mathematicians, the order isn't a very convenient convention for programmers. We include the operation anyway because functional programming has strong ties to mathematics.
In languages like Haskell, you only have the compose operator, so you have to read and write everything backwards, like:
filter even . concat . filter ((> 2) . length)
The filter for length greater than 2 happens first, then the
concat, then the filter for even numbers. You get used to this, but it's still annoying, so other languages create compose operators like
andThen that let you write a composed function in the order it executes. Anyone could easily add such an operator to their program in Haskell too, for that matter, it just wouldn't be idiomatic Haskell any more.
Feel free to use whichever one makes it easier for you to translate from your domain.