Ok, This is my first blog on Computer Science. So, let me try and keep it short and sweet.
If I look at a two storey building and the Burj Khalifa I know the difference in the first glance. It is so clearly evident that building a sky scraper is hundreds of thousands of times (or thousands of thousands) more complex job than building a simple one or two storey building. Now the question is can I make out the difference in software complexities that easily - with a single glance ? One need not be a civil engineering expert in the first scenario to get a guess on the difference but probably you need quite a bit of exposure to atleast say that softwares too can vary by orders of magnitude in complexity.
Now, if 'X' is the time taken to make a sky scraper it takes 2X - x to make two sky scraper where 'x' could be the time saved by avoiding the design of the second. But if 'Y' is the time taken to build and deploy 'Windows 7' it would take Y+y to deploy a thousand copies of the same where 'y' is the additional installation time. Software replication costs are much lesser than software creation costs while it is not the same with complex tangible entities.
Once a sky scraper is built, I have the flexibility to change to things like the colour of the building but the buildign remains very much same even after fifty years in most of the aspects. The problem with Software is that I could technically build a Tajmahal and slowly change it piece by piece and come up with a Eiffel Tower. It is easier to guess even for an outsider that replacing the ceiling fan will not collapse the building while breaking the pillars might. But, it is a difficult task to know changing which part of the software will affect what. Software maintenance costs are very high.
The last thing I want to touch upon is the outsiders perception of a Software Engineer. Whenever I go home, an uncle/aunt or an acquaintance tells me so and so is also a software engineer and talk to me as if I should know what he/she does I lose my words. To the outsider Software Engineer X = Software Engineer Y while in reality this is not correct. This happens even with some managers who think Programmer X = Programmer Y and simply put their timelines.
There are many more things that are unique to the field of Computer Science. Probably, I will write a sequel to this blog. For now, let me conclude this one.
If I look at a two storey building and the Burj Khalifa I know the difference in the first glance. It is so clearly evident that building a sky scraper is hundreds of thousands of times (or thousands of thousands) more complex job than building a simple one or two storey building. Now the question is can I make out the difference in software complexities that easily - with a single glance ? One need not be a civil engineering expert in the first scenario to get a guess on the difference but probably you need quite a bit of exposure to atleast say that softwares too can vary by orders of magnitude in complexity.
Now, if 'X' is the time taken to make a sky scraper it takes 2X - x to make two sky scraper where 'x' could be the time saved by avoiding the design of the second. But if 'Y' is the time taken to build and deploy 'Windows 7' it would take Y+y to deploy a thousand copies of the same where 'y' is the additional installation time. Software replication costs are much lesser than software creation costs while it is not the same with complex tangible entities.
Once a sky scraper is built, I have the flexibility to change to things like the colour of the building but the buildign remains very much same even after fifty years in most of the aspects. The problem with Software is that I could technically build a Tajmahal and slowly change it piece by piece and come up with a Eiffel Tower. It is easier to guess even for an outsider that replacing the ceiling fan will not collapse the building while breaking the pillars might. But, it is a difficult task to know changing which part of the software will affect what. Software maintenance costs are very high.
The last thing I want to touch upon is the outsiders perception of a Software Engineer. Whenever I go home, an uncle/aunt or an acquaintance tells me so and so is also a software engineer and talk to me as if I should know what he/she does I lose my words. To the outsider Software Engineer X = Software Engineer Y while in reality this is not correct. This happens even with some managers who think Programmer X = Programmer Y and simply put their timelines.
There are many more things that are unique to the field of Computer Science. Probably, I will write a sequel to this blog. For now, let me conclude this one.
Good writing...try and be little more clear for technically challenged people including me...
ReplyDeletegood example..ceiling fan!...keep it going
ReplyDelete