I have done this experiment a while ago where I asked people what is software? It was a lot of fun and I recommend that you try it. I found out that if you are a programmer, you think its code, an architect, you are thinking abstraction layers, connectors, models. Customers however think cost, will it do what they want without disrupting their business? And then I asked my mother, her answer was: “software is what makes the computer whirr and allows me to check out her friends on Facebook, Skype and watch my favorite soaps” (which I found amazing insofar as it was the closest to reality answer!)
Software is like someone telling you, the shop you are looking for is about half-a-mile walking distance. I find these (directions) to be the funniest since you have to have walked to that shop many times and measured the distance before you can be even close to accurate as to where the shop is (or used Google Maps!) But even with maps, for the majority of us, our human minds cannot really visualize a mile or a mile-and-a=half or two. We are simply not equipped to conceptualize distance, which is the same with Software.
It’s difficult for me to believe that the human mind has totally evolved to fully understand Software Engineering, as it does understand say Civil Engineering. I believe this where most of the problems affecting our industry comes from.
In general, there is no one definition in reality that matches the one stating that a program is a “set of instruction performed on data to transform it into a desirable output”. And this is where and why we get into trouble. Say you are estimating a project, each person on the project/product team will have a different context associated with the definition of software. OK, they might be close, but there will always be subtle yet sometimes detrimental differences.
So what’s the best approach to solve this problem? I can think of a few: use a framework/methodology to as a contract to maintain perception cohesion. Also, you can keep a core team to use frequently as repetition can potentially cause convergence of perception and help in overcoming our evolutionary deficiencies. This approach will result in consistency, but not necessarily creativity. For that, you have to mix up the team and go through the pains I started this post with!!
Do you agree? It’d be great to hear about your workaround our yet-to-evolve human brain.