Inspired by something in RubyInsteadOfSmalltalk. In the general case, a tool is an instrument that enables its user to do something new or different, something they don't already expect to be able to do without the tool. So a tool is an instrument that '''creates new expectations''' in the user's mind. In contradistinction, a crutch is an instrument that remedies certain deficiencies of the user. The user already has certain expectations and the crutch enables the user to meet them. So a crutch is an instrument that '''meets users' expectations'''. This is the context in which any suggestion of "making software meet the user's expectations" should be interpreted. And it is clearly the correct context since, if the software you're building meets the expectations that users have from other systems, then what possible reason would the users of these other systems have to use your software in the first place? Software shouldn't meet some other system's, or other software's, expectations. It should create NEW expectations. And it should create strong expectations by being simple and consistent.