Monday, October 8, 2007

Lesson 28: And Dijkstra says...

"The average customer of the computing industry has been served so poorly that he expects his system to crash all the time, and we witness a massive worldwide distribution of bug-ridden software for which we should be deeply ashamed." -- Prof. E.W. Dijkstra, from The End of Computing Science

Hello Readers,
Again, profusely apologise for irregular (read non-daily) updates, as stuff at work demands more attention and of course, laptops being laptops, mine has decided to behave more like a temperamental boyfriend (who needs to be dumped). And yes, talking laptops… this post is contributed by our new contributor Useless Banter. She, in her own words, is a computer scientist and NOT a software engineer. (Smiles)
So here we go, something different, something technical and something that she reworked twice. The mention of algorithms gives me heebeegeebees. Also, thanks to Useless Banter for shifting the links-to-follow at the end of the article instead of punctuating the text with links. Do read those, quite interesting… even to someone who has been way scared of vectors and algorithms since class 11! Happy reading. Also, for those contributing articles, please remember: Short sentences make for far better and easier reading than rambling sentences that run into four lines. Also, Useless Banter’s copy was the most spelling-error free. Do run a spell-check on your files before sending me; I will still check for spelling errors, but a little help from you greatly reduces boring editing. I do it for a living, you know, so would LOVE to not do it here.
Here is what Useless Banter has to say:

A recent article on The Indian Shitizen about the Great Indian Software Engineer who is really the "Bechara Software Engineer" got me into some serious soul searching. That, combined with influences of some of the recent lectures of the professor teaching my Advanced Distributed Computing class, made me think: Why not put my "higher" MS degree-education to some use, and look at this problem – like a good scientist would – from a research perspective.

So although I agree to most of the things said about the people encompassed under the umbrella of "software engineers" in the article, myself included, I would like to conduct myself in the spirit of a true Computer Scientist. Basically, it means I would like to tie this discussion to a more interesting and perhaps more productive analysis by turning attention to the question of: "What real value can software engineers bring towards ensuring mature thought processes in problem solving?" (Think "algorithms"!!!....)

Basically, what role can Software Engineers (ugh!! I hate that term, so shall stick to the personally-preferred ‘Computer Scientist’) play, in inventing novel approaches that can solve fundamental problems in any scenario? Say, even one such as making an underdeveloped nation wrought with problems, become an efficient developed nation?

As its most preliminary steps this process actually involves a lot of reading between the lines, quality research and a special genre of laziness. Yes, a laziness that can effectively cause sharp research minds to come up with elegant solutions and novel ideas such as the shortest path algorithm [2][3]. For this, even if we have to change our education system, which is currently engaged in the task of producing ‘clones’, then so be it. We shall have to be lazy enough to reject the ‘standard’ paradigms given to us, and create an education system that teaches people to be truly lazy, i.e. by "inventing".

Will sign off with this quote, as food for thought, from a paper by Dijkstra [4] (in which he presents his views on the flaws in Computer Science education. Nevertheless, it has a lesson about education in general, so it is a must-read):

"The usual way in which we plan today, for tomorrow, is in yesterday's vocabulary". -- Prof. E.W. Dijkstra

We need just a few hundred people in the nation from our vast pool of software engineers that think like Dijkstra[1]. Are the computer scientists listening?
Useless Banter

PS1: My contribution as a bechara software engineer towards this end: Pledging that I will not be bechara any more. I will (at least try to) get a PhD degree that advances a computing concept, and start a personal venture that provides a tangible solution while providing employment to others, or even a revolution if you will, and not just be happy to take up an offshoring job with a multinational. What's yours?
PS2: Next lesson - Distributed Computing (read "Effective Management of Distributed Resources")

1. Edsger W. Dijkstra
2. Shortest path problem
3. Dijkstra's algorithm
4. Dijkstra's views on Computer Science education and his rant on the irony presented by "radical novelty" (hand-written) / (transcribed)
Appendix 1 - What computing science is about
Appendix 2 - Dijkstra's "EWD" series

1 comment:

eXPerience called L!FE said...

There is a very interesting article (Business and Caste in India) in the Economist -Oct 6 - about reservations in the IT industry in India. Importantly it talks about the "clones" in numbers. The fact that most of the Software Engineers are unemployable is a pretty scarry sign for our country. Quote from the article "India is failing to equip its young, of whatever caste or religion, with the skills that its companies need". We definitely need more Scientists like Useless banter then to have clones and more clones of Engineers. Is the Education department listening??