Design ideas:
- build Minimal Viable Product. (If it's too simple - I can add features, but overengineering is also a mistake)
- console
- clarify requirements (I emailed this question to you, got no reply in 1 day & implemented simplest way):
if "the choices of multiple customers as input" to be continuous in time: use some persistence container (may be in-memory db)
if the input to happen once / (in a single point of time) than the solution would be a function:
Input -> BuildSchedule -> Output , without a state
Scala programming language
IntelliJ IDEA IDE
A few unit tests examples with ScalaTest, incl. example input/output correctness check.
Code with lots of comments is a bad practice for production, but is an effective way to communicate in demo.
To fix "silent incorrect input skips", could be used Either(Left, Right) monad, instead of Option(Some, None)