Design Manifesto
Introduction
The world of programming reflects the society it serves: namely, embodying the collage of engineers, creators, entrepreneurs, thinkers, and dreamers. To many programming, indeed the entire spectrum of computer-related tasks, supports a bastion of soulless, nameless functionaries and technicians, aiding in the demise of mankind through slowing shifting the walls of technology closer and closer to the user, dispensing with more human, intimate, and familiar methodologies. While perception often differs from reality, the possibility of the previously-mentioned dystopian reality transpiring is altogether too real. As creators, designers, and entrepreneurs, we are the vanguard of the assimilation of technology with the rest of the world. The future will contain technology, however, it is up to us to ensure that our creations truly improve lives, not detract from existence, hinder, replace, or stultify. Thus, the bridge to a bright future for the successful co-existence between man and machine lies in the principles of design.
Decisions of Design
As established in the introduction above, technology must morph to the needs of the user. The design process, from the formation of the first prototype to the initial release, is molded to suit the needs and desires of the anticipated user. Too often, however, ideas and projects become waylaid, sidetracked, or abandoned all together due to perceived technological constraints. For designers and creators, disregard for core attributes of the product must never become the case. While the designer’s current tech stack may be limited, the ability to transcend the problem or limitation by utilizing creative, lesser known solutions is paramount. For instance, in the Design for Tension project, a proposed topic for chatbot functionality was the ability to convince an engineering student to switch his major to the humanities. To do so would require advanced text tokenization and parsing, along with backend support for ML datasets and custom chat flow. As such, attempting to utilize online platforms to create a generic chatbot was not a viable solution to the complex set of requirements we had formulated. Thus, I created the entire chatbot from scratch, utilizing Python and the powerful Flask web framework. While such a pivot may seem abrupt and unrealistic, the final result was a polished, professional chatbot containing every single feature we originally expected.
While this particular approach relies on advanced technical exposure to a broad variety of technologies on the part of both the designers and programmers themselves, the results can meet or exceed expectations in wonderful ways.
Summary
Miyamoto Musashi wrote in The Book of Five Rings, “You must understand that there is more than one path to the top of the mountain”. In turn, burgeoning designers and developers must become more accustom to searching for alternative solutions to produce the same desired product.
Modalities of Design and Testing
As designers build and later test their creations, they must navigate through and overcome the challenges that arise from design modalities. Throughout the design process creators must attempt to transfer the mental image of the product functionality to the different technological mediums utilized. As is often the case, the current iteration of the project prototype does not satisfy the original expectations. These shortcomings can include layout, functionality, and market impact. To counter this, developers can draw upon the design paradigms from their own technology.
In Python:
>>>import this
The Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face of ambiguity, refuse the temptation to guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea -- let's do more of those!
Simple is better than complex
As designs come into fruition, the functionality and features of the platform rapidly increase. As such, it is important for users to design prototypes, both mental and physical, that can account for this rapid change by ensuring that a simple, minimal framework is implemented to scale to easily absorb these changes.
Sparse is better than dense
This mandate refers more to style and content than design as a whole, however, a clean interface often reduces the level of confusion that new users experience when testing a prototype.
Summary
As developers have certain expectations for the finished product, so too do the first users. Users expect a product that is tailored to them, and provides functionality at or exceeding the level provided by other platforms. As such, designers must ensure that their platforms can introduce the product at a comfortable level for the target users in general. In Design For Wellbeing, we successful applied these concepts in the creation of a custom movie recommendation platform. By creating a simple, clean interface, the users were able to focus on the system itself, and their level of comfortability using the product increased greatly.
Expectations and Reality
As stated in the previous section, the anticipated functionality may not successfully match the expectations of both the designers and the users. Generally, this occurs when implementing a certain software library or writing the first prototype. Overconfidence, underwhelming software libraries, poorly designed prototypes, and non-existent or unreadable documentation can destroy a current product development phase. Thus, it is best to ensure that the developers have basic familiarity with the project’s tech stack and are capable of quickly pivoting to different in-project solutions when problems arise.
Summary
Setbacks occur with the development of a project, and creators and developers can greatly alleviate the blow by ensuring that each prototype has an associated set of realistic expectations and feasible tech stacks.
Design Project Reflections
Design For Another World provided a series of challenges pertaining to the placement of navigation prompts and text banners within the VR screen. We found it quite difficult to accurately place text in desired locations, thus, more creative messages and guidance had to be devised to compensate.
Conclusions
Perception is powerful. Modern users are exposed to more technologies and platforms than ever before, and often draw conclusions pertaining to functionality based on design. To ensure that technology is molded to suit the user, and not to encircle and entrap the user in a web of dense, unmanageable, omnipotent systems, the technology of tomorrow must be subtle and virtually unnoticeable. The design must be beautiful, a reflection of the talent and ingenuity applied to create the product. Like classical art and music, design can enable technology to demonstrate the mystery and fulfillment that is contained in the universe.