There has been some debate as to whether Java should be easier (2003-11-14), and that's an open question. Either way, it is a fact that "good" software is difficult.Developing good software is unpleasant. That isn't to say that a piece of good software isn't an aesthetically satisfying achievement, but the actual task of conceiving, planning, and creating it is difficult, boring, detail-driven, and insurmountable by initial appraisals. Pleasurable software problems are like pleasurable math problems in that they are typically shallow and illustrate one or two principles in a mechanical fashion. Even the broader class of solvable problems (not all of which are pleasurable) are almost always trivial, contrived, or constructed specifically to be solvable. (This may explain the large number of people who develop frameworks to solve compact problems.)The problem is that most good software developers know that good software is difficult, and thus they are often resistant to developing it. And that's the catch: a natural aversion to making software is one of the hallmarks of a good developer.