2:45 PM | Author: Siva
Let us demystify some of the myths that shrouds Computer Science and Programming.

Myth #1: Coding is like driving a car. You need a driver, not a mechanical engineer. For God's sake NO. Coding IS designing a car. Try writing a compiler, web server, OS. Or for that matter try writing a good small application. How about writing the software that executes your bank transactions, stock trades, auto pilots, cruise control, handles insurance claims ? Is that like driving a car ? You need qualified people for creating these. If you appoint just drivers you will get icicidirect and citibank like software.

A sub-myth is that the above myth is true for only Indian IT service companies. A lot of Indian services companies have clients from banking, insurance, automobiles, aircraft design. If everything else is equal any recruiter in Indian IT company will choose a CS grad to a non CS grad. The problem is there aren't enough good people with CS degrees. Sometimes brilliant people with non-CS degrees are better than a stupid CS-degree holder. So changing the requirement is not an indication that the job can be done by anyone. It is just an indication that the company need to increase its revenues. Hiring more people is one of the ways to do it. So they just changed the requirement.

Rarely will these people create any software of importance in their lifetime. They may manage others who do it, but never themselves. The companies know it, the people who get hired like that know it. So that is the hurry in moving higher in the management ladder. So you see a bloated middle management in most services companies. If some do create software of importance, it is because by that time they have learnt so much about computer science that they are qualified like a CS guy to do it. To continue the driver analogy, they hire drivers, a lot of them learn to become auto mechanics, rarely will they understand aerodynamic design but they know how to fix a starter trouble. A countable number will move further to be equal to mechanical engineers. But they would have struggled less and enjoyed much if they chose mechanical engineering as their field. (or computer science in our coding case).

Myth #2: Anyone can do coding. Well for that matter any one can become Einstein. All of us are born equal, No ? Try it.

Myth #3: What you study in college is not important. Even going to college is not important. You can still code.
Another variation of this
Myth #3: You can learn computer science in part time NIIT classes. Learn ECE/EEE/Mech/ Civil/Industrial/Mining/D.F.T in college and computer science in NIIT. You will be a master in 2 subjects.
There are some exceptions. But remember they are exceptions. They would have done it anyway. If these NIIT educated guys learn half about computers as a self learned auto mechanic learns about his car then they got what they paid for. It is just that. Well if you think about getting a degree in some other branch and then become a master in both CS and your branch, well I will say Best of Luck. You may end up being a jack of both or may be master only in CS. Why not just do CS then ?

Myth #4 : Computer Science is all about coding. No, it is not. Even computer engineering or for that matter software engineering is not just about coding. Anyone who know his CS will vouch for it.

Myth #5 : Learning Computers is like learning science/engineering. The word computer science or computer engineering is usually created by the departments. The study can never classified as such. It is not a science as in Physics, not engineering as mechanical. It is just part of both. But it is also about art. Lot of difference between good and bad software, high performance and useless hardware will be from the arts part. This is one of the reasons for so many geeks in this field.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

11 comments:

On 10:28 PM , Neelakantan said...

Where there are high end requirements like working on product architecture, optimization, tuning you surely need better qualified guys. No doubt about that.

Coding is not computer science, definitely not in an Indian IT services context. To a great extent, much of what passes of as coding (testing, maintenance, support, bug fixes) is the kind that anybody with a basic knowledge of coding can do. True, they may never create another google, but when were Indian IT cos ever going to create one.

 
On 10:45 AM , Siva said...

Neelakantan,
Our ideas just have the cause and effect reversed. The Indian IT services may not create another google. They were never in that business. But even software for banking and insurance require such qualification.

It is not because IT companies coding jobs are simple they can hire anyone. It is the other way around. It is because they hire anyone they get simple jobs. Say a banking client won't trust TCS/Infosys with their core transaction module easily.

I will agree with your view on support and bug fixes. It is like a mechanic's work rather than designer's work. But not when it comes to testing. That requires a designer's knowledge/mindset. But again Indian IT companies ignore that kind and concentrate on black box style. That doesn't simplify testing. It just emphasises they do the best with their resources.

 
On 11:16 AM , senthil said...

This is an often heard myth and what you said about this is true. I also think that anybody who does a good design in banking/insurance software can do the same in systems software as well. Design is only the implementation of best solution to a problem. As the complexity of the problem before you increases, the engineer needs to put more hardwork into learning the systems domain, get himself all the tools necessary to solve the problem. The work becomes harder because you might not have a model to copy from, but you will always have more than one concept which can help you out. I believe that none of the softwares out there are inventions, they may be successfully riding on other inventions. Ultimately, software is not science only engineering!

 
On 1:52 PM , Siva said...

Senthil,
The bottomline is you need more than one concept to help you. That normally comes from CS education. People dumb down CS education and claim anyone can create good software.

Sure if you design applications well, you know how to do it, then there is a very good chance you are going to do the same in systems side. Once you have the foundation it is going to be reflected in whatever s/w you create.

I cannot fully agree with the engineering part of software. To me that classification problem is unsolved. Computer Science - blend of engineering, science and art. Software - I don't know (nothing to do with science, blurs between engieering and art I would say)

I heard a mechanical engineer scoff "software engineering is an oxymoron" :-)

 
On 1:56 PM , Siva said...

