For me, using !important is a bad CSS practice. It disrupts the natural flow in applying the css rules where in properties are applied from top to bottom. With !important, the property will now give priority to the latest important value.
It's just like using the goto keyword in scripts. Though its are perfectly legal, it's still best avoided.