For the CodeSmell of the same name, see FeatureEnvySmell.
FeatureEnvy, related to DisciplineEnvy, is when a Weenie or language enthusiast sees a feature from another language that has no equivalent in his own, gets past the BlubParadox and actually recognizes the value in the feature, then, in a fit of jealous weeniedom, starts attempting to denigrate the feature to convince himself that it really isn't that great, that the language or paradigm of weeniedom will suffice, maybe even that it is too powerful and will obviously be abused to such a degree that it makes everyone else suffer. If the weenie is of the more vociferous sort, this is accompanied by a keen wailing that sounds vaguely like a proper argument.
Examples
- Lisp syntax sucks. It is powerful, but it isn't very different from all its other syntax! Even when macros are used to define special mini languages that fit a situation at hand - they really aren't mini languages at all - its just more lisp. It leads to a bowl of oatmeal with nail clippings mixed in (thanks LarryWall) - its strength is a weakness.
- Perl sucks. Too many features, too complicated, too much regex abuse.
- Tail call elimination sucks. How can you debug when TailCallOptimization is deleting the stack? You can just replace it with explicit iteration anyway! (though note that you can't replace TCO with iteration for ContinuationPassingStyle, which leads to... 'ContinuationPassingStyle sucks...')
- TypeInference sucks. I can use unit tests to find everything that a type checker could, and besides, I like dynamic languages like PythonLanguage.
- MessagePassing, ActorsModel, CommunicatingSequentialProcesses, etc. sucks. RealProgrammers? use threads which allow for better performance.
- Python sucks! All that SyntacticallySignificantWhitespace makes it hard to find the start and end of a block of code. Keeping code blocks so short it fits conveniently in most editor windows is not a work-around.
- Lambdas suck! They make the code too hard to understand! Every function should be explicitly named so your manager can read it and correct your work.