I've tried to make it a point to learn different programming languages
throughout my career. It's not that I'm fluent in multiple languages (for
example, I wouldn't call myself an Eiffel expert by any stretch of the
imagination), but by learning about a language's features and ideas I've been
able to broaden my perspective. This has its benefits when I'm designing or
implementing a piece of code, because I've able to add different ideas into
the code base that don't exist in the feature set of the language. For
example, Eiffel has the idea of design-by-contract, which allows you to
define pre- and post-conditions along with class invariants in your code,
ensuring that callers set their parameters correctly and guaranteeing that an
object will always be in a certain stat... (more)