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?