Saturday, May 31, 2008 6:23 PM
by
akhus
The human aspect of software
The contrast between software and basic human aspects of life has quite a resemblance that it struck me while writing a piece of code. I just kept seeing code in a different way when I gave a deep thought around how software is an extension from our human nature.
Definitely I am not the first to come up with this, but just the deep thinking I did made me realize that for any piece of software to be successful it needs to take into consideration certain aspects that are part of our every day life.
So I started thinking of those basic human aspects that maps to a living piece of software!
Interaction: Pretty basic input and output but also it extends to touch, voice and even sign language! Well it is pretty normal to see research around those areas trying to bring interaction closer to our human nature rather than developing a new way for interacting with computers.
Trustworthiness: If all people were trustworthy this wouldn't be even a topic we would be discussing. But the fact is not all humans are trustworthy, and this is why we need to protect software with sensitive information from being abused. It's amazing really the amount of work done in security and all this because people really don't trust each other :). The whole security infrastructure in place in our world today is due to our inability to be honest and trustworthy among our selves.
Consumption: We all need to consume food in order to survive, also software needs to consume data in order to provide an output. All applications consume data in different forms in order to achieve the tasks it is required to do, and the processing of this data what makes each application unique in its nature. I would stretch that also to say that any self moving object would need something to consume to produce energy, Cars, Airplanes, etc...
Waste: Even waste and I won't go into the human detail here :), but think of the garbage collector in .NET, any data consumed needs a garbage collection or else you will end up with memory leaks in your code.
Maintenance: Code that cannot be maintained or updated is definitely doomed to break and users would stop using it. Same thing applies to us, you always need to see a doctor or at least when you are sick you need some sort of maintenance.
Learning: This is definitely one interesting area that software hasn't yet totally achieved yet. Although there has been a lot of work in the field of Artificial intelligence, still there hasn't been a piece of software that would think and act based on intuition. However, we have seen similar stuff in vista where it knows which applications you use most and it makes loading them faster (aka superfetch). In the future I guess this will be an area to explore by software applications.
There could be still other human aspects that I haven't covered here, however it was just so interesting to explore the various aspects of our human side and how it resembles our own creation (software).