Removing features properly
Removing features sounds like a bad thing for most new programmers, but it is probably one of the happiest moments for experienced programmers. One important thing to understand is that while most users think of features as assets if you are maintaining a library, features are best thought of as liabilities because every feature has a maintenance cost. When you add a new feature to a library you maintain, you are only increasing your future maintenance burden. By removing a feature in a library that you maintain, you are ridding yourself of a liability. This is one reason removing features is one of the happiest moments for experienced programmers.
Obviously, a library with no features is worthless, so an important quality for a library to have is that the features it contains are useful, and not useless, or worse, actively harmful. However, it is often not possible to foresee when adding a feature whether it will continue to be useful in the years to...