I've Forgotton More Code Than You've Written
You might be think that programming was a young person's game, and in a way you'd be right. Take a walk round any large Developer Conference (say, last month's Symbian Expo), and you'll find the recently graduated, iPod toting, purple hair dyed. flush of youth trying to impress another new start up by quoting The Goon Show. But behind this army of coders, you have the Masters, the programmers that live in the rarefied atmosphere who can code 3-D graphics engines, in assembler, on a 9210, while travelling first class from Edinburgh to London.
But I'll bet that every single one of those coders, from the Anakin Skywalkers to the Mr Miyagis of the world, have a well thumbed copy of "Symbian OS C++ For Mobile Phones" next to their keyboard. Regarded by many as 'the bible' of Symbian coding, I took some time at the Symbian Expo to sit down with its author, Richard Harrison, and find out more about the prophet.
So Who Is Richard and Why Is He So Good?
Officially, Richard is a "Senior Technical Author" inside the Developer Marketing team at Symbian, and he helps instigate publications in the Symbian Press series, acting as a mentor, reviewer and editor for the various authors. "Although it does involve a great deal more writing that any of us expected," he points out. "I work mostly from home, and I come into the office about once a week, which keeps me up to speed with the current developments."
Apart from not having purple hair, it's clear that he's been in the coding game for a long time. Originally an employee of Psion, his work has been part of some of the most influential computing products of the last 20 years. "When I was interviewed by Psion for a programming job I made the mistake of admitting that I could write. In consequence, my first two years were spent writing user documentation for Psion’s suite of business applications, firstly for the Sinclair QL and then for its port to the PC."
While the QL was regarded as a factor in the decline of Sinclair, most people at the time agreed that the Psion supplied office software, consisting of a text editor, database program, calendar and spreadsheet charting program, were of an incredibly high quality. Given these apps are now regarded as cornerstones of any PDA, Psion (and now Symbian) have consistently reaped the benefits of this early move into the 'organising' business.
The fact that the Psion Organisers were so easy to program, bundled as they were with the OPL language, is considered one of many factors in Psion's early success. What does Richard think of the current efforts to revitalise OPL as an Open Source project for Symbian OS? "I'm all in favour of it. As someone who was involved in its early development, I've always had a liking for OPL and I'm delighted to see it being given a new lease of life. My first real programming work for Psion was on the OPL translator, which first appeared on the Psion Organiser II. It wasn’t that original and like much of my subsequent work owed a lot to the advice and mentoring that I received from Charles Davies and Colly Myers, but I was well pleased with the result."
"Following that, I co-authored the Organiser’s spreadsheet application, which was notable in that, in its preferred mode of use, it displayed a single spreadsheet cell! Despite that, it was surprisingly usable, and was one of the first spreadsheets to employ natural order calculation (where the order of calculation is determined by the dependencies in the cells’ formulae). I was particularly pleased with the algorithm I developed to achieve this. Perhaps the highlight of my career, at least in terms of personal satisfaction, was the word processor that was originally developed for the Psion Series 3 range. A lot of care went into the functional specification and I think we got the mix of functionality and ease of use just about right."
Richard then moved back into documentation and built up the team that produced the five-volume SIBO SDK. Admittedly, the 16-bit SIBO OS was much smaller and simpler than what developers have access to today, but Richard and his team arguably set a standard of documentation that hasn’t yet been reached by the SDKs for Symbian OS. However, even then, they were always much further behind than they wanted to be, and lived with a stream of comments. "OK, complaints!" corrects Richard, about the documentation’s inadequacies and omissions.
With coding so dominated by 'the bright young things,' does Richard still get the same thrill nowadays that he got when coding the word processor, or his implementation of Forth on the BBC B? "It's all about having a problem to solve," says Richard, as his eyes light up. "Over the years, I've come to the conclusion that, for me, the nature of the problem isn’t that important, provided there is sufficient interest in finding the solution. I’ve been lucky during my career, firstly with Psion and then with Symbian, to have been able to tackle a wide variety of problems (or should that be opportunities?). I was able do move on to something new every couple of years, so I’ve never had the opportunity to get stale or bored. I’m not sure if ‘thrill’ is the right word, but I still get the same sense of satisfaction when I succeed and of disappointment when I don’t do as well as I would like."
Richard In Print
Turning now to the "Symbian OS C++ For Mobile Phones" series of books, you're variously credited as the Author, the Editor, the Lead Author, and 'The Guy Who Cut and Pasted everyone else's work.' What exactly is your role in these books? Richard laughs. "All of the above. The first book was planned as an update and substantial rewrite of “Professional Symbian Programming” (by Martin Tasker et al). My initial contribution was the restructuring of the content and the identification of what updates were necessary. The amount of work to be done and the required schedule, meant that it could not be done by a single person, so we assembled a team of specialist authors and reviewers. Broadly speaking, each person undertook responsibility for the chapter that best matched his or her expertise." And yourself, you were going to be the mentor?
"Yes. At the time, I was expecting that my continuing role would be no more than to edit the text to maintain a consistency of style, but I also ended up writing the three or so chapters that nobody else wanted to do!" For those of you familiar with the text, that's Chapters 1, 4 and 7.
So what does book two offer that book one doesn't? "There were two main motives for publishing a second volume. The first was to provide an update for the new material in version 7.0s, such as the multimedia framework that replaced the older media server. In addition, we wanted to base a book on the Series 60 user interface, to complement the first volume’s use of UIQ. However, we haven’t ignored UIQ and, wherever possible, volume 2 takes care to explain the similarities and differences between the two user interfaces."
"As far as possible, we wanted the second book to be capable of being used by someone who has not purchased the first volume. Inevitably, that means there is an overlap between the content of the two books, but I hope we have managed to give a different viewpoint to the material that appears in both. The second book, for example, says rather more about what is happening beneath the surface of an application. We have used separate, and therefore simpler and more focused, examples rather than the single, but complex, running example that was used to illustrate the majority of the material in volume 1."
Pointing out that Volume 1 was, arguably, the Symbian Bible for internal and external C++ programmers, I wondered if that put any extra pressure on Richard when starting work on volume 2? "No. The second book is all new material and my first task was to specify the required content. The remainder of the project followed a remarkably similar pattern to that of the first book, even to the amount that I ended up writing myself."
Living With Symbian's C++ Dialect
Symbian's dialect of C++ isn't the easiest to get to grips with. Right from the first pages, the C++ books go straight into some complicated stuff. It's not really meant for those new to Symbian OS programming. Have you considered an 'entry level' book? "Well, I wouldn’t entirely agree with what you say, since Volume 1, at least, spends some time in introducing the basic principles. However, I agree that there certainly is a need for a text more specifically aimed at beginners. We currently have one introductory book, and possibly a second, in preparation and, of course, there is Jo Stitchbury’s excellent “Symbian OS Explained” which does much to dispel the mysteries surrounding Symbian OS idioms and its usage of C++."
"I learned C++ via Symbian OS, rather than the other way round. I get the impression that it’s not as difficult as it might appear. The vast majority of the differences between standard C++ and Symbian OS C++ are there for a reason and, once you understand the reasoning behind them, it’s not that hard to make the transition." And how easy does Richard think it is, going from knowing nothing to get to a competent level of Symbian OS C++? "If you’re not familiar with C or C++, it takes around six months to achieve a reasonable level of competence. It probably takes about the same time to learn enough about Symbian OS to program reasonably effectively. The whole process needn’t take a year because you can overlap the two learning processes."
"In my opinion, the key to learning Symbian OS is to start by getting a firm grasp of the basic principles. Symbian OS is designed specifically for use in an environment with limited performance and resources. You need to understand the idioms, such as two-phase construction and the cleanup stack, that make programs robust against failure. Once you have developed the habit of checking every line of code you write for the potential consequences of failure, the rest follows quite naturally.
Any hints or golden rules for those starting out? "Symbian OS is a large and complex system, and it takes time to gain expertise in a range of areas. Start slowly, and don’t move on to another topic before you have a good grasp of the current one." So much the same as learning any new skill then. Richard agrees. "The first port of call has to be the developer area, DevNet, on the Symbian web site (www.symbian.com/developer). From there you have access to support forums, white papers on a variety of topics, developer tools and much more. In addition, there are links to a range of Developer Community websites and Open Source projects, and to development partners’ websites, where you can access additional documentation and download product- and platform-specific SDKs."
Where Now For Symbian?
How does Richard see the future, and you see the future? And how involved will he going to be?" Although it has taken far longer than anyone thought, usage of Symbian OS seems to be gathering momentum, with both phone sales and the number of new products in development continuously increasing. I see that continuing for the foreseeable future."
"For my part, I expect to continue to promote third party development, via books and other forms of documentation. I expect to be writing a bit less than over the last two or three years, and doing more reviewing and editing. I imagine that will keep me busy over the next couple of years after that, who knows?
Finally, if you could change one thing about Symbian OS, what would it be? "From my point of view, it would have to be more and better developer-oriented documentation. From a purely factual basis, there now seems to be a reasonably good coverage, but it can still be quite hard to find the specific information you need. Also, I’d like to see much more advice on what to use, to perform a particular task, and how to use it."
And with that, thank you, Richard.
Links of Interest
Symbian Press for Volume One and Volume Two of "Symbian OS C++ For Mobile Phones."
The Symbian DevNet homepage.