BTW, I just thought about this post as a short comment to Neelakantan's post here
http://ecophilo.blogspot.com/2006/10/of-geeks-and-coders.html#comments

Then changed it into a post with other common myths.

 
On 5:42 PM , Baranidharan said...

I have seen similar myths for other areas also like you don't need a MBA degree to become a Manager.If we take in that sense we don't need any degree to learn anything.The reason why we look for degree is the same reason why we get certified. For an experienced resource no one is going to worry about the educational background. But for a starter degree is only way of authentication.

CS course gives the basic foundation of computers which gives more visibility and understanding about the systems. I think what NIIT provides only quenches your coding aspirations. For an end user you don't need all the insight of a system. I never worry about the parts in my car. All I need to know is how to maintain it. I think most of the Indian software companies are doing the same while they should do the design, which results in poor quality deliverables.

I strongly disagree with one of the comments that design knowledge is not applicable for the application development. That is not true. Whatever care a google needs I think ICICI deserve the same.

I like siva's comparison with Car, people need more knowledge about car to design and build it. Little knowledge to service it and very little knowledge to be maintain it.

Most of indian IT industry does not come in part 1. We have little knowledge to service only, knowledge like mechanics in auto shop. That's why when Indian IT develops a complete application it looks a car made by group of mechanics. I can appreciate their effort but will not dare to buy it unless it is cheap and I don't have any other options.

 
On 5:56 PM , Baranidharan said...

I have seen similar myths for other areas also like you don't need a MBA degree to become a Manager.If we take in that sense we don't need any degree to learn anything.The reason why we look for degree is the same reason why we get certified. For an experienced resource no one is going to worry about the educational background. But for a starter degree is only way of authentication.

CS course gives the basic foundation of computers which gives more visibility and understanding about the systems. I think what NIIT provides only quenches your coding aspirations. For an end user you don't need all the insight of a system. I never worry about the parts in my car. All I need to know is how to maintain it. I think most of the Indian software companies are doing the same while they should do the design, which results in poor quality deliverables.

I strongly disagree with one of the comments that design knowledge is not applicable for the application development. That is not true. Whatever care a google needs I think ICICI deserve the same.

I like siva's comparison with Car, people need more knowledge about car to design and build it. Little knowledge to service it and very little knowledge to be maintain it.

Most of indian IT industry does not come in part 1. We have little knowledge to service only, knowledge like mechanics in auto shop. That's why when Indian IT develops a complete application it looks a car made by group of mechanics. I can appreciate their effort but will not dare to buy it unless it is cheap and I don't have any other options.I am damn sure it will run but running is not the only thing I want.

 
On 7:58 PM , Arasan said...

"Say a banking client won't trust TCS / Infosys with their core transaction module easily"

Siva,

Banking and Capital Markets Domain is very promising business domain for Infosys / TCS / Satyam. It’s not true that these companies do only support work and low profile work.

That’s an underestimate statement. Infosys itself has its own banking product in India and it has leading banks as customers.

At the outset, Infinity is far better in terms of functionality when compared to US online bank accounts. Of course Infinity is having problem in serving its online customers due to its larger customer base.

In general, Indian industry is tuned more towards service oriented businesses. (Probably that could be because of Indian slavery nature (or) less risk model & good ROI)

In general, “The ability to think out of box” is the key thing which is missing in Indian school(s) and college(s) education.

 
On 8:20 PM , Siva said...

Barani & Arasan,
Two guys from the services industry and almost opposite opinions. I will let you guys do the talking and take your word for it :-)

 
On 10:33 AM , Siva said...

Barani,
I just wanted to add this. You have underlined the importance of education as a whole. First, it will help as a proof that you know the stuff.

I was pointing out a different view. You will enjoy what you do and struggle less to reach that position. (whether it is coding or managing). But both of us are on the same page.

Arasan,
Don't take that line out of the context, buddy. I know some Indian companies do some important work for some clients. But all I said was that doesn't come easily. Check that team which got the important module. It will have some very good people who know their stuff.

But as most of the company does support/maintennance people over simplify and say anyone can do coding. I just don't agree there.

 
On 6:35 PM , Baranidharan said...

Siva I should have added some more information regarding that. Yes you are correct, degree is not only an authentication but also teaches you what a starter need to know. It teaches you how to swim before you do scuba diving or pearl collecting. If one plans to learn after jumping in to ocean that will be mere stupidity.

Also, I don't want to comment that all the application developed by Indian IT companies are bad. I have had created that impression I am sorry about that. If you analyse the success of a projects, there will be always a SME who backed up the project. But in current scenario most of IT industries does not provide a clear path for a person who wants to grow in technical domain. Path to management is mostly well defined in these companies. It results in failure of making Tech or the domain expert.

But IT industries are realising the importance of it and started focussing on these areas. That is good sign. Whenever a guy comes to me and says I have worked in Java (or any other technology) for past one year and I have nothing to learn in that. I always give him a ugly look as response.

Another thing I can think of is what Arasan said about the school education. The way we are taught is 1 + 1 = 2. We have to just remember that. Our school education lacks the system to bring out the creativity of a child. We do what we are taught to do. British introduced these type of education because that is what they expected out of us. But we need to revisit the curriculum, so that we allow our children to think & act rather than follow the command. Most of us reflects the same characteristics at work place, we do what a client says even it is wrong.