Presentation Night Speech 2002

By Jonathan Searcy, SVP of R&D (Systems), E-Genting Sdn Bhd

Ladies and Gentlemen,

The raw statistics from the programming competition are these. We had around 270 inquiries. Of those, 171 said they would turn up for the competition. 121 contestants actually showed up on the day. Around 70 were left at the end of the day. 7 achieved a level of merit or better. By that we mean that they demonstrated that they could write in their chosen language. Only 3 contestants returned credible responses to any question. A credible response had to either solve the problem or be likely to solve the problem with a little additional effort. All three answered the easiest question. Of the three, one returned a credible response to the second easiest question as well. No contestant successfully answered either of the two more difficult questions.

But these statistics do not tell the full story. 121 contestants, after being forewarned, had the courage to turn up to compete in a challenge to solve difficult, real-world problems. Once in the competition room, the contestants laboriously searched their textbooks in an effort to find solutions to the problems. This afternoon I had the pleasure of lecturing to around 100 interested people on solving the competition problems. It is not for want of either effort or interest that the competition problems proved intractable.

Yet from the point of view of a user of information technology, the competition problems are ordinary. The Old Tape problem was a typical exercise in data extraction. The Lollypop network performance problem was a real protocol selection question, with the protocols simplified to make modelling easier. The functions that had to be programmed in the Data Projection and Sorting problem were trivial in comparison to those of the reporting programs used to administer the Genting World Card system. The Traffic Lights problem involved none of the complexity of real-world traffic lights, such as pedestrian crossings with flashing lights or sequences that depend on the time of the day.

In practice, employed computer programmers are presented almost daily with problems significantly more difficult than those in the competition. Indeed the on-going expansion of the Genting Group depends on solutions being found to programming problems that make the competition problems look like child's play.

So how do we develop the advanced skills needed to solve these difficult problems? Well, to start with one must be curious. If you are not interested in how things work, but would rather just sit back and have them work, it might be a good idea to find an alternative line of business. Good programmers have an insatiable need to analyse and understand.

By far the best way to get to understand a subject is to buy a textbook, start reading at page one and each time you get to some questions or exercises, answer them either in your mind or on paper. Continue this process until you get the last page in the book. I'll go as far as to suggest that if you use this technique in university, there's a good chance you'll wind up knowing more than your lecturer.

It is important to not restrict your reading to just the language or infrastructure that you are currently using. The teaching of computer science usually disregards the context of the subject. The natural progression from number theory, to programmable machine, assembler and then mid-level and high-level languages has been lost in a muddle of ideological gobbledegook.

To make effective use of high-level tools, one needs a basic understanding of the nature of machine operations and the internal workings of the modules in the language libraries. Without an understanding of these subjects, you will tend to use high-level packages inefficiently and inappropriately. Animated displays will look like modern dance and manufacturers will profit from unnecessary memory sales.

But textbooks have limitations. While preparing for this afternoon's lecture, I converted the answer to the Projection and Sorting problem from C to Java. In a reflex action, I went straight to the on-line manuals and extracted the information I needed to make use of the sort function in the Java library. It was easy to do, but only a few of the programs written in the competition made effective use of the polymorphic features that facilitated multi-key sorts. On a hunch I checked the textbooks. Deitel and Deitel did not describe the sort function in sufficient detail for it to be used to solve the competition problem. The word 'sort' was not even in the index of David Flanagan's Java in a Nutshell.

If the textbooks only contain some of the answers, how do we learn the rest? The answer is that we must study the work of other programmers and discuss programming and problem solving techniques with each other. This afternoon's Public Lecture was an initiative by E-Genting to create interest in the relevant subjects. We intend to host more public lectures and perhaps some workshops here at Genting Highlands. We also hope that the universities and institutes of technology will accept our offer to give open lectures on-campus.

But a good theoretical understanding of computer languages and programming techniques is not, by itself, enough. In my hometown of Perth, I like to fly small aeroplanes. I take them up to 5,000 feet and turn them upside down, and then right-way up and then upside down again, sometimes in rapid succession. I can assure you that if you're in a spin and don't know, or are too frightened to execute, the control movements to make a recovery, a full theoretical understanding of aerodynamics is about as much use as you're teddy bear.

So it is with computer programming, though the consequences of failure may not be as severe. Only with practice does one develop the skill to quickly select from a plethora of design alternatives, one that leads to a program that meets its design criteria with low source entropy and high maintainability. If you struggled with the problems in the competition, take the clues in the lecture notes and have a go at solving the problems at home. Try programming them in Java instead of C. We are planning another competition to be held towards the end of this year. We would like to see all those who were unsuccessful last year, try again. Irrespective of whether you win the competition or not, you will improve your skills, enhance your worth and increase your chances for a salary increment or promotion.

While we're on the subject of promotion, I'd like to dispose of the management myth. Some people see programming as a stepping-stone to a better paying job as a manager or consultant. The belief that managers get paid more than programmers is a triumph of rumour over reality. Last weekend I was discussing salaries with our CEO. He suggested we could pay more than twice a manager's salary, for a programmer who could reprogram an embedded application of intermediate complexity. Programmers get rich and managers get jealous. That's the truth. If the title on your business card is 'computer programmer' that's something to be proud of. All the rest would be if they could be but they can't be so they're not.

In the eight years I have been directly responsible for Genting's Research and Development department, never once have we been in a position where we could not accept an application for employment from a competent programmer. We have, however, discovered that many would-be programmers over-sell themselves and once employed, fail to meet expectations. Consequently, we have introduced our own assessment procedures. If you believe that you have developed your skills to the point where you can solve problems like those in the competition, there is nothing stopping you seeking employment with E-Genting at any time. The question is: do you have the skills?

To move forward we must take it upon ourselves, whether we are students, teachers or practitioners, to improve our own knowledge and skills, and to improve the knowledge and skills of those around us. We should not shirk the difficult problems, but rather develop our skills to the point where we can solve them.

The programming competition has been E-Genting's contribution towards this endeavour. We hope that the tertiary institutions will accept our willingness to become involved in the formulation of curricula and the motivation of students with public lectures and workshops. I am confident, that with the knowledge gained from last year's competition, many more contestants will return credible responses later this year.

I look forward to seeing you there.

Like this page?


Registration for the competition is now closed.

If you have any questions, please email