An often overlooked facet of object-oriented design is how to leverage your language to speed development. Every coding language has features and strengths to make your design or implementation better. We should not design to a language initially. However, we can tailor our implementation and detailed design to take advantage of these features.
Leverage Your Language to Boost The ImplementationLanguages are implementation tools. Therefore, they come into play during that phase. Nevertheless, you can leverage your language as you consider the details of the design. Some approaches will either be simple or complex based on the language. We can include the concept of interfaces or multiple-inheritance in a hierarchy. That includes more granular steps like patterns built into the language. We often see these in the form of iterators or factories.
Keep Up With ChangesWhile the initial design should leverage your language, enhancements and upgrades should incorporate the same. Be aware of the changes to a language or environment over time. That includes fixes, tweaks, and new versions. A problem that may have been overly complex to solve in the past could be a "freebie" solution now that it is handled in a single line of code.
Languages evolve and often do so with a focus on eliminating weaknesses. That is due to developers suggesting features based on their pain points. We often see a language that is limited in use during early versions become more general-purpose over time. The developer is the customer, so the software team or company will cater to the developers. The things that are difficult to use early on will be simplified or greater support provided.
Under The CoversThe changes to be aware of include those that are "under the covers." These types of changes are much more implementation-impacting. However, version upgrades have been known to make vast improvements in persistence, multi-threading, and thread-safety.