Donald Knuth has written a decisive and voluminous book on The Art of Programming (4 Volumes and the remainder still in preparation). Everybody, including those desiring to become computer scientists...
Donald Knuth has written a decisive and voluminous book on The Art of Programming (4 Volumes and the remainder still in preparation). Everybody, including those desiring to become computer scientists or programmers must and should read his blog on why he looks at Computer Programming as an Art. Here he makes very pertinent and interesting observations, “…. Science is knowledge which we understand so well that we can teach it to a computer; and if we don’t fully understand something, it is an art to deal with it.”
Rightly so! In today’s fast -paced world, we often see the young people cutting corners with their work – “the copy-cut-paste generation” is what I call them. And of course Wikipedia and all the helpful codes that are strewn on the internet helps them get their work done! But what about taking pride in the “quality of work” is what I often questioned them. And not just quality, but also the originality. When they get stuck, instead of re-looking at the work in a step by step manner, they immediately google for the problem!
Way back in 1986, when I was completing my grad, computers had just entered into the portals of my College. Soon, I would be moving into Archaeology for my post-grad, and, so as usual my curiosity got the better of me. I decided to check out what the fuss was all about this “computer business” and I enrolled, and had as a class partner, a student of mathematics (and I thought that was good as I had associated computers with mathematics). We were taught on a Mac and it was programming in Basics and Graphics. It really strained my brains! I loved the graphics part of it all as it was fun “getting” the computer to do your bidding ( it involved keying in various stuff, of course). And I realized it was too much of work and mathematics. Little did I know what awaited me in Archaeology!
Knuth surmises that, “A scientific approach is generally characterized by the words logical, systematic, impersonal, calm, rational, while an artistic approach is characterized by the words aesthetic, creative, humanitarian, anxious, irrational. It seems to me that both of these apparently contradictory approaches have great value with respect to computer programming.” How true, and the same could apply to any discipline be it “Science or Arts or Humanities”!
Knuth also states that when one does write a computer program, one should feel not only its beauty, but also its usefulness in doing its greatest good to somebody who will use it. And beauty can be best exhibited, as he writes, “It’s a real art to compose meaningful error messages or to design flexible input formats which are not error-prone.”
Hence, not just for computer programmers, but for anyone interested in learning about what makes machines tick, or wanting to compute programs, 3 critical lessons are the pre-requisites to becoming that ace programmer
1. Curiosity is essential to any stream of work. It helps us gather more information, widens our knowledge, and thereby deal with the problem in a much more creative way, bringing the science of the art alive.
2. Methodology and Logic – is critical when problem solving. And also, when handed over a task or project to undertake. Without putting down things in a methodological way, arranging the facts, one should not just “barge” into finding or providing solutions. This is what leads to bugs in the program due to haste (of course this is what helps make IT service industries increase their profits – add bugs, so only they can clean and add new bugs)
3. Utility with Beauty – No matter how small a task that has been assigned to you or how boring or repetitive it is. Perform and create each task with the same joy you would, as you do when listening repeatedly to your favorite tune or watching reruns of your favorite movie. This is the only way to create beauty. Remember, what you create will be utilized by others. Innovation is not just “something new”, but it has been created because there was a need for it. Hence, behind every line of code you write, that helps aid in the innovation of your product, keep the beauty of simplicity and its utility in mind. The more complex your code, the more the debugging and more the errors.