Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

As a designer, I like providing interfaces that cater to a power/simplicity balance. For example, I think the LINQ designers followed that principle because they offered both dot-notation and query-notation. The first is more powerful, but the second is easier to read and follow. If you disagree with my assessment of LINQ, please try to see my point anyway; LINQ was just an example, my post is not about LINQ.

I call this principle "dial-able power". But I'd like to know what other people call it. Certainly some will say "KISS" is the common term. But I see KISS as a superset, or a "consumerism" practice. Using LINQ as my example again, in my view, a team of programmers who always try to use query notation over dot-notation are practicing KISS. Thus the LINQ designers practiced "dial-able power", whereas the LINQ consumers practice KISS. The two make beautiful music together.

I'll give another example. Imagine a C# logging tool that has two signatures allowing two uses:

void Write(string message);
void Write(Func<string> messageCallback);

The purpose of the two signatures is to fulfill these needs:

//Every-day "simple" usage, nothing special.
myLogger.Write("Something Happened" + error.ToString() );

//This is performance critical, do not call ToString() if logging is
//disabled.
myLogger.Write( () => { "Something Happened" + error.ToString() });

Having these overloads represents "dial-able power," because the consumer has the choice of a simple interface or a powerful interface. A KISS-loving consumer will use the simpler signature most of the time, and will allow the "busy" looking signature when the power is needed. This also helps self-documentation, because usage of the powerful signature tells the reader that the code is performance critical. If the logger had only the powerful signature, then there would be no "dial-able power."

So this comes full-circle. I'm happy to keep my own "dial-able power" coinage if none yet exists, but I can't help think I'm missing an obvious industry-standard designation for this practice. What is that name? And if there is none, does "dial-able power" work?

p.s. Another example that is related, but is not the same as "dial-able power", is Scott Meyer's principle "make interfaces easy to use correctly, and hard to use incorrectly."

share|improve this question
1  
How about the "There's-more-than-one-way-to-do-it" principle? I think I've heard that somewhere... ;) –  FrustratedWithFormsDesigner Feb 2 '11 at 22:13
    
Multi-paradigm? (or Syntactic sugar substitute) –  rwong Feb 3 '11 at 6:12
    
How about "Leveraging paradigm synergy in the cloud" –  Mark C Feb 3 '11 at 6:14
add comment

closed as primarily opinion-based by GlenH7, MichaelT, Ozz, Bart van Ingen Schenau, Robert Harvey Sep 27 '13 at 21:35

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

5 Answers

Came up with another one: Simplexity, as in "let's add some simplexity to this class/method" :)

share|improve this answer
    
Cool, I like it. –  Dan Feb 2 '11 at 23:25
add comment

Affordance

Typically, API designers recommend having spartan interfaces. This way, people's behaviors are funneled through a single, unified interface. But the real world isn't as cut and dry. LINQ affords people the opportunity to solve a given problem in multiple ways. In the same way that refactored code has no effect on the outcome of the code, a second interface more easily allows for specific change in the future.

Affordance is a term used in the user interface and design community to describe how an object allows people to perform an action. Here, instead of giving you one way to solve a problem, they're giving you two. They are increasing the framework's affordance

share|improve this answer
    
Indeed the "affordance" relationship with UI design is so strong, I'm concerned it would be misunderstood. At the very least, it isn't an industry standard term for this (non-UI) concept. –  Brent Arias Feb 8 '11 at 6:21
add comment

This is called "managing abstraction induced complexity". See David Keppel's 1993 technical report of the same name.

share|improve this answer
    
An interesting paper, with an interesting title, but it doesn't focus on dial-able power, and certainly doesn't give it a name. –  Brent Arias Feb 8 '11 at 6:18
add comment

I would call it the "Step-up Design" principle.

share|improve this answer
add comment

Hereby I dub thee "The Iceberg Principle", as in "the tip of the iceberg", where complexity lurks under the surface

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.