26 July, 2011

Programmer or Computer Science Engineer?

There are a lot of misconceptions amongst engineers of computer science (or computer tech or information technology or what ever aliases you give). Or should I say Indian CS engineers? Many of them think that Computer Science and Engineering is all about programming and creating software. In my opinion it is NOT the case.

Programming is just a tool. Anyone can create programs, it is so easy. Isn't it? Learn a programming language like C or Java, then start coding. No engineering is applied at all. Programming is a tool which is used by different professionals to solve THEIR problems. Although a computer science engineer must know how to program, otherwise it will be the case like, a farmer who does not know what is a tractor. Here is a list of statements about why one should not consider "programming" the ultimate aim of doing computer science engineering.

  • CS engineers must not only know how to program, but know how a program runs inside a computer. What is going inside when you run your program, that is, the internal working of a processor, random access memory, etc.
  • Software Engineering, heard about it? Apply it even on a smallest program you write. Don't directly jump to coding, it is a bad engineering practice. We learn this subject but always fail to apply it.
  • You should not only be able to fire SQL or database queries but know how the query gets executed. What is there inside a database. How the databases resolve issues like atomicity, isolation, consistency, etc?
  • You should be able to know how an operating system works, the process scheduling, deadlock handling, and all about OSes. Not just how to create programs using the API (Application Programming Interface) provided by the OS.
  • High level languages are damn easy to learn. Just learn the syntax. What about the assembly language? You should have at least the experience of slightly complex programming on a microprocessor kit.
  • Not only you should know how to write internet applications, but it is always better to know how the internet works. Know how the packets are switched from one router to another, or how the TCP/IP protocol works internally.
  • If you are a .NET programmer, then know all about .net and the internal working of the Common Language Runtime (CLR). Wiring the library provided classes can be done by a child also.
The aim of this long post is not to say that programming is a child's play. But if you say you are an engineer and know only programming, then there is a big problem, because even a non engineering student can program. Being an engineer you at least know how things work inside. Apply that engineering mind everywhere. Do you know how and engineering mind thinks? An engineers mind always thinks of how to plan, design, and then execute. To think like that you will need to clear your basics by getting into the core.

Even I am not a perfect engineer according to the above text, but a better engineer for sure.

3 comments:

ayusha patnaik said...

WOW!!! THIS WAS WONDERFUL AND INSPIRING AS WELL...BT THE PROBLEM LIES IN THE FACT THAT WE R NOT TAUGHT THESE IN THE CLASS ROOMS...WE R GIVEN CODES OR TLD US TO MAKE CODES BY OURSELVES AND THEN EXECUTE AND INADEQUATE KNOWLEDGE REGARDING THE TECHNIQS KPS US BEHIND...CAN U KINDLY SUGGEST SOME GOOD BOOKS AFTR READING WHICH THIS NEW WAY OF LEARNING CAN BE ACCOMPLISHED??? CZ BY NO MEANS THESE WD B TAUGHT IN THE CLASSROOMS!!

Gaurav said...

@ayusha:
Thanks for the compliment!

I know the situation in colleges is worse. My suggestion would be to read books, not question banks. It could be any book regarding your subject, because books provide detailed materials.

Thereafter visit several tech websited, CE is one of the good sites I have seen.

Regarding practical knowledge, you will have to keep creating programs, problem solutions on your home computers. Write anything, be it silly, but do write programs.

I hope that would help :)

anil said...

Sir
i am good at concepts bt i cant turn it in to code. I dnt knw hw to create logic sir. Can u help me