Software – Is it really soft?
Ever wonder why software is soft and hardware is hard. It is because our computing forefathers saw hardware as something which is difficult to change once transistors are packaged and ICs are fused on board, while software is seen as piece of code which can be changed easily. Well, that may be true for those earlier small programs, but now just this idea that software needs to be changed, requirements specifications have changed or a CR (change request) is raised by client that would require design change in application, runs cold wave across spine for programmers. Reason is simple, consider this sample scenario:
Client A has walked into your firm, she has five retail stores in city and wants a simple ‘Price Management System’ that would record prices against products being sold. ‘That’s it?’ you ask her. Big confident YES is her reply. You instantly delve into making a small data model, simple design, identifying few screens for entering prices, a reporting UI and updating prices. Your software is ready within two weeks and your happily deliver it to client on time. But hey! Why is she nodding disapprovingly! Oh she is now telling there is a store near Airport which has prices of products bit higher than regular ones, so is it possible for us to incorporate store specific prices in system!? You quickly realize it would require changes in your data model, which in other words, mean shaking whole structure of your application. You try to convince client it would require xx man-days effort and her jaw fell to ground, how inefficient your team is, why they can’t make this small change quickly without taking so many days! And then flood of requests like report should also get printed, it should have this, this and that fields also, can’t we get this application working on PDAs, can we store barcodes also with product details etc., and still complaints of why are you so sluggish in implementing the changes. Now, tell me your honestly, do you still think software is really soft.
In my opinion, it no more is. It is flexible but not as soft as it used to be decades before. But the fact doesn’t discourage changes in system, rather it underscores importance of proper analysis before commencement of development, flexible design, good architecture and above all maintainable code which would ease further change request implementation. In nutshell, a proper development process needs to be followed to make software development easier, otherwise programmer would be pulling his hairs, feeling killing headache, fell from his chair or hammer keyboard on manager’s face every time he announces a new change request has arrived from client.
Good to see you back Dude.
I agree with you… sometimes is so hard to make the clients realize how complicated change some features is.
‘Price Management System’
Somehow it rings a bell. Dunno why