Discrimination is the prejudicial treatment of an individual based on their membership – or perceived membership – in a certain group or category. – Wikipedia Apr-20-2012
Most software development teams are composed of product managers, designers and developers. For the sake of simplicity, lets assume that the designer is also the product manager. So the designer has the vision and the developer builds it. A similar division of labor can be seen in other fields too like manufacturing, and architecture – where one group envisions and the other group builds the vision. Which makes me suspect that the current structure in the software product teams is inherited from the manufacturing era.
Divide and suffer
As someone who loves to design and code, it pains me to see how designers and developers have become entrenched within their roles. Each group has a natural tendency to be dismissive of the other group’s concern. This creates a mindset that any input from a designer will increase development cost. Similarly any interface designed by developers will have usability issues. I think the current design and development tools are reinforcing these stereotypes and keeping teams unproductive.
I have used design tools like Adobe Fireworks, Omnigraffle, Balsamiq etc. They are basically bitmap or vector drawing tools. They have some features for UI design, like creating clickable images. But I think they are all fundamentally flawed. The main problem is that these tools make designers and developers works in separate silo. Any design has to be constructed from a blank canvas. It becomes useless after the idea has been communicated to the developer. The developer has to now build from scratch; the efforts of the designer seems useless. This is obviously inefficient but more importantly it prevents software teams to bridge the designer/developer chasm. Team members can’t help each other even if they want. So the team members’ goals are aligned with their roles rather than with the product or the service.
Future is even scarier
The problem is more serious when we think about the transition to a responsive design movement, where the interface can respond to anything. My favorite responsive design is the XKCD April 1st comic. The you will see a comic based based on your geographic location, browser and window size (there could be more parameters). Imagine creating an user interface that reacts usefully to so many parameters. Using the traditional process and tools, designers have to create an order of magnitude more deliverables. I would rather pick apples.
Bits and pieces
I don’t know what is the solution to this problem. I do believe that software development platform has to be designed to be a more collaborative environment from the ground up. I have seen some ideas that seem like a step in the right direction.
The model-view-controller framework separates the data (model), interface (view) and logic (controller) . This allows people concerned with interface to work more independently. Increasingly many web application are being written using this approach. The idea was first proposed in 1979. But it has become popular only the last 7 years. Technology might change fast, but culture and process evolve painfully slow.
Within the interface itself an UI framework like Bootstrap can be a good shared resource between designers and developers. It allows designers to create building blocks which can be used without any additional effort to build. One of the designers behind the framework explained that Bootstrap was created by a group of designers and developers to “quickly build stuff”. Frameworks have been around for a long time. But this is the first framework, which I know, has been created jointly by developers and designers. The framework has to be accessible to everyone. If one group controls it, then it naturally breeds mistrust.
Firebug and Inspector tool in Chrome are one of my favorite tools. They give very easy access to the code and any changes are immediately seen. So I can play with colors, layouts and even interactions. I can be reasonably certain that the solution will work. There is still the barrier of the learning HTML/JS/CSS to use these tools. Which is why I think we need more languages and development tools that are designed to be easy to read and understand. Ruby is a very readable and accessible language. It was designed based on principles of UI design. But I think we can much farther.
I hope more tools likes these continue to be created to improve collaboration and change team dynamics. We are only at the dawn of the digital age. Let a million languages and tools bloom.