Friday, June 26, 2009

Programming vs Coding

Recently I saw many people rejoicing over Pakistan being declared as one of a great outsourcing destination, and to many within the Pakistani software industry this is a big achievement but I am skeptical about it. Is it really a sign of progress for us or has hidden repercussions??
In my opinion being a great outsourcing destination is not much, the question that we must ask ourselves is where do we stand in the Computer Science research community? How many publications do we produce every year? The answer is of course highly unsatisfactory.
It makes me sad to say that our universities are producing coders but not programmers: many would argue with me saying they are the same but there is a world of difference between the two. The question was raised by my Professor Kyu-Young Whang in his Database class few months back and I really liked his answer:

“Programming is about design and attention to detail while coding is about knowing few tips and following them without much thinking.”

Coding is just mindlessly typing out computer commands, whereas programming is actively thinking about abstract solutions to a problem and then expressing it in code. To be a coder, you need to know the syntax, but to program, you need to understand various algorithms and data structures. Mathematics forms the core of good and efficient programming skills whereas for a coder mathematics is not of much importance. Students who are adept at math tend to perform better in computer science. They are better able to understand relationships in data, scientific computations, and algorithm design. This allows them to be better at solving problems and generating good designs from requirements and hence be a programmer. On the other side of the spectrum are the coders who just know about the language features and are aware of the features of the platform they are working for.
The harsh reality is that many of the graduates in the computer science field in Pakistan are just coders but not programmers. Many of them do not do justice to the computer science field since they either switch to MBA or they go for software development (database development, web portals, community websites etc) jobs doing monotonous work all along.
In the Computer Science community in Pakistan there is a lack of proper research being conducted and in my opinion one big reason for this is that Computer Science research needs programmers and not coders. The scenario in Pakistan is that many computer science majors, those desiring to eventually become computer scientists, programmers, systems analysts, computer hardware designers, networking specialists, or software engineers, do not have the background knowledge needed to succeed in their studies. Nor do many of them desire to get this necessary math background if there is any possible way to avoid it.
The programmers are the ones that invent thereby producing new researches in Computer Science and coming up with new, innovative ideas. Whereas coders do labor work just playing with some new technologies and enjoying the outside glimmers. After all Google was just another research with two brilliant programmers Sergey Brin and Larry Page coming up with a new algorithm of ranking. Why isn’t such research being produced in our country: answer is simple, I guess!!!

12 comments:

  1. really mind blowing difference i never knew this ....

    ReplyDelete
  2. Well I hope you know it now dear.

    ReplyDelete
  3. >> Programming is about design and attention to detail while coding is about knowing few tips and following them without much thinking.

    Programmer's and coder's relationship is built upon trust and understanding -- coders don't understand programmers' abstruse notation/work while programmers don't trust coders. :P

    Even people in engineering department think of Maths/CS as nothing but collection of prefabricated algorithms and foregone conclusions. Moreover they don't give attention to presumably important details (i.e. ODE which they're setting up has unique solution, the approximating series converge or not, etc.) But it's OK because their (superficial) understanding is sufficient for most of the work.

    I wonder if you're expecting too much expertise from CS graduates?

    Regards,
    Alok Bakshi

    ReplyDelete
  4. @Alok

    Long time, no see.

    Well may be this is expecting too much of CS graduates but that's what science is about. Living upto the expectations and as you yourself said it's OK for engineers not good and when one wishes to excel in Computer Science then he has to do extra.

    Last but not the least CS is more of a science, not an engineering discipline and when one takes it as such that's where the coder is born :)

    I hope you get my point.

    ReplyDelete
  5. This comment has been removed by a blog administrator.

    ReplyDelete
  6. I agree with Arjumand and I also want to comment that Its the fault of our mentors that have demoralize our nation's children. It has been feed in our minds that inventors of new technologies are from the sky and we are not capable for such work.
    Well this article can boost our confidence and a blink of hope that we are also thinking.

    ReplyDelete
  7. Depends. Actually it is job of Team lead aka Project Manager in Pakistan.

    In my short experience of Kalsoft Pvt. Limited they used to just do that - plan well in advance before writing a single line of code and in the end what they used to have is a quality product.

    Then you have coders aka workers at the lower end of the pyramid who actually do code (yes code).

    -Shakil
    Someone who has gone through the pains of bad architecture.

    ReplyDelete
  8. Well in my honest opinion software houses in Pakistan do not represent "Computer Science", they are actually making money without caring about any of the science behind.What they have as a project manager is one who understands the nature of business and has nothing to do with science.

    ReplyDelete
  9. Nice but better name it Science vs Technology!

    Because Coding is actually generating source code and it does not mean that you write code without thinking or designing or planning and it's foolish to assume that industry build software without planning :) and Project Manager is responsible for initiating, planning, executing, monitoring and closing of the project in which he cares for time, cost, schedule and quality.

    Programming and Coding are most of the times use interchangeably however programming also refers to testing and debugging of code :)

    However I agree to your original concepts that we don't have computer science here much and that is not industry fault much but more of Universities :)

    ReplyDelete
  10. Well I think the title is completely OK as the question was initiated by my Professor and that I have mentioned in the beginning of this article. In fact that discussion in Professor's class prompted me to write this article and it's what comes from the core of the CS Research Community which you fail to accept and yes that is the difference between Programming and Coding.

    May be you have not grasped what planning means here; planning here does not refer to the planning you study in Software Engineering. Rather it is planning as in traditional Computer Science coming from realms of Algorithm Design and Analysis, Data Structures, Programming Languages Theory and Theory of Computing: that is what planning means here and therein lies the difference between programming and coding.

    Read this article not as a software engineer but as a computer scientist and then you will get the essence of the title.

    ReplyDelete
  11. Thank you for bringing this to our knowledge.
    I agree with you.

    ReplyDelete
  12. Thank you for the info. It sounds pretty user friendly. I guess I’ll pick one up for fun. thank u

    ASC Coding

    ReplyDelete