I totally agree about having them as programmatic values instead of magic strings, and we should do something towards that. However, I still think it's wrong to have these as enums. Another option could be to have a subset of these as `static final` strings, specifially the popular ones. That way, we could use them even in places where we can't use the enum today, such as:
```java
@Schedule(info = "epicJobOfAwesome", hour = "07", timezone = TimeZones.AMERICA_MEXICO_CITY)
```

Having them as enums and doing `.oridnal()` on that enum introduces a very strong dependency on the list of these being unchanged and in the same order. The ordinal value in itself is totally arbitrary without this list of how to decode the value. Why are we even doing `ordinal()` on these?

Why are we storing them on a `user` (or other places as well), isn't that wrong in the first place? A moment in time should be rendered in the timezone selected by the device the user is currently working on, at least IMHO.

Sorry for bringing up so many points about a simple thing as an enum. I totally agree about having them as some sort of compile-time constant instead of magic string.