Thursday, April 06, 2006

Is IT a real engineering field?

Whenever i travel in the highways of Bahrain and watch the big buildings coming up in front of my eyes, i used to wonder the following.
Civil engineering is a matured engineering field. When you define what you want [architect the building design], the building will be constructed in the same way, same structure, no matter who is working on that plan. For that matter, take any core engineering field, be it Civil or Mechanical engineering, all that is required is 'the man power' [no matter what is their aptitude or attitude] and a set of pre-defined steps to be followed with some fixed targets to achieve. It works and the engineering field proves to be a matured domain. Again, it is truly engineering because, there should not be any error and no comprimise; and by mistake, if there is any, it takes life. It costs human lives.
On the other hand, take it software engineering. The team is built by a group of engineers from the premier institues [with good iq and aptitude], but still, the software product will not work they are supposed to work. No matter who designs the software or does the planning, there will be always some comprimise. If the customer expects a butterscotch ice-cream with almonds and pistachio, the software that gets delivered will be vanilla with groundnuts and choco-chips. Most of the time, it will be a product that the 'Software developer' thinks that it is possible to develop than, what the end user wants it to be capable of. It is still not matured - no matter how many Capability Maturity Models you may recommend or device, it is still evolving.
Thinking in the similar line, what would have happened, if ther other engineering is evolving in the same way as Software industry. Just to give an analogy,
When i started my career as a software engineer, for me to write a 'Hello World' program, it took almost a day. Any program should be structured as Division, section, paragraph and sentence. I have to write four divisions even before writing a piece of code. Then, i have to take care of mandatory sections within the divisions. I have to define what is my input and what is my output. Then finally, i will write a sentence to print 'Hello World'. Wait a minute ! the fun is not over yet. I have to prepare a compile JCL. Write another set of instruction to direct the machine to compile my code. Submit the job and wait for the result. The mainframe will chuck out loads of error message for the lines that it did not like. The program should be written in the way the compiler likes it and expects it [atleast one character of the name should start in Area A and so on]. Once the compilation is successful and the load module is created, i have to create another JCL to run the program. This time, i should mention to the machine where to look for the load module and in which environment to run the program. If the machine is satisfied with whatever i have provided, the 'hello world' will be finally printed in a file. I have to open the file to see the output.
Eight years later, now, all that is required is to click the mouse few times [at the most drag and drop something], right click & left click and finally the result is shown in the screen. The machine did everything by itself and made the programmer's life comfortable.
When it comes to the core engineering field, a building is still constructed in the same way as it was constructed last year, last decade or even last century.
I just remember the mail about 'Bill Gates and GM car manufacturer' joke that get floated in the web at regular interval.

0 Comments:

Post a Comment

<< Home