More about me

Software as a piece of virtual hardware

Some weeks ago @mattgemmell wrote a fairly interesting article (and short, just in case you want to read it now) advising to write software as a piece of virtual hardware. I kind of like this idea even though the article is not very clear for me. But, it had me thinking for a while and here are my thoughts:

It is straightforward to see that an iOS app has the mission to convert the underlying device into something more specific: a calculator, a magazine, a notebook, etc. iPhone/iPad are no more than digital electronic swissknives. It entails that the application needs to cover the complete experience. Depending on other apps is utterly unacceptable. Additionally, these new hardwares are likely to be composed by some common pieces. It will definitely help to understand what are we doing in this purpose-shifting environment. But, the most important thing seems to be that we have to forget old and different abstractions of software (i.e. imported from other platforms) that no longer apply. Thinking of software as a piece of hardware would help to do that, for sure. That is because we are getting rid of many temptations. Simple!

However, thoroughly analyzing this concept I can see that we can take it a little further. I am thinking in terms of the inherent “staticity” of hardware. Hardware, because of its physical nature, is restricted on things that software is not. For example, in the placement of buttons, plugs, screens, etc. That is what makes software more versatile, but also the thing that could lead to worsen the user experience.

The expert and hardcore users (kind of experts too) appreciate highly configurable environments. So, they are interested in “pure software.” They set-up everything to obtain an extremely efficient operation. In many ways, we got used to that. It is a personal tuning that requires many hours, interest, and expertise. Though, the common user is not necessarily using computers because he wants to. Actually, he could be a phycologist, a journalist, a veterinary… and he does not have time to deal with computer science. He wants to be efficient and successful in his area. Thereby, I understand that they are more interested on a piece of “hardware” to help them solve their problems. So, would not it be more interesting to try harder to do that tuning work for them? Sounds limiting, but it could be quite the opposite. Again, the conclusion seems to be “write software as a piece of hardware.” However, we will have to bear in mind that if we do that we are in charge of a great responsibility. But, it is cool if we turn backwards a famous Spider-Man quotation: «With great responsibility comes great power» :D

Likewise, the aforementioned hardware “staticity” principle will interestingly apply to any visible software changes/updates. That includes moving features, but also adding them. If you leave space for a future feature, your user will be waiting it (maybe a little frustrated meanwhile) and he will take it smoothly. Otherwise, he will not like the change, even if it is good. It is like if he had to change his physical device. He feels forced to learn something new. It sounds painful. Not to mention that this sounds nicely connected to my past lucubrations about “teaching the client” ;)

by Ferran Poveda
software hardware staticity ux design
Comments
blog comments powered by Disqus