Lately there has been a push of software into craftsmanship, nurturing the skill and giving value to building software for the sake of it.
Not a long time ago the main trend was design patterns, inspired by real life architecture the Gang Of Four tried to look for common problems and summarize it into common solutions but these tend to be taught too early and developers lack the knowledge to know how to use them.
So we found Katas and other procedures trying to compensate for the lack of experience that is needed to understand the design patterns but with the experience we obtain the faultier the design patterns seem.
The reason behind this is the clunkiness and the one size fits all approach which seems to fail.
So focusing back on practice we went to the software as a craft, with each person having it’s own technique and experience and expecting that to be enough.
Wikipedia defines craft as ‘…a profession that requires some particular kind of skilled work. In a historical sense, particularly as pertinent to the Middle Ages and earlier, the term is usually applied to people occupied in small-scale production of goods. The traditional terms craftsman and craftswoman are nowadays often replaced by artisan and rarely by crafts-person (craftspeople).’
That sounds very extreme to compare software with something pertinent to the middle ages, I feel that something was missed. We have our personal experience and we know the patterns but there is a lack of knowledge on the direction to which we should mould the patterns to adapt them to our current problem.
In The same wikipedia page we find a reference to the industrial revolution: ‘The mass production of goods by large-scale industry has limited crafts to market segments in which industry’s modes of functioning or its mass-produced goods would not or cannot satisfy the preferences of potential buyers.’
So what did we miss? We have the design patterns, we have the craftmaship but we lack the very important intermedium steps which are represented by the appearance of industrial design.
And back to wikipedia for the definition of industrial design as ‘…the use of a combination of applied art and applied science to improve the aesthetics, ergonomics, and usability of a product, but it may also be used to improve the product’s marketability and production. The role of an industrial designer is to create and execute design solutions for problems of form, usability, physical ergonomics, marketing, brand development, and sales.’
It’s interesting how easy it is to miss these steps but we have to remember that software development is a very new area and in my opinion it’s not harder than any other engineering or design areas, we just didn’t have enough time for it to figure out the big picture.
What can we do
Focusing now on Industrial design, what can we get out of it? Surely all the lessons about turning craft objects into something that can be used and manufactured in a larger scale will be useful. I will now focus on one of my favourite parts which is Dieter Rams.
You might already have heard of his work with Braun as a huge inspiration for Apple’s design but it’s inspiring on how much of these guidelines might also apply to software.
Rams’s Ten Principles of “Good Design” (Link)
Good Design Is Innovative. The possibilities for innovation are not, by any means, exhausted. Technological development is always offering new opportunities for innovative design. But innovative design always develops in tandem with innovative technology, and can never be an end in itself.
My opinion: Try out new tools and techniques but don’t make it be the priority.
Good Design Makes a Product Useful. A product is bought to be used. It has to satisfy certain criteria, not only functional but also psychological and aesthetic.Good design emphasizes the usefulness of a product while disregarding anything that could possibly detract from it.
My opinion: Having too many features, the wrong ones or having them built in a way that seems complicated is much more likely to be a problem with its design and not with the users.
Good Design Is Aesthetic. The aesthetic quality of a product is integral to its usefulness because products are used every day and have an effect on people and their well-being. Only well-executed objects can be beautiful.
My opinion: In the same way as the mantra ‘Clean code is good code’ a design that is almost intuitive will ease the work of the developers and make it more pleasant. I consider in this case the beauty of code to be an appreciation and a feel-good attitude when studying it.
Good Design Makes A Product Understandable. It clarifies the product’s structure. Better still, it can make the product clearly express its function by making use of the user’s intuition. At best, it is self-explanatory.
My opinion: A well done product doesn’t need extensive documentation and preparation. A very good example is the horrific interface of VCRs in the 80s and 90s versus current TV boxes.
Good Design Is Unobtrusive. Products fulfilling a purpose are like tools. They are neither decorative objects nor works of art. Their design should therefore be both neutral and restrained, to leave room for the user’s self-expression.
My opinion: Funny inside jokes or features that are only useful for the team should be left aside to make the real behaviour bubble up. There is room for a brand but there is no room for clever features that only work for the developer’s ego.
Good Design Is Honest. It does not make a product more innovative, powerful or valuable than it really is. It does not attempt to manipulate the consumer with promises that cannot be kept.
My opinion: Build it progressively and organically, don’t think too far ahead.
Good Design Is Long-lasting. It avoids being fashionable and therefore never appears antiquated. Unlike fashionable design, it lasts many years – even in today’s throwaway society.
My opinion: Avoid new trends that have not proven themselves to be useful. Avoid re-inventing the wheel. Ask why the current solutions don’t work and remember that there are reasons why they’ve worked so far.
Good Design Is Thorough Down to the Last Detail. Nothing must be arbitrary or left to chance. Care and accuracy in the design process show respect towards the consumer.
My opinion: Don’t try to force a simplified design if that is not what the user needs, the hard part is making is simple but complete.
Good Design Is Environmentally Friendly. Design makes an important contribution to the preservation of the environment. It conserves resources and minimises physical and visual pollution throughout the life cycle of the product.
My opinion: Amount of data, resources like memory, disk space or hardware are all invaluable and should be taken into consideration even with the cheap price of components nowadays, a brute force approach is not a replacement for a well though design.
Good Design Is as Little Design as Possible. Less, but better – because it concentrates on the essential aspects, and the products are not burdened with non-essentials. Back to purity, back to simplicity.
You just read my thoughts about design, I hope this inspires you to learn more for this and reach your own conclusions. I leave you know with a list of resources which I think are invaluable.
When looking into architecture, design, psychology or any other subject don’t read a book about a developers point of view on the subject but just get to the source.
Objectified – Industrial/Product design (Link)
Urbanized – Urban design/sustainable design (Link)
EAMES: The Architect and The Painter – Post war industrial design and innovation (Link)
MoMa exhibitions about minimalism (Link)
The Coming-of-Age of Software Architecture Research (Link)
Blank City - ”Do it yourself” independent film making. This is more inspiring about the Do-It-Yourself atittude. (Link)
Punk and Minimalism – (fanzine, need to look for a reference)
Bill Cunningham New York – Fashion photographer in NY. Also an inspiration about his emmersive atitude towards his work. (Link)