A good, thoughtful design can help eliminate a lot of burden and cost later down the road in the form of less development time, client satisfaction, and extensibility.
Don’t Repeat Yourself (DRY)
When designing your solution, consider future growth of the feature or product. Build reusable components to reduce repeating yourself to solve similar problems. Set yourself up to have good extensibility and reuse for later in the product lifecycle.
On a recent design, I created it as an extension to a core framework. This design decision ensured the capability could be enabled for numerous other features at any given time and with minimal effort. Also, this meant creating an easy way to add an API endpoint without needing to change core code. This way more endpoints could be added when and as needed without needing a release or changing code to accommodate it.
That brings me to my next subject, utilizing standards. In this example, I utilized a standard called oembed. This standard helped reduce the effort in development time and created an extensible architecture designed to accommodate changes for future growth. Using a standard allows the developer to always know what to expect as a return. In this case, the response of an API for rich media types will always include the same properties. This allows the framework to be built in a way that will easily be able to accommodate future growth.
Along with leveraging available standards, a good understanding of the “art of the possible” is essential to explore the best approach. This requires keeping pace with and understanding the latest technologies. In this design, we used a new html5 element, the canvas tag, to create a thumbnail of the video element. Using the latest technology allowed us to save time in development by not having to develop the same functionality in a more burdensome .Net framework. This technology also created a more elegant, cleaner, client-side user experience.
A good, thoughtful design tells a story about a design that is scalable, reusable, less burdensome technically and requires less time to develop all while satisfying the user’s needs.