During my days as a design student, and later while working at design agencies, I used to believe that good design sprung from natural-born talent, a prestigious education, and fast foot work with prominent clients. I spent days, nights, and weekends on countless quick turnarounds. Successful customer pitches made me feel competent and accomplished. After each quick delivery, I would dive into the next project as fast as possible.
That all changed, when I started working on enterprise software.
Enterprise software design is like landscaping.
In parks or gardens, every plant is unique with different life-cycles. Some grow faster than others, some grow higher, some even grow on the stem of another plant. Enterprise design is no different. Both gardens and enterprise design require long-term thinking and have short term needs. Enterprise design is crafting the experience throughout the year, catering all different business domains with various unique needs over many years.
It is a fundamentally different job than a florist who makes beautiful bouquets. Bouquets may have a high “wow” factor, but they also have a short shelf life. The same goes with a designer making a stand-alone, quick turnarounds or short term projects – they may serve an immediate need, but how will the solution grow and integrate with innovations in the future?
Landscaping needs careful planning based on the knowledge of each plant and its best soil. It needs dedication. It needs continuous nurture. Some plants need more sun, and some need less water. Some lose their leaves in autumn and others are evergreen. It needs a prudent observation over time how they grow together. Introducing a new plant needs an accurate assessment on its impact on the ecology and the overall experience of the garden. Of course, it does not and should not exclude any options for remodeling and metamorphizing. All that matters is when and how.
Designing large scale products with long life cycles was an entirely different challenge. It is designing the time. We fix acute issues that pop up for both old and new applications. We constantly renovate existing applications with more features and additional functionality. We also introduce a brand new, modern framework. Anything new should be compatible with old solutions. Any new feature should not contradict the existing infrastructure, nor should it disrupt the entire product ecosystem. One careless design change can fundamentally damage the consumer experience due to hidden dependencies in the existing solution. After countless cycles of trial and error over many years, reoccurring patterns of problems emerge. Over time we learn what the dependencies are and understand how they evolve in growing complexity.
Enterprise software design changed me, will change you.
Once you have experienced large-scale framework design, you would never design anything without considering the changing complexity of a growing system. You will always question how it will grow in the years to come and plan for it to scale and integrate with other systems. After all, all the small pieces need to work together.
My belief about great design has changed, too. The florist who makes beautiful bouquets that will be thrown away tomorrow is gone. Now, I design for today, tomorrow and the years to come. Without a strong vision and determination, a design, no matter how great it is, won’t survive the long-winded process. Brilliant ideas can often die before they are given a chance to flourish. For these great seeds to germinate and grow, they need to have tenacity to undergo a long buy-in, tedious alignment processes and often painful trade-offs along the way to productization. I believe, a strong vision of your enterprise design garden in the coming years and the passion to make the vision come true, will generate the energy and endure to the launch of the product.
Great design solves the right problems. When we are too busy fixing immediate local problems, we tend to lose the sight of our big picture. When we rush to control the damage, we forget to question whether we are fixing the right problems. If we are too careful not to break the present, we overlook that we are breaking the future with today’s quick fixes. We often forget that the solutions used to solve yesterday’s problem won’t always solve the problems of tomorrow. Allowing time to seek the right problems to solve and to plan when and how to evolve the system is the essence of designing a complex ecosystem, designing the time.
As I reflect, I enjoyed my transformation from a florist to a gardener. My job is to design a beautiful journey throughout the year, dealing with things that are totally out of our control. My garden survives hard winds and cold winters and brings about great fruits the following year. It offers a journey that’s never the same. It is a different kind of design. It is not only the products and artifacts, it is also the process and people you meet on the way. The landscape of enterprise software design changes, and we need to design differently. We need to design the time.