http://www.perlmonks.org?node_id=339239


in reply to Ingy's "Swiss Army Light Sabre" - or, "how do you design your APIs?"

Often you want two APIs, a comprehensive and flexible one, and an idiomatic DWIM wrapper Blah::Simple.

One way to reality check your design decisions is to compare your API to another API from a different but comparable domain.

Another test (that I need) is to return to your design after some months. "What was I thinking?!" is often the result when you lose the blinkers of your original problem.

I don't like API designs that second guess you, nor those that strictly follow a non-Perlish design (usually found in library or system wrappers